Changeset 175151 in webkit for trunk/Source/JavaScriptCore/API


Ignore:
Timestamp:
Oct 23, 2014, 4:43:14 PM (11 years ago)
Author:
Joseph Pecoraro
Message:

Web Inspector: Provide a way to have alternate inspector agents
https://bugs.webkit.org/show_bug.cgi?id=137901

Reviewed by Brian Burg.

Source/JavaScriptCore:

Provide a way to use alternate inspector agents debugging a JSContext.
Expose a very slim private API that a client could use to know when
an inspector has connected/disconnected, and a way to register its
augmentative agents.

  • Configurations/FeatureDefines.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:

New feature guard. New files.

  • API/JSContextRef.cpp:

(JSGlobalContextGetAugmentableInspectorController):

  • API/JSContextRefInspectorSupport.h: Added.

Access to the private interface from a JSContext.

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::connectFrontend):
(Inspector::JSGlobalObjectInspectorController::disconnectFrontend):

  • inspector/JSGlobalObjectInspectorController.h:
  • inspector/augmentable/AugmentableInspectorController.h: Added.

(Inspector::AugmentableInspectorController::~AugmentableInspectorController):
(Inspector::AugmentableInspectorController::connected):

  • inspector/augmentable/AugmentableInspectorControllerClient.h: Added.

(Inspector::AugmentableInspectorControllerClient::~AugmentableInspectorControllerClient):

  • inspector/augmentable/AlternateDispatchableAgent.h: Added.

(Inspector::AlternateDispatchableAgent::AlternateDispatchableAgent):
Provide the private APIs a client could use to add alternate agents using alternate backend dispatchers.

  • inspector/scripts/codegen/init.py:
  • inspector/scripts/generate-inspector-protocol-bindings.py:

(generate_from_specification):
New includes, and use the new generator.

  • inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py: Added.

(AlternateBackendDispatcherHeaderGenerator):
(AlternateBackendDispatcherHeaderGenerator.init):
(AlternateBackendDispatcherHeaderGenerator.output_filename):
(AlternateBackendDispatcherHeaderGenerator.generate_output):
(AlternateBackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
(AlternateBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
Generate the abstract AlternateInspectorBackendDispatcher interfaces.

  • inspector/scripts/codegen/generate_backend_dispatcher_header.py:

(BackendDispatcherHeaderGenerator.generate_output):
(BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains):
(BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains.AlternateInspector):
Forward declare alternate dispatchers, and allow setting an alternate dispatcher on a domain dispatcher.

  • inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:

(BackendDispatcherImplementationGenerator.generate_output):
(BackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
Check for and dispatch on an AlternateInspectorBackendDispatcher if there is one for this domain.

  • inspector/scripts/codegen/generator_templates.py:

(AlternateInspectorBackendDispatcher):
(AlternateInspector):
Template boilerplate for prelude and postlude.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:

Rebaseline tests.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FeatureDefines.h:
Location:
trunk/Source/JavaScriptCore/API
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/JSContextRef.cpp

    r173683 r175151  
    4646#endif
    4747
     48#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
     49#include "JSContextRefInspectorSupport.h"
     50#endif
     51
    4852#if OS(DARWIN)
    4953#include <mach-o/dyld.h>
     
    411415#endif
    412416}
    413 #endif
     417#endif // USE(CF)
     418
     419#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
     420Inspector::AugmentableInspectorController* JSGlobalContextGetAugmentableInspectorController(JSGlobalContextRef ctx)
     421{
     422    if (!ctx) {
     423        ASSERT_NOT_REACHED();
     424        return nullptr;
     425    }
     426
     427    ExecState* exec = toJS(ctx);
     428    JSLockHolder lock(exec);
     429
     430    return &exec->vmEntryGlobalObject()->inspectorController();
     431}
     432#endif
Note: See TracChangeset for help on using the changeset viewer.