Changeset 63952 in webkit


Ignore:
Timestamp:
Jul 22, 2010 11:39:07 PM (14 years ago)
Author:
loislo@chromium.org
Message:

2010-07-22 Ilya Tikhonovsky <loislo@chromium.org>

Reviewed by Yury Semikhatsky.

WebInspector: CodeGeneratorInspector was extended and now it can
generate InspectorBackedDispatcher's code. This dispatcher will
validate and dispatch incoming inspector commands only by native
code without using javaScript. That is necessary step for
RemoteDebugging support.
https://bugs.webkit.org/show_bug.cgi?id=42588

  • GNUmakefile.am:
  • WebCore.gyp/WebCore.gyp:
  • WebCore.gypi:
  • WebCore.pri:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • inspector/CodeGeneratorInspector.pm:
  • inspector/InspectorController.cpp: (WebCore::InspectorController::InspectorController):
  • inspector/InspectorController.h: (WebCore::InspectorController::inspectorBackendDispatcher):
  • inspector/front-end/ElementsPanel.js: (WebInspector.ElementsPanel.prototype.setDocument):

2010-07-22 Ilya Tikhonovsky <loislo@chromium.org>

Reviewed by Yury Semikhatsky.

WebInspector: CodeGeneratorInspector was extended and now it can
generate InspectorBackedDispatcher's code. This dispatcher will
validate and dispatch incoming inspector commands only by native
code without using javaScript. That is necessary step for
RemoteDebugging support.
https://bugs.webkit.org/show_bug.cgi?id=42588

  • src/ToolsAgent.h:
  • src/WebDevToolsAgentImpl.cpp: (WebKit::WebDevToolsAgentImpl::dispatchOnInspectorController):
  • src/WebDevToolsAgentImpl.h:
  • src/js/InspectorControllerImpl.js: (devtools.InspectorBackendImpl.prototype.callInspectorController_):
Location:
trunk
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r63950 r63952  
     12010-07-22  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        WebInspector: CodeGeneratorInspector was extended and now it can
     6        generate InspectorBackedDispatcher's code. This dispatcher will
     7        validate and dispatch incoming inspector commands only by native
     8        code without using javaScript. That is necessary step for
     9        RemoteDebugging support.
     10        https://bugs.webkit.org/show_bug.cgi?id=42588
     11
     12        * GNUmakefile.am:
     13        * WebCore.gyp/WebCore.gyp:
     14        * WebCore.gypi:
     15        * WebCore.pri:
     16        * WebCore.vcproj/WebCore.vcproj:
     17        * WebCore.xcodeproj/project.pbxproj:
     18        * inspector/CodeGeneratorInspector.pm:
     19        * inspector/InspectorController.cpp:
     20        (WebCore::InspectorController::InspectorController):
     21        * inspector/InspectorController.h:
     22        (WebCore::InspectorController::inspectorBackendDispatcher):
     23        * inspector/front-end/ElementsPanel.js:
     24        (WebInspector.ElementsPanel.prototype.setDocument):
     25
    1262010-07-22  Shinichiro Hamaji  <hamaji@chromium.org>
    227
  • trunk/WebCore/GNUmakefile.am

    r63927 r63952  
    100100        DerivedSources/WebCore/HTMLNames.cpp \
    101101        DerivedSources/WebCore/HTMLNames.h \
     102        DerivedSources/WebCore/InspectorBackendDispatcher.cpp \
     103        DerivedSources/WebCore/InspectorBackendDispatcher.h \
    102104        DerivedSources/WebCore/JSAbstractWorker.cpp \
    103105        DerivedSources/WebCore/JSAbstractWorker.h \
     
    43974399        $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlattrs.in --outputDir "$(GENSOURCES_WEBCORE)"
    43984400
    4399 # Remote Inspector frontend
    4400 DerivedSources/WebCore/RemoteInspectorFrontend.cpp DerivedSources/WebCore/RemoteInspectorFrontend.h: $(WebCore)/inspector/Inspector.idl $(SCRIPTS_BINDINGS) $(WebCore)/inspector/CodeGeneratorInspector.pm
     4401# RemoteInspectorFrontend and InspectorBackendDispatcher
     4402DerivedSources/WebCore/RemoteInspectorFrontend.cpp DerivedSources/WebCore/RemoteInspectorFrontend.h DerivedSources/WebCore/InspectorBackendDispatcher.cpp DerivedSources/WebCore/InspectorBackendDispatcher.h: $(WebCore)/inspector/Inspector.idl $(SCRIPTS_BINDINGS) $(WebCore)/inspector/CodeGeneratorInspector.pm
    44014403        $(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts -I$(WebCore)/inspector $(WebCore)/bindings/scripts/generate-bindings.pl $(IDL_PATH:%=--include "%") --outputDir "$(GENSOURCES_WEBCORE)" --defines "LANGUAGE_JAVASCRIPT=1 $(FEATURE_DEFINES)" --generator Inspector $<
    44024404
  • trunk/WebCore/WebCore.gyp/WebCore.gyp

    r63803 r63952  
    477477        {
    478478          'action_name': 'RemoteInspectorFrontend',
     479          # The second input item will be used as item name in vcproj.
     480          # It is not possible to put Inspector.idl there because
     481          # all idl files are marking as excluded by gyp generator.
    479482          'inputs': [
    480483            '../bindings/scripts/generate-bindings.pl',
     484            '../inspector/CodeGeneratorInspector.pm',
    481485            '../bindings/scripts/CodeGenerator.pm',
    482486            '../bindings/scripts/IDLParser.pm',
    483487            '../bindings/scripts/IDLStructure.pm',
    484             '../inspector/CodeGeneratorInspector.pm',
    485488            '../inspector/Inspector.idl',
    486489          ],
    487490          'outputs': [
     491            '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings/InspectorBackendDispatcher.cpp',
     492            '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/InspectorBackendDispatcher.h',
    488493            '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings/RemoteInspectorFrontend.cpp',
    489494            '<(SHARED_INTERMEDIATE_DIR)/webkit/bindings/RemoteInspectorFrontend.h',
     
    506511            '<@(generator_include_dirs)'
    507512          ],
    508           'message': 'Generating RemoteInspectorFrontend class from Inspector.idl',
     513          'message': 'Generating Inspector interface classes from Inspector.idl',
    509514        },
    510515        {
     
    715720        # Additional .cpp files from the webcore_inspector_sources list.
    716721        '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings/RemoteInspectorFrontend.cpp',
     722        '<(SHARED_INTERMEDIATE_DIR)/webcore/bindings/InspectorBackendDispatcher.cpp',
    717723      ],
    718724      'conditions': [
  • trunk/WebCore/WebCore.gypi

    r63927 r63952  
    278278            'xml/XPathResult.idl',
    279279            'xml/XSLTProcessor.idl',
    280         ],
    281         'webcore_inspector_idl_files': [
    282             'inspector/Inspector.idl',
    283280        ],
    284281        'webcore_svg_bindings_idl_files': [
  • trunk/WebCore/WebCore.pri

    r63902 r63952  
    817817
    818818# GENERATOR 2: inspector idl compiler
    819 inspectorIDL.output = $${WC_GENERATED_SOURCES_DIR}/Remote${QMAKE_FILE_BASE}Frontend.cpp
     819inspectorIDL.output = $${WC_GENERATED_SOURCES_DIR}/Remote${QMAKE_FILE_BASE}Frontend.cpp $${WC_GENERATED_SOURCES_DIR}/${QMAKE_FILE_BASE}BackendDispatcher.cpp
    820820inspectorIDL.input = INSPECTOR_INTERFACES
    821821inspectorIDL.wkScript = $$PWD/bindings/scripts/generate-bindings.pl
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r63927 r63952  
    2074220742                        </File>
    2074320743                        <File
     20744                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\InspectorBackendDispatcher.h"
     20745                                >
     20746                        </File>
     20747                        <File
     20748                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\InspectorBackendDispatcher.h"
     20749                                >
     20750                        </File>
     20751                        <File
    2074420752                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\RemoteInspectorFrontend.cpp"
    2074520753                                >
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r63927 r63952  
    10311031                4F3289B611A42AAB005ABE7E /* InspectorValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F3289B411A42AAB005ABE7E /* InspectorValues.h */; settings = {ATTRIBUTES = (Private, ); }; };
    10321032                4F4F5FFB11CBD2E100A186BF /* RemoteInspectorFrontend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F4F5FFA11CBD2D200A186BF /* RemoteInspectorFrontend.cpp */; };
     1033                4F707A9911EF679400ACDA69 /* InspectorBackendDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F707A9711EF679400ACDA69 /* InspectorBackendDispatcher.cpp */; };
     1034                4F707A9A11EF679400ACDA69 /* InspectorBackendDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F707A9811EF679400ACDA69 /* InspectorBackendDispatcher.h */; };
    10331035                4FD8D0F2119C718B002FA825 /* ScriptGCEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FD8D0F0119C718B002FA825 /* ScriptGCEvent.cpp */; };
    10341036                4FD8D0F3119C718B002FA825 /* ScriptGCEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FD8D0F1119C718B002FA825 /* ScriptGCEvent.h */; };
     
    67786780                4F4F5FFA11CBD2D200A186BF /* RemoteInspectorFrontend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteInspectorFrontend.cpp; sourceTree = "<group>"; };
    67796781                4F4F5FFC11CBD30100A186BF /* RemoteInspectorFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteInspectorFrontend.h; sourceTree = "<group>"; };
     6782                4F707A9711EF679400ACDA69 /* InspectorBackendDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorBackendDispatcher.cpp; sourceTree = "<group>"; };
     6783                4F707A9811EF679400ACDA69 /* InspectorBackendDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorBackendDispatcher.h; sourceTree = "<group>"; };
    67806784                4FD8D0F0119C718B002FA825 /* ScriptGCEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptGCEvent.cpp; sourceTree = "<group>"; };
    67816785                4FD8D0F1119C718B002FA825 /* ScriptGCEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptGCEvent.h; sourceTree = "<group>"; };
     
    1143911443                                9FA37EF81172FD9300C4CD55 /* JSScriptProfileNode.cpp */,
    1144011444                                9FA37EF91172FD9300C4CD55 /* JSScriptProfileNode.h */,
     11445                                4F707A9711EF679400ACDA69 /* InspectorBackendDispatcher.cpp */,
     11446                                4F707A9811EF679400ACDA69 /* InspectorBackendDispatcher.h */,
    1144111447                                4F4F5FFA11CBD2D200A186BF /* RemoteInspectorFrontend.cpp */,
    1144211448                                4F4F5FFC11CBD30100A186BF /* RemoteInspectorFrontend.h */,
     
    1985119857                                5162C7F511F77EFB00612EFE /* SchemeRegistry.h in Headers */,
    1985219858                                BCDF317C11F8D683003C5BF8 /* UserTypingGestureIndicator.h in Headers */,
     19859                                4F707A9A11EF679400ACDA69 /* InspectorBackendDispatcher.h in Headers */,
    1985319860                        );
    1985419861                        runOnlyForDeploymentPostprocessing = 0;
     
    2224622253                                5162C7F411F77EFB00612EFE /* SchemeRegistry.cpp in Sources */,
    2224722254                                BCDF317B11F8D683003C5BF8 /* UserTypingGestureIndicator.cpp in Sources */,
     22255                                4F707A9911EF679400ACDA69 /* InspectorBackendDispatcher.cpp in Sources */,
    2224822256                        );
    2224922257                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebCore/inspector/CodeGeneratorInspector.pm

    r63803 r63952  
    1414    "forward" => "InspectorClient",
    1515    "header" => "InspectorClient.h",
     16};
     17$typeTransform{"InspectorBackend"} = {
     18    "forward" => "InspectorBackend",
     19    "header" => "InspectorBackend.h",
    1620};
    1721$typeTransform{"PassRefPtr"} = {
     
    9599
    96100my $namespace;
     101
     102my $backendClassName;
     103my %backendTypes;
     104my %backendMethods;
     105my @backendMethodsImpl;
     106my $backendConstructor;
     107my $backendFooter;
    97108
    98109my $frontendClassName;
     
    151162    $frontendTypes{"PassRefPtr"} = 1;
    152163
     164    $backendClassName = $className . "BackendDispatcher";
     165    my @backendHead;
     166    push(@backendHead, "    ${backendClassName}(InspectorBackend* inspectorBackend) : m_inspectorBackend(inspectorBackend) { }");
     167    push(@backendHead, "    void dispatch(const String& message, String* exception);");
     168    push(@backendHead, "private:");
     169    $backendConstructor = join("\n", @backendHead);
     170    $backendFooter = "    InspectorBackend* m_inspectorBackend;";
     171    $backendTypes{"InspectorBackend"} = 1;
     172    $backendTypes{"PassRefPtr"} = 1;
     173    $backendTypes{"Array"} = 1;
     174
    153175    generateFunctions($interface);
    154176}
     
    160182    foreach my $function (@{$interface->functions}) {
    161183        generateFrontendFunction($function);
     184        generateBackendFunction($function);
    162185    }
     186    push(@backendMethodsImpl, generateBackendDispatcher());
    163187}
    164188
     
    199223}
    200224
     225sub generateBackendFunction
     226{
     227    my $function = shift;
     228    return if $function->signature->extendedAttributes->{"notify"};
     229
     230    my $functionName = $function->signature->name;
     231
     232    my @argsFiltered = grep($_->direction eq "in", @{$function->parameters});
     233    map($backendTypes{$_->type} = 1, @argsFiltered); # register required types
     234    my $arguments = join(", ", map($typeTransform{$_->type}->{"param"} . " " . $_->name, @argsFiltered));
     235
     236    my $signature = "    void ${functionName}(PassRefPtr<InspectorArray> args);";
     237    !$backendMethods{${signature}} || die "Duplicate function was detected for signature '$signature'.";
     238    $backendMethods{${signature}} = $functionName;
     239
     240    my @function;
     241    # Skip parameter name if no arguments in the array. Just to avoid unused parameter warning.
     242    push(@function, "void ${backendClassName}::${functionName}(PassRefPtr<InspectorArray>" . ( scalar(@argsFiltered) ? " args)" : ")"));
     243    push(@function, "{");
     244    my $i = 1; # zero element is the method name.
     245    foreach my $parameter (@argsFiltered) {
     246        push(@function, "    " . $typeTransform{$parameter->type}->{"retVal"} . " " . $parameter->name . ";");
     247        push(@function, "    if (!args->get(" . $i . ")->as" . $typeTransform{$parameter->type}->{"accessorSuffix"} . "(&" . $parameter->name . ")) {");
     248        push(@function, "        ASSERT_NOT_REACHED();");
     249        push(@function, "        return;");
     250        push(@function, "    }");
     251        ++$i;
     252    }
     253    push(@function, "    m_inspectorBackend->$functionName(" . join(", ", map($_->name, @argsFiltered)) . ");");
     254    push(@function, "}");
     255    push(@function, "");
     256    push(@backendMethodsImpl, @function);
     257}
     258
     259sub generateBackendDispatcher
     260{
     261    my @body;
     262    my @methods = map($backendMethods{$_}, keys %backendMethods);
     263    my @mapEntries = map("dispatchMap.add(\"$_\", &${backendClassName}::$_);", @methods);
     264
     265    push(@body, "void ${backendClassName}::dispatch(const String& message, String* exception)");
     266    push(@body, "{");
     267    push(@body, "    typedef void (${backendClassName}::*CallHandler)(PassRefPtr<InspectorArray> args);");
     268    push(@body, "    typedef HashMap<String, CallHandler> DispatchMap;");
     269    push(@body, "    DEFINE_STATIC_LOCAL(DispatchMap, dispatchMap, );");
     270    push(@body, "    if (dispatchMap.isEmpty()) {");
     271    push(@body, map("        $_", @mapEntries));
     272    push(@body, "    }");
     273    push(@body, "");
     274    push(@body, "    RefPtr<InspectorValue> parsedMessage = InspectorValue::parseJSON(message);");
     275    push(@body, "    if (!parsedMessage) {");
     276    push(@body, "        ASSERT_NOT_REACHED();");
     277    push(@body, "        *exception = \"Error: Invalid message format. Message should be in JSON format.\";");
     278    push(@body, "        return;");
     279    push(@body, "    }");
     280    push(@body, "");
     281    push(@body, "    RefPtr<InspectorArray> messageArray = parsedMessage->asArray();");
     282    push(@body, "    if (!messageArray) {");
     283    push(@body, "        ASSERT_NOT_REACHED();");
     284    push(@body, "        *exception = \"Error: Invalid message format. The message should be a JSONified array of arguments.\";");
     285    push(@body, "        return;");
     286    push(@body, "    }");
     287    push(@body, "");
     288    push(@body, "    if (!messageArray->length()) {");
     289    push(@body, "        ASSERT_NOT_REACHED();");
     290    push(@body, "        *exception = \"Error: Invalid message format. Empty message was received.\";");
     291    push(@body, "        return;");
     292    push(@body, "    }");
     293    push(@body, "");
     294    push(@body, "    String methodName;");
     295    push(@body, "    if (!messageArray->get(0)->asString(&methodName)) {");
     296    push(@body, "        ASSERT_NOT_REACHED();");
     297    push(@body, "        *exception = \"Error: Invalid message format. The first element of the message should be method name.\";");
     298    push(@body, "        return;");
     299    push(@body, "    }");
     300    push(@body, "");
     301    push(@body, "    HashMap<String, CallHandler>::iterator it = dispatchMap.find(methodName);");
     302    push(@body, "    if (it == dispatchMap.end()) {");
     303    push(@body, "        ASSERT_NOT_REACHED();");
     304    push(@body, "        String::format(\"Error: Invalid method name. '%s' wasn't found.\", methodName.utf8().data());");
     305    push(@body, "        return;");
     306    push(@body, "    }");
     307    push(@body, "");
     308    push(@body, "    ((*this).*it->second)(messageArray);");
     309    push(@body, "}");
     310    return @body;
     311}
     312
    201313sub generateHeader
    202314{
     
    285397    undef($HEADER);
    286398
     399    open($SOURCE, ">$outputDir/$backendClassName.cpp") || die "Couldn't open file $outputDir/$backendClassName.cpp";
     400    print $SOURCE join("\n", generateSource($backendClassName, \%backendTypes, \@backendMethodsImpl));
     401    close($SOURCE);
     402    undef($SOURCE);
     403
     404    open($HEADER, ">$outputHeadersDir/$backendClassName.h") || die "Couldn't open file $outputHeadersDir/$backendClassName.h";
     405    print $HEADER join("\n", generateHeader($backendClassName, \%backendTypes, $backendConstructor, \%backendMethods, $backendFooter));
     406    close($HEADER);
     407    undef($HEADER);
    287408}
    288409
  • trunk/WebCore/inspector/InspectorController.cpp

    r63891 r63952  
    5656#include "InjectedScriptHost.h"
    5757#include "InspectorBackend.h"
     58#include "InspectorBackendDispatcher.h"
    5859#include "InspectorCSSStore.h"
    5960#include "InspectorClient.h"
     
    193194    , m_settingsLoaded(false)
    194195    , m_inspectorBackend(InspectorBackend::create(this))
     196    , m_inspectorBackendDispatcher(new InspectorBackendDispatcher(m_inspectorBackend.get()))
    195197    , m_injectedScriptHost(InjectedScriptHost::create(this))
    196198#if ENABLE(JAVASCRIPT_DEBUGGER)
  • trunk/WebCore/inspector/InspectorController.h

    r63753 r63952  
    6565class InjectedScriptHost;
    6666class InspectorBackend;
     67class InspectorBackendDispatcher;
    6768class InspectorClient;
    6869class InspectorCSSStore;
     
    121122
    122123    InspectorBackend* inspectorBackend() { return m_inspectorBackend.get(); }
     124    InspectorBackendDispatcher* inspectorBackendDispatcher() { return m_inspectorBackendDispatcher.get(); }
    123125    InjectedScriptHost* injectedScriptHost() { return m_injectedScriptHost.get(); }
    124126
     
    396398    bool m_settingsLoaded;
    397399    RefPtr<InspectorBackend> m_inspectorBackend;
     400    OwnPtr<InspectorBackendDispatcher> m_inspectorBackendDispatcher;
    398401    RefPtr<InjectedScriptHost> m_injectedScriptHost;
    399402
  • trunk/WebCore/inspector/InspectorValues.cpp

    r63822 r63952  
    485485}
    486486
     487bool InspectorValue::asNumber(long*) const
     488{
     489    return false;
     490}
     491
     492bool InspectorValue::asNumber(unsigned long*) const
     493{
     494    return false;
     495}
     496
    487497bool InspectorValue::asString(String*) const
    488498{
     
    540550    return true;
    541551}
     552
     553bool InspectorBasicValue::asNumber(long* output) const
     554{
     555    if (type() != TypeDouble)
     556        return false;
     557    *output = static_cast<long>(m_doubleValue);
     558    return true;
     559}
     560
     561bool InspectorBasicValue::asNumber(unsigned long* output) const
     562{
     563    if (type() != TypeDouble)
     564        return false;
     565    *output = static_cast<unsigned long>(m_doubleValue);
     566    return true;
     567}
     568
    542569
    543570void InspectorBasicValue::writeJSON(Vector<UChar>* output) const
  • trunk/WebCore/inspector/InspectorValues.h

    r63561 r63952  
    7070    virtual bool asBool(bool* output) const;
    7171    virtual bool asNumber(double* output) const;
     72    virtual bool asNumber(long* output) const;
     73    virtual bool asNumber(unsigned long* output) const;
    7274    virtual bool asString(String* output) const;
    7375    virtual PassRefPtr<InspectorObject> asObject();
     
    106108    virtual bool asBool(bool* output) const;
    107109    virtual bool asNumber(double* output) const;
     110    virtual bool asNumber(long* output) const;
     111    virtual bool asNumber(unsigned long* output) const;
    108112
    109113    virtual void writeJSON(Vector<UChar>* output) const;
  • trunk/WebCore/inspector/front-end/ElementsPanel.js

    r63427 r63952  
    223223        if (this._selectedPathOnReset) {
    224224            var callId = WebInspector.Callback.wrap(selectLastSelectedNode.bind(this));
    225             InspectorBackend.pushNodeByPathToFrontend(callId, this._selectedPathOnReset);
     225            InspectorBackend.pushNodeByPathToFrontend(callId, this._selectedPathOnReset.join(","));
    226226        } else
    227227            selectNode.call(this);
  • trunk/WebKit/chromium/ChangeLog

    r63905 r63952  
     12010-07-22  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        WebInspector: CodeGeneratorInspector was extended and now it can
     6        generate InspectorBackedDispatcher's code. This dispatcher will
     7        validate and dispatch incoming inspector commands only by native
     8        code without using javaScript. That is necessary step for
     9        RemoteDebugging support.
     10        https://bugs.webkit.org/show_bug.cgi?id=42588
     11
     12        * src/ToolsAgent.h:
     13        * src/WebDevToolsAgentImpl.cpp:
     14        (WebKit::WebDevToolsAgentImpl::dispatchOnInspectorController):
     15        * src/WebDevToolsAgentImpl.h:
     16        * src/js/InspectorControllerImpl.js:
     17        (devtools.InspectorBackendImpl.prototype.callInspectorController_):
     18
    1192010-07-22  Darin Fisher  <darin@chromium.org>
    220
  • trunk/WebKit/chromium/src/ToolsAgent.h

    r61772 r63952  
    4040#define TOOLS_AGENT_STRUCT(METHOD0, METHOD1, METHOD2, METHOD3, METHOD4, METHOD5) \
    4141    /* Dispatches given function on the InspectorController object */ \
    42     METHOD3(dispatchOnInspectorController, int /* call_id */, \
    43         String /* function_name */, String /* json_args */) \
     42    METHOD2(dispatchOnInspectorController, int /* call_id */, \
     43        String /* message */) \
    4444    \
    4545    /* Dispatches given function on the InjectedScript object */ \
  • trunk/WebKit/chromium/src/WebDevToolsAgentImpl.cpp

    r63311 r63952  
    3939#include "InjectedScriptHost.h"
    4040#include "InspectorBackend.h"
     41#include "InspectorBackendDispatcher.h"
    4142#include "InspectorController.h"
    4243#include "InspectorFrontend.h"
     
    309310}
    310311
    311 void WebDevToolsAgentImpl::dispatchOnInspectorController(int callId, const String& functionName, const String& jsonArgs)
    312 {
    313     String result;
     312void WebDevToolsAgentImpl::dispatchOnInspectorController(int callId, const String& message)
     313{
    314314    String exception;
    315     result = m_debuggerAgentImpl->executeUtilityFunction(m_utilityContext, callId,
    316         "InspectorControllerDispatcher", functionName, jsonArgs, false /* is sync */, &exception);
    317     m_toolsAgentDelegateStub->didDispatchOn(callId, result, exception);
     315    inspectorController()->inspectorBackendDispatcher()->dispatch(message, &exception);
     316    m_toolsAgentDelegateStub->didDispatchOn(callId, "", exception);
    318317}
    319318
  • trunk/WebKit/chromium/src/WebDevToolsAgentImpl.h

    r62927 r63952  
    7373
    7474    // ToolsAgent implementation.
    75     virtual void dispatchOnInspectorController(int callId, const WebCore::String& functionName, const WebCore::String& jsonArgs);
     75    virtual void dispatchOnInspectorController(int callId, const WebCore::String& message);
    7676    virtual void dispatchOnInjectedScript(int callId, int injectedScriptId, const WebCore::String& functionName, const WebCore::String& jsonArgs, bool async);
    7777
  • trunk/WebKit/chromium/src/js/InspectorControllerImpl.js

    r63886 r63952  
    155155{
    156156    var args = Array.prototype.slice.call(arguments, 1);
    157     RemoteToolsAgent.dispatchOnInspectorController(WebInspector.Callback.wrap(function(){}), methodName, JSON.stringify(args));
     157    args.unshift(methodName);
     158    RemoteToolsAgent.dispatchOnInspectorController(WebInspector.Callback.wrap(function(){}), JSON.stringify(args));
    158159};
    159160
Note: See TracChangeset for help on using the changeset viewer.