2010-12-01 Ilya Tikhonovsky <loislo@chromium.org>
authorloislo@chromium.org <loislo@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 3 Dec 2010 23:40:42 +0000 (23:40 +0000)
committerloislo@chromium.org <loislo@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 3 Dec 2010 23:40:42 +0000 (23:40 +0000)
        Reviewed by Pavel Feldman.

        Web Inspector: Inspector protocol cleanup task.

        The patch has just small renames and adjustments for the protocol things.
        'handler' keyword in idl file was replaced with 'domain'.
        'domain' property was assigned for the each backend to frontend messages.
        At the next step WebInspector wrapper functions will be removed and 'agents' will be called directly.

        https://bugs.webkit.org/show_bug.cgi?id=50337

        * inspector/CodeGeneratorInspector.pm:
        * inspector/Inspector.idl:
        * inspector/front-end/inspector.js:
        (WebInspector_syncDispatch):

2010-12-01  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Inspector protocol cleanup task.

        The patch has just small renames and adjustments for the protocol things.
        'handler' keyword in idl file was replaced with 'domain'.
        'domain' property was assigned for the each backend to frontend messages.
        At the next step WebInspector wrapper functions will be removed and 'agents' will be called directly.

        https://bugs.webkit.org/show_bug.cgi?id=50337

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):

2010-12-01  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Inspector protocol cleanup task.

        The patch has just small renames and adjustments for the protocol things.
        'handler' keyword in idl file was replaced with 'domain'.
        'domain' property was assigned for the each backend to frontend messages.
        At the next step WebInspector wrapper functions will be removed and 'agents' will be called directly.

        https://bugs.webkit.org/show_bug.cgi?id=50337

        * inspector/report-API-errors-expected.txt:
        * inspector/report-API-errors.html:
        * inspector/report-protocol-errors-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@73315 268f45cc-cd09-0410-ab3c-d52691b4dbfc

13 files changed:
LayoutTests/ChangeLog
LayoutTests/inspector/report-API-errors-expected.txt
LayoutTests/inspector/report-API-errors.html
LayoutTests/inspector/report-protocol-errors-expected.txt
LayoutTests/inspector/report-protocol-errors.html
WebCore/ChangeLog
WebCore/inspector/CodeGeneratorInspector.pm
WebCore/inspector/Inspector.idl
WebCore/inspector/front-end/Callback.js
WebCore/inspector/front-end/DOMAgent.js
WebCore/inspector/front-end/inspector.js
WebKit/chromium/ChangeLog
WebKit/chromium/src/WebDevToolsFrontendImpl.cpp

index 7ca9333454ec175cfb730ca0c295306fffde1a31..7c8d383b274884b7458bb275959f3c85620dfd69 100644 (file)
@@ -1,3 +1,20 @@
+2010-12-01  Ilya Tikhonovsky  <loislo@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Web Inspector: Inspector protocol cleanup task.
+
+        The patch has just small renames and adjustments for the protocol things.
+        'handler' keyword in idl file was replaced with 'domain'.
+        'domain' property was assigned for the each backend to frontend messages.
+        At the next step WebInspector wrapper functions will be removed and 'agents' will be called directly.
+
+        https://bugs.webkit.org/show_bug.cgi?id=50337
+
+        * inspector/report-API-errors-expected.txt:
+        * inspector/report-API-errors.html:
+        * inspector/report-protocol-errors-expected.txt:
+
 2010-12-03  Sam Weinig  <sam@webkit.org>
 
         Update WebKit2 skipped list.
index abab55e33ef8c7c6880baaeb917c05f81c90b9e2..263f80e0b4204d38cffad8a24aa3343ab2a278c8 100644 (file)
@@ -3,5 +3,6 @@ Tests that InspectorBackendStub is catching incorrect arguments.
 Protocol Error: Invalid type of argument 'enable' for 'InspectorBackend.setMonitoringXHREnabled' call. It should be 'boolean' but it is 'number'.
 Protocol Error: Invalid number of arguments for 'InspectorBackend.setMonitoringXHREnabled' call. It should have the next arguments '{"enable":"boolean"}'.
 Protocol Error: Optional callback argument for 'InspectorBackend.setMonitoringXHREnabled' call should be a function but its type is 'string'.
-Protocol Error: Attempted to dispatch an unimplemented WebInspector method 'something-strange'
+Protocol Error: the message is for non-existing domain 'wrongDomain'
+Protocol Error: Attempted to dispatch an unimplemented method 'Inspector.something-strange'
 
index a2bc2803e86c73d61e63714f0e33a6bd4460367d..45eeca8df53bf9aed54610c242db50f6a23e6f85 100644 (file)
@@ -16,7 +16,8 @@ function test()
     InspectorBackend.setMonitoringXHREnabled(true, "not a function");
     InspectorBackend.setMonitoringXHREnabled(true, undefined);
     InspectorBackend.setMonitoringXHREnabled(false, undefined);
-    WebInspector_syncDispatch('{"type": "event", "domain": "dom", "event": "something-strange", "data": {}}');
+    InspectorBackend.dispatch('{"type": "event", "domain": "wrongDomain", "event": "something-strange", "data": {}}');
+    InspectorBackend.dispatch('{"type": "event", "domain": "Inspector", "event": "something-strange", "data": {}}');
 
     InspectorTest.completeTest();
 }
index f10273bb3b1eb65a64e2868c51f5b6739774250f..2221c843bbbac41033a9f86d9211393f30d0240a 100644 (file)
@@ -44,6 +44,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 2
+    domain : "Resources"
     success : false
     errors : {
         0 : "Protocol Error: 'arguments' property with type 'object' was not found."
@@ -51,6 +52,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 3
+    domain : "Resources"
     success : false
     errors : {
         0 : "Protocol Error: 'arguments' property with type 'object' was not found."
@@ -58,6 +60,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 4
+    domain : "Resources"
     success : false
     errors : {
         0 : "Protocol Error: Argument 'frameId' with type 'Number' was not found."
@@ -67,6 +70,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 5
+    domain : "Resources"
     success : false
     errors : {
         0 : "Protocol Error: Argument 'frameId' with type 'Number' was not found."
@@ -76,18 +80,20 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 6
+    domain : "Debugger"
     success : false
     errors : {
-        0 : "Protocol Error: Debug handler is not available."
+        0 : "Protocol Error: Debugger handler is not available."
         1 : "Protocol Error: Argument 'sourceID' with type 'String' was not found."
         2 : "Protocol Error: Argument 'lineNumber' with type 'Number' was not found."
     }
 }
 {
     seq : 7
+    domain : "Debugger"
     success : false
     errors : {
-        0 : "Protocol Error: Debug handler is not available."
+        0 : "Protocol Error: Debugger handler is not available."
     }
 }
 
index 4730ae42f44c07758ad22f0e0e74e447dec52f8f..d48961de8b0bf2e17379d5dd166cfe14c36ac305 100644 (file)
@@ -22,7 +22,7 @@ function test()
     ];
     var numberOfReports = 0;
 
-    WebInspector.reportProtocolError = function(message)
+    InspectorBackend.reportProtocolError = function(message)
     {
         if (numberOfReports < messages.length)
             InspectorTest.addObject(message);
index e4a90142770af78b28b8871ac6c61720dcf6af9b..607592b7eb953de6a678c7d809f377171908a101 100644 (file)
@@ -1,3 +1,21 @@
+2010-12-01  Ilya Tikhonovsky  <loislo@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Web Inspector: Inspector protocol cleanup task.
+
+        The patch has just small renames and adjustments for the protocol things.
+        'handler' keyword in idl file was replaced with 'domain'.
+        'domain' property was assigned for the each backend to frontend messages.
+        At the next step WebInspector wrapper functions will be removed and 'agents' will be called directly.
+
+        https://bugs.webkit.org/show_bug.cgi?id=50337
+
+        * inspector/CodeGeneratorInspector.pm:
+        * inspector/Inspector.idl:
+        * inspector/front-end/inspector.js:
+        (WebInspector_syncDispatch):
+
 2010-12-03  Alexander Pavlov  <apavlov@chromium.org>
 
         Reviewed by Yury Semikhatsky.
index 177ca3b1c5f73ff10a813924279994ad491d6dc1..6d2e3c45fa012b83c832ee3173cda96309bef4e7 100644 (file)
@@ -19,16 +19,16 @@ $typeTransform{"Backend"} = {
     "header" => "InspectorBackend.h",
     "domainAccessor" => "m_inspectorController->inspectorBackend()",
 };
-$typeTransform{"Controller"} = {
+$typeTransform{"Inspector"} = {
     "forwardHeader" => "InspectorController.h",
     "domainAccessor" => "m_inspectorController",
 };
-$typeTransform{"Debug"} = {
+$typeTransform{"Debugger"} = {
     "forward" => "InspectorDebuggerAgent",
     "header" => "InspectorDebuggerAgent.h",
     "domainAccessor" => "m_inspectorController->debuggerAgent()",
 };
-$typeTransform{"Resource"} = {
+$typeTransform{"Resources"} = {
     "forward" => "InspectorResourceAgent",
     "header" => "InspectorResourceAgent.h",
     "domainAccessor" => "m_inspectorController->m_resourceAgent",
@@ -240,7 +240,7 @@ sub GenerateInterface
     push(@backendHead, "    static bool getCommandName(const String& message, String* result);");
     $backendConstructor = join("\n", @backendHead);
     $backendFooter = "    InspectorController* m_inspectorController;";
-    $backendTypes{"Controller"} = 1;
+    $backendTypes{"Inspector"} = 1;
     $backendTypes{"InspectorClient"} = 1;
     $backendTypes{"PassRefPtr"} = 1;
     $backendTypes{"Object"} = 1;
@@ -282,6 +282,7 @@ sub generateFrontendFunction
 
     my $functionName = $function->signature->name;
 
+    my $domain = $function->signature->extendedAttributes->{"domain"} || "Inspector";
     my @argsFiltered = grep($_->direction eq "out", @{$function->parameters}); # just keep only out parameters for frontend interface.
     map($frontendTypes{$_->type} = 1, @argsFiltered); # register required types.
     my $arguments = join(", ", map($typeTransform{$_->type}->{"param"} . " " . $_->name, @argsFiltered)); # prepare arguments for function signature.
@@ -295,6 +296,7 @@ sub generateFrontendFunction
         push(@function, "{");
         push(@function, "    RefPtr<InspectorObject> ${functionName}Message = InspectorObject::create();");
         push(@function, "    ${functionName}Message->setString(\"type\", \"event\");");
+        push(@function, "    ${functionName}Message->setString(\"domain\", \"$domain\");");
         push(@function, "    ${functionName}Message->setString(\"event\", \"$functionName\");");
         push(@function, "    RefPtr<InspectorObject> payloadDataObject = InspectorObject::create();");
         my @pushArguments = map("    payloadDataObject->set" . $typeTransform{$_->type}->{"JSONType"} . "(\"" . $_->name . "\", " . $_->name . ");", @argsFiltered);
@@ -340,7 +342,7 @@ sub generateBackendFunction
     push(@function, "    RefPtr<InspectorArray> protocolErrors = InspectorArray::create();");
     push(@function, "");
 
-    my $domain = $function->signature->extendedAttributes->{"handler"} || "Controller";
+    my $domain = $function->signature->extendedAttributes->{"domain"} || "Inspector";
     my $domainAccessor = $typeTransform{$domain}->{"domainAccessor"};
     $backendTypes{$domain} = 1;
     push(@function, "    if (!$domainAccessor)");
@@ -377,6 +379,7 @@ sub generateBackendFunction
     push(@function, "    if ((callId || protocolErrors->length()) && m_inspectorController->hasFrontend()) {");
     push(@function, "        RefPtr<InspectorObject> responseMessage = InspectorObject::create();");
     push(@function, "        responseMessage->setNumber(\"seq\", callId);");
+    push(@function, "        responseMessage->setString(\"domain\", \"$domain\");");
     push(@function, "        responseMessage->setBoolean(\"success\", !protocolErrors->length());");
     push(@function, "");
     push(@function, "        if (protocolErrors->length())");
@@ -547,7 +550,7 @@ sub generateBackendStubJS
 
     foreach my $function (@backendFunctions) {
         my $name = $function->signature->name;
-        my $domain = $function->signature->extendedAttributes->{"handler"};
+        my $domain = $function->signature->extendedAttributes->{"domain"};
         my $argumentNames = join(",", map("\"" . $_->name . "\": \"" . lc($typeTransform{$_->type}->{"JSONType"}) . "\"", grep($_->direction eq "in", @{$function->parameters})));
         push(@JSStubs, "    this._registerDelegate('{" .
             "\"seq\": 0, " .
@@ -563,10 +566,12 @@ $licenseTemplate
 
 WebInspector.InspectorBackendStub = function()
 {
+    this._domainDispatchers = {};
 $JSStubs
 }
 
 WebInspector.InspectorBackendStub.prototype = {
+
     _registerDelegate: function(commandInfo)
     {
         var commandObject = JSON.parse(commandInfo);
@@ -604,6 +609,55 @@ WebInspector.InspectorBackendStub.prototype = {
 
         var message = JSON.stringify(request);
         InspectorFrontendHost.sendMessageToBackend(message);
+    },
+
+    registerDomainDispatcher: function(domain, dispatcher)
+    {
+        this._domainDispatchers[domain] = dispatcher;
+    },
+
+    dispatch: function(message)
+    {
+        if (window.dumpInspectorProtocolMessages)
+            console.log("backend: " + ((typeof message === "string") ? message : JSON.stringify(message)));
+
+        var messageObject = (typeof message === "string") ? JSON.parse(message) : message;
+
+        var arguments = [];
+        if (messageObject.data)
+            for (var key in messageObject.data)
+                arguments.push(messageObject.data[key]);
+
+        if ("seq" in messageObject) { // just a response for some request
+            if (messageObject.success)
+                WebInspector.Callback.processResponse(messageObject.seq, arguments);
+            else {
+                WebInspector.Callback.removeResponseCallbackEntry(messageObject.seq)
+                this.reportProtocolError(messageObject);
+            }
+            return;
+        }
+
+        if (messageObject.type === "event") {
+            if (!(messageObject.domain in this._domainDispatchers)) {
+                console.error("Protocol Error: the message is for non-existing domain '%s'", messageObject.domain);
+                return;
+            }
+            var dispatcher = this._domainDispatchers[messageObject.domain];
+            if (!(messageObject.event in dispatcher)) {
+                console.error("Protocol Error: Attempted to dispatch an unimplemented method '%s.%s'", messageObject.domain, messageObject.event);
+                return;
+            }
+            dispatcher[messageObject.event].apply(dispatcher, arguments);
+        }
+    },
+
+    reportProtocolError: function(messageObject)
+    {
+        console.error("Protocol Error: InspectorBackend request with seq = %d failed.", messageObject.seq);
+        for (var i = 0; i < messageObject.errors.length; ++i)
+            console.error("    " + messageObject.errors[i]);
+        WebInspector.Callback.removeResponseCallbackEntry(messageObject.seq);
     }
 }
 
index 99b2fab69eb9107a8d37b421dd6c5c0db0abe777..67a5cdee1ab5175a42b102293be79bc53b7c5303 100644 (file)
@@ -92,21 +92,21 @@ module core {
 #endif
 
         // This method is going to be broken down into smaller parts.
-        [handler=Controller] void populateScriptObjects();
+        [domain=Inspector] void populateScriptObjects();
 
-        [handler=Controller] void getInspectorState(out Object state);
+        [domain=Inspector] void getInspectorState(out Object state);
 
-        [handler=Controller] void setSearchingForNode(in boolean enabled, out boolean newState);
+        [domain=Inspector] void setSearchingForNode(in boolean enabled, out boolean newState);
 
-        [handler=Controller] void setMonitoringXHREnabled(in boolean enable, out boolean newState);
+        [domain=Inspector] void setMonitoringXHREnabled(in boolean enable, out boolean newState);
 
-        [handler=Controller] void reloadPage();
+        [domain=Inspector] void reloadPage();
 
-        [handler=Controller] void startTimelineProfiler();
-        [handler=Controller] void stopTimelineProfiler();
+        [domain=Inspector] void startTimelineProfiler();
+        [domain=Inspector] void stopTimelineProfiler();
 
-        [handler=Resource] void cachedResources(out Object resources);
-        [handler=Resource] void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out String content);
+        [domain=Resources] void cachedResources(out Object resources);
+        [domain=Resources] void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out String content);
         [notify] void identifierForInitialRequest(out long identifier, out String url, out Object loader);
         [notify] void willSendRequest(out long identifier, out double time, out Object request, out Object redirectResponse);
         [notify] void markResourceAsCached(out long identifier);
@@ -125,121 +125,121 @@ module core {
         [notify] void didCloseWebSocket(out unsigned long identifier, out double time);
 
 #if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
-        [handler=Backend] void enableDebugger(in boolean always);
-        [handler=Controller] void disableDebugger(in boolean always);
+        [domain=Backend] void enableDebugger(in boolean always);
+        [domain=Inspector] void disableDebugger(in boolean always);
 
-        [handler=Debug] void setBreakpoint(in String sourceID, in unsigned int lineNumber, in boolean enabled, in String condition, out boolean success, out unsigned int actualLineNumber);
-        [handler=Debug] void removeBreakpoint(in String sourceID, in unsigned long lineNumber);
-        [handler=Debug] void activateBreakpoints();
-        [handler=Debug] void deactivateBreakpoints();
+        [domain=Debugger] void setBreakpoint(in String sourceID, in unsigned int lineNumber, in boolean enabled, in String condition, out boolean success, out unsigned int actualLineNumber);
+        [domain=Debugger] void removeBreakpoint(in String sourceID, in unsigned long lineNumber);
+        [domain=Debugger] void activateBreakpoints();
+        [domain=Debugger] void deactivateBreakpoints();
 
-        [handler=Debug] void pause();
-        [handler=Debug] void resume();
+        [domain=Debugger] void pause();
+        [domain=Debugger] void resume();
 
-        [handler=Debug] void stepOverStatement();
-        [handler=Debug] void stepIntoStatement();
-        [handler=Debug] void stepOutOfFunction();
+        [domain=Debugger] void stepOverStatement();
+        [domain=Debugger] void stepIntoStatement();
+        [domain=Debugger] void stepOutOfFunction();
 
-        [handler=Debug] void setPauseOnExceptionsState(in long pauseOnExceptionsState, out long newState);
+        [domain=Debugger] void setPauseOnExceptionsState(in long pauseOnExceptionsState, out long newState);
 
-        [handler=Debug] void editScriptSource(in String sourceID, in String newContent, out boolean success, out String result, out Value newCallFrames);
-        [handler=Debug] void getScriptSource(in String sourceID, out String scriptSource);
+        [domain=Debugger] void editScriptSource(in String sourceID, in String newContent, out boolean success, out String result, out Value newCallFrames);
+        [domain=Debugger] void getScriptSource(in String sourceID, out String scriptSource);
 
-        [handler=Controller] void setNativeBreakpoint(in Object breakpoint, out String breakpointId);
-        [handler=Controller] void removeNativeBreakpoint(in String breakpointId);
+        [domain=Inspector] void setNativeBreakpoint(in Object breakpoint, out String breakpointId);
+        [domain=Inspector] void removeNativeBreakpoint(in String breakpointId);
 
-        [handler=Controller] void enableProfiler(in boolean always);
-        [handler=Controller] void disableProfiler(in boolean always);
+        [domain=Inspector] void enableProfiler(in boolean always);
+        [domain=Inspector] void disableProfiler(in boolean always);
 
-        [handler=Controller] void startProfiling();
-        [handler=Controller] void stopProfiling();
+        [domain=Inspector] void startProfiling();
+        [domain=Inspector] void stopProfiling();
 
-        [handler=Profiler] void getProfileHeaders(out Array headers);
-        [handler=Profiler] void getProfile(in String type, in unsigned long uid, out Object profile);
+        [domain=Profiler] void getProfileHeaders(out Array headers);
+        [domain=Profiler] void getProfile(in String type, in unsigned long uid, out Object profile);
 
-        [handler=Profiler] void removeProfile(in String type, in unsigned long uid);
-        [handler=Profiler] void clearProfiles();
+        [domain=Profiler] void removeProfile(in String type, in unsigned long uid);
+        [domain=Profiler] void clearProfiles();
 
-        [handler=Profiler] void takeHeapSnapshot();
+        [domain=Profiler] void takeHeapSnapshot();
 #endif
-        [handler=Backend] void setInjectedScriptSource(in String scriptSource);
-        [handler=Backend] void dispatchOnInjectedScript(in long injectedScriptId, in String methodName, in String arguments, out Value result, out boolean isException);
-        [handler=Controller] void addScriptToEvaluateOnLoad(in String scriptSource);
-        [handler=Controller] void removeAllScriptsToEvaluateOnLoad();
-
-        [handler=DOM] void getChildNodes(in long nodeId);
-        [handler=DOM] void setAttribute(in long elementId, in String name, in String value, out boolean success);
-        [handler=DOM] void removeAttribute(in long elementId, in String name, out boolean success);
-        [handler=DOM] void setTextNodeValue(in long nodeId, in String value, out boolean success);
-        [handler=DOM] void getEventListenersForNode(in long nodeId, out long outNodeId, out Array listenersArray);
-        [handler=DOM] void copyNode(in long nodeId);
-        [handler=DOM] void removeNode(in long nodeId, out long outNodeId);
-        [handler=DOM] void changeTagName(in long nodeId, in String newTagName, out long outNodeId);
-        [handler=DOM] void getOuterHTML(in long nodeId, out String outerHTML);
-        [handler=DOM] void setOuterHTML(in long nodeId, in String outerHTML, out long outNodeId);
-        [handler=DOM] void addInspectedNode(in long nodeId);
-        [handler=DOM] void performSearch(in String query, in boolean runSynchronously);
-        [handler=DOM] void searchCanceled();
-        [handler=DOM] void pushNodeByPathToFrontend(in String path, out long nodeId);
-
-        [handler=Controller] void setConsoleMessagesEnabled(in boolean enabled, out boolean newState);
+        [domain=Backend] void setInjectedScriptSource(in String scriptSource);
+        [domain=Backend] void dispatchOnInjectedScript(in long injectedScriptId, in String methodName, in String arguments, out Value result, out boolean isException);
+        [domain=Inspector] void addScriptToEvaluateOnLoad(in String scriptSource);
+        [domain=Inspector] void removeAllScriptsToEvaluateOnLoad();
+
+        [domain=DOM] void getChildNodes(in long nodeId);
+        [domain=DOM] void setAttribute(in long elementId, in String name, in String value, out boolean success);
+        [domain=DOM] void removeAttribute(in long elementId, in String name, out boolean success);
+        [domain=DOM] void setTextNodeValue(in long nodeId, in String value, out boolean success);
+        [domain=DOM] void getEventListenersForNode(in long nodeId, out long outNodeId, out Array listenersArray);
+        [domain=DOM] void copyNode(in long nodeId);
+        [domain=DOM] void removeNode(in long nodeId, out long outNodeId);
+        [domain=DOM] void changeTagName(in long nodeId, in String newTagName, out long outNodeId);
+        [domain=DOM] void getOuterHTML(in long nodeId, out String outerHTML);
+        [domain=DOM] void setOuterHTML(in long nodeId, in String outerHTML, out long outNodeId);
+        [domain=DOM] void addInspectedNode(in long nodeId);
+        [domain=DOM] void performSearch(in String query, in boolean runSynchronously);
+        [domain=DOM] void searchCanceled();
+        [domain=DOM] void pushNodeByPathToFrontend(in String path, out long nodeId);
+
+        [domain=Inspector] void setConsoleMessagesEnabled(in boolean enabled, out boolean newState);
         [notify] void addConsoleMessage(out Object messageObj);
         [notify] void updateConsoleMessageExpiredCount(out unsigned long count);
         [notify] void updateConsoleMessageRepeatCount(out unsigned long count);
 
-        [handler=Controller] void clearConsoleMessages();
+        [domain=Inspector] void clearConsoleMessages();
         [notify] void consoleMessagesCleared();
 
-        [handler=Controller] void highlightDOMNode(in long nodeId);
-        [handler=Controller] void hideDOMNodeHighlight();
-        [handler=Controller] void openInInspectedWindow(in String url);
-
-        [handler=Controller] void highlightFrame(in unsigned long frameId);
-        [handler=Controller] void hideFrameHighlight();
-
-        [handler=CSS] void getStylesForNode2(in long nodeId, out Value styles);
-        [handler=CSS] void getComputedStyleForNode2(in long nodeId, out Value style);
-        [handler=CSS] void getInlineStyleForNode2(in long nodeId, out Value style);
-        [handler=CSS] void getAllStyles2(out Array styleSheetIds);
-        [handler=CSS] void getStyleSheet2(in String styleSheetId, out Value styleSheet);
-        [handler=CSS] void getStyleSheetText2(in String styleSheetId, out String url, out String text);
-        [handler=CSS] void setStyleSheetText2(in String styleSheetId, in String text, out boolean success);
-        [handler=CSS] void setPropertyText2(in Object styleId, in long propertyIndex, in String text, in boolean overwrite, out Value style);
-        [handler=CSS] void toggleProperty2(in Object styleId, in long propertyIndex, in boolean disable, out Value style);
-        [handler=CSS] void setRuleSelector2(in Object ruleId, in String selector, out Value rule);
-        [handler=CSS] void addRule2(in long contextNodeId, in String selector, out Value rule);
-        [handler=CSS] void getSupportedCSSProperties(out Array cssProperties);
-        [handler=CSS] void querySelectorAll(in long documentId, in String selector, out Array result);
-
-        [handler=Controller] void getCookies(out Array cookies, out String cookiesString);
-        [handler=Controller] void deleteCookie(in String cookieName, in String domain);
+        [domain=Inspector] void highlightDOMNode(in long nodeId);
+        [domain=Inspector] void hideDOMNodeHighlight();
+        [domain=Inspector] void openInInspectedWindow(in String url);
+
+        [domain=Inspector] void highlightFrame(in unsigned long frameId);
+        [domain=Inspector] void hideFrameHighlight();
+
+        [domain=CSS] void getStylesForNode2(in long nodeId, out Value styles);
+        [domain=CSS] void getComputedStyleForNode2(in long nodeId, out Value style);
+        [domain=CSS] void getInlineStyleForNode2(in long nodeId, out Value style);
+        [domain=CSS] void getAllStyles2(out Array styleSheetIds);
+        [domain=CSS] void getStyleSheet2(in String styleSheetId, out Value styleSheet);
+        [domain=CSS] void getStyleSheetText2(in String styleSheetId, out String url, out String text);
+        [domain=CSS] void setStyleSheetText2(in String styleSheetId, in String text, out boolean success);
+        [domain=CSS] void setPropertyText2(in Object styleId, in long propertyIndex, in String text, in boolean overwrite, out Value style);
+        [domain=CSS] void toggleProperty2(in Object styleId, in long propertyIndex, in boolean disable, out Value style);
+        [domain=CSS] void setRuleSelector2(in Object ruleId, in String selector, out Value rule);
+        [domain=CSS] void addRule2(in long contextNodeId, in String selector, out Value rule);
+        [domain=CSS] void getSupportedCSSProperties(out Array cssProperties);
+        [domain=CSS] void querySelectorAll(in long documentId, in String selector, out Array result);
+
+        [domain=Inspector] void getCookies(out Array cookies, out String cookiesString);
+        [domain=Inspector] void deleteCookie(in String cookieName, in String domain);
 
 #if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
-        [handler=ApplicationCache] void getApplicationCaches(out Value applicationCaches);
+        [domain=ApplicationCache] void getApplicationCaches(out Value applicationCaches);
 #endif
 
 #if defined(ENABLE_FILE_SYSTEM) && ENABLE_FILE_SYSTEM
-        [handler=FileSystem] void getFileSystemPathAsync(in unsigned int type, in String origin);
-        [handler=FileSystem] void revealFolderInOS(in String path);
+        [domain=FileSystem] void getFileSystemPathAsync(in unsigned int type, in String origin);
+        [domain=FileSystem] void revealFolderInOS(in String path);
         [notify] void didGetFileSystemPath(out String root, out int type, out String origin);
         [notify] void didGetFileSystemError(out int type, out String origin);
         [notify] void didGetFileSystemDisabled();
 #endif
 
-        [handler=Backend] void releaseWrapperObjectGroup(in long injectedScriptId, in String objectGroup);
-        [handler=Controller] void didEvaluateForTestInFrontend(in long testCallId, in String jsonResult);
+        [domain=Backend] void releaseWrapperObjectGroup(in long injectedScriptId, in String objectGroup);
+        [domain=Inspector] void didEvaluateForTestInFrontend(in long testCallId, in String jsonResult);
 
 #if defined(ENABLE_DATABASE) && ENABLE_DATABASE
-        [handler=Backend] void getDatabaseTableNames(in long databaseId, out Array tableNames);
-        [handler=Backend] void executeSQL(in long databaseId, in String query, out boolean success, out long transactionId);
+        [domain=Backend] void getDatabaseTableNames(in long databaseId, out Array tableNames);
+        [domain=Backend] void executeSQL(in long databaseId, in String query, out boolean success, out long transactionId);
         [notify] void sqlTransactionSucceeded(out long transactionId, out Value columnNames, out Value values);
         [notify] void sqlTransactionFailed(out long transactionId, out Value sqlError);
 #endif
 
 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
-        [handler=Controller] void getDOMStorageEntries(in long storageId, out Array entries);
-        [handler=Controller] void setDOMStorageItem(in long storageId, in String key, in String value, out boolean success);
-        [handler=Controller] void removeDOMStorageItem(in long storageId, in String key, out boolean success);
+        [domain=Inspector] void getDOMStorageEntries(in long storageId, out Array entries);
+        [domain=Inspector] void setDOMStorageItem(in long storageId, in String key, in String value, out boolean success);
+        [domain=Inspector] void removeDOMStorageItem(in long storageId, in String key, out boolean success);
 #endif
     };
 }
index 0621fd1501b8d71d0e1bded398033afedfee817a..8e3f1d7e63efcb62271a7b9c1bb60aa2644deb66 100644 (file)
@@ -57,5 +57,5 @@ WebInspector.Callback.prototype = {
 
 WebInspector.Callback._INSTANCE = new WebInspector.Callback();
 WebInspector.Callback.wrap = WebInspector.Callback._INSTANCE.wrap.bind(WebInspector.Callback._INSTANCE);
-WebInspector.processResponse = WebInspector.Callback._INSTANCE.processResponse.bind(WebInspector.Callback._INSTANCE);
-WebInspector.removeResponseCallbackEntry = WebInspector.Callback._INSTANCE.removeResponseCallbackEntry.bind(WebInspector.Callback._INSTANCE);
+WebInspector.Callback.processResponse = WebInspector.Callback._INSTANCE.processResponse.bind(WebInspector.Callback._INSTANCE);
+WebInspector.Callback.removeResponseCallbackEntry = WebInspector.Callback._INSTANCE.removeResponseCallbackEntry.bind(WebInspector.Callback._INSTANCE);
index 37bf5493154e38cfa8f1d18673c57fb39708fea0..24e29ec0b9fd0cd2c1a8c4a1ac8ccd794c7260a3 100644 (file)
@@ -80,6 +80,8 @@ WebInspector.DOMNode = function(doc, payload) {
         this.name = payload.name;
         this.value = payload.value;
     }
+
+    InspectorBackend.registerDomainDispatcher("DOM", this);
 }
 
 WebInspector.DOMNode.prototype = {
index 51145cfe0d33a1567a9f6c7267a4b21f97aad39e..f71b89a60cea747202186764c92db44a59fed2d5 100644 (file)
@@ -478,7 +478,7 @@ WebInspector.loaded = function()
 {
     if ("page" in WebInspector.queryParamsObject) {
         WebInspector.socket = new WebSocket("ws://" + window.location.host + "/devtools/page/" + WebInspector.queryParamsObject.page);
-        WebInspector.socket.onmessage = function(message) { WebInspector_syncDispatch(message.data); }
+        WebInspector.socket.onmessage = function(message) { InspectorBackend.dispatch(message.data); }
         WebInspector.socket.onerror = function(error) { console.error(error); }
         WebInspector.socket.onopen = function() {
             InspectorFrontendHost.sendMessageToBackend = WebInspector.socket.send.bind(WebInspector.socket);
@@ -520,6 +520,8 @@ WebInspector.doLoadedDone = function()
     this.resourceManager = new WebInspector.ResourceManager();
     this.domAgent = new WebInspector.DOMAgent();
 
+    InspectorBackend.registerDomainDispatcher("Inspector", this);
+
     this.resourceCategories = {
         documents: new WebInspector.ResourceCategory("documents", WebInspector.UIString("Documents"), "rgb(47,102,236)"),
         stylesheets: new WebInspector.ResourceCategory("stylesheets", WebInspector.UIString("Stylesheets"), "rgb(157,231,119)"),
@@ -648,58 +650,18 @@ WebInspector.dispatch = function(message) {
     // This is important to LayoutTests.
     function delayDispatch()
     {
-        WebInspector_syncDispatch(message);
+        InspectorBackend.dispatch(message);
         WebInspector.pendingDispatches--;
     }
     WebInspector.pendingDispatches++;
     setTimeout(delayDispatch, 0);
 }
 
-// This function is purposely put into the global scope for easy access.
-WebInspector_syncDispatch = function(message)
-{
-    if (window.dumpInspectorProtocolMessages)
-        console.log("backend: " + ((typeof message === "string") ? message : JSON.stringify(message)));
-
-    var messageObject = (typeof message === "string") ? JSON.parse(message) : message;
-
-    var arguments = [];
-    if (messageObject.data)
-        for (var key in messageObject.data)
-            arguments.push(messageObject.data[key]);
-
-    if ("seq" in messageObject) { // just a response for some request
-        if (messageObject.success)
-            WebInspector.processResponse(messageObject.seq, arguments);
-        else {
-            WebInspector.removeResponseCallbackEntry(messageObject.seq)
-            WebInspector.reportProtocolError(messageObject);
-        }
-        return;
-    }
-
-    if (messageObject.type === "event") {
-        if (!(messageObject.event in WebInspector)) {
-            console.error("Protocol Error: Attempted to dispatch an unimplemented WebInspector method '%s'", messageObject.event);
-            return;
-        }
-        WebInspector[messageObject.event].apply(WebInspector, arguments);
-    }
-}
-
 WebInspector.dispatchMessageFromBackend = function(messageObject)
 {
     WebInspector.dispatch(messageObject);
 }
 
-WebInspector.reportProtocolError = function(messageObject)
-{
-    console.error("Protocol Error: InspectorBackend request with seq = %d failed.", messageObject.seq);
-    for (var i = 0; i < messageObject.errors.length; ++i)
-        console.error("    " + messageObject.errors[i]);
-    WebInspector.removeResponseCallbackEntry(messageObject.seq);
-}
-
 WebInspector.windowResize = function(event)
 {
     if (this.currentPanel)
index 0afefe96571d7e46f41b9119c2e6af07e42d449d..95d196bce3586b312a2b60cd7484b95dcdc971f9 100644 (file)
@@ -1,3 +1,19 @@
+2010-12-01  Ilya Tikhonovsky  <loislo@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Web Inspector: Inspector protocol cleanup task.
+
+        The patch has just small renames and adjustments for the protocol things.
+        'handler' keyword in idl file was replaced with 'domain'.
+        'domain' property was assigned for the each backend to frontend messages.
+        At the next step WebInspector wrapper functions will be removed and 'agents' will be called directly.
+
+        https://bugs.webkit.org/show_bug.cgi?id=50337
+
+        * src/WebDevToolsFrontendImpl.cpp:
+        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):
+
 2010-12-03  Chris Guillory  <chris.guillory@google.com>
 
         Reviewed by Chris Fleizach.
index ea59ab6be8492579bb5e07d52d0841704073cccf..345e43eda15f01c2ff01db08799ef345236f86b9 100644 (file)
@@ -111,7 +111,11 @@ void WebDevToolsFrontendImpl::dispatchOnInspectorFrontend(const WebString& messa
     v8::HandleScope scope;
     v8::Handle<v8::Context> frameContext = V8Proxy::context(frame->frame());
     v8::Context::Scope contextScope(frameContext);
-    v8::Handle<v8::Value> dispatchFunction = frameContext->Global()->Get(v8::String::New("WebInspector_syncDispatch"));
+    v8::Handle<v8::Value> inspectorBackendValue = frameContext->Global()->Get(v8::String::New("InspectorBackend"));
+    if (!inspectorBackendValue->IsObject())
+        return;
+    v8::Handle<v8::Object> inspectorBackend = v8::Handle<v8::Object>::Cast(inspectorBackendValue);
+    v8::Handle<v8::Value> dispatchFunction = inspectorBackend->Get(v8::String::New("dispatch"));
      // The frame might have navigated away from the front-end page (which is still weird).
     if (!dispatchFunction->IsFunction())
         return;
@@ -120,7 +124,7 @@ void WebDevToolsFrontendImpl::dispatchOnInspectorFrontend(const WebString& messa
     args.append(ToV8String(message));
     v8::TryCatch tryCatch;
     tryCatch.SetVerbose(true);
-    function->Call(frameContext->Global(), args.size(), args.data());
+    function->Call(inspectorBackend, args.size(), args.data());
 }
 
 void WebDevToolsFrontendImpl::frontendLoaded()