"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",
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;
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.
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);
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)");
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())");
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, " .
WebInspector.InspectorBackendStub = function()
{
+ this._domainDispatchers = {};
$JSStubs
}
WebInspector.InspectorBackendStub.prototype = {
+
_registerDelegate: function(commandInfo)
{
var commandObject = JSON.parse(commandInfo);
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);
}
}
#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);
[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
};
}