Diff
Modified: trunk/Source/WebCore/ChangeLog (101776 => 101777)
--- trunk/Source/WebCore/ChangeLog 2011-12-02 11:19:13 UTC (rev 101776)
+++ trunk/Source/WebCore/ChangeLog 2011-12-02 11:37:26 UTC (rev 101777)
@@ -1,3 +1,21 @@
+2011-12-02 Pavel Feldman <[email protected]>
+
+ Web Inspector: introduce backend stub generation from JSON for the standalone development / remote front-ends.
+ https://bugs.webkit.org/show_bug.cgi?id=73636
+
+ Reviewed by Yury Semikhatsky.
+
+ * inspector/front-end/DOMStorage.js:
+ * inspector/front-end/Database.js:
+ * inspector/front-end/InspectorBackend.js:
+ (InspectorBackendClass):
+ (InspectorBackendClass.prototype.registerCommand):
+ (InspectorBackendClass.prototype.registerEvent):
+ (InspectorBackendClass.prototype.runAfterPendingDispatches):
+ (InspectorBackendClass.prototype.loadFromJSONIfNeeded):
+ * inspector/front-end/TimelineManager.js:
+ * inspector/front-end/inspector.js:
+
2011-12-02 MORITA Hajime <[email protected]>
Unreviewed, another attempt to build fix for r101751:
Modified: trunk/Source/WebCore/inspector/front-end/DOMStorage.js (101776 => 101777)
--- trunk/Source/WebCore/inspector/front-end/DOMStorage.js 2011-12-02 11:19:13 UTC (rev 101776)
+++ trunk/Source/WebCore/inspector/front-end/DOMStorage.js 2011-12-02 11:37:26 UTC (rev 101777)
@@ -91,5 +91,3 @@
WebInspector.panels.resources.updateDOMStorage(storageId);
}
}
-
-InspectorBackend.registerDOMStorageDispatcher(new WebInspector.DOMStorageDispatcher());
Modified: trunk/Source/WebCore/inspector/front-end/Database.js (101776 => 101777)
--- trunk/Source/WebCore/inspector/front-end/Database.js 2011-12-02 11:19:13 UTC (rev 101776)
+++ trunk/Source/WebCore/inspector/front-end/Database.js 2011-12-02 11:37:26 UTC (rev 101777)
@@ -149,5 +149,3 @@
callback(errorObj);
}
}
-
-InspectorBackend.registerDatabaseDispatcher(new WebInspector.DatabaseDispatcher());
Modified: trunk/Source/WebCore/inspector/front-end/InspectorBackend.js (101776 => 101777)
--- trunk/Source/WebCore/inspector/front-end/InspectorBackend.js 2011-12-02 11:19:13 UTC (rev 101776)
+++ trunk/Source/WebCore/inspector/front-end/InspectorBackend.js 2011-12-02 11:37:26 UTC (rev 101777)
@@ -42,6 +42,7 @@
this.dumpInspectorTimeStats = false;
this.dumpInspectorProtocolMessages = false;
+ this._initialized = false;
}
InspectorBackendClass.prototype = {
@@ -69,11 +70,15 @@
window[agentName][domainAndMethod[1]] = this._sendMessageToBackend.bind(this, method, signature);
window[agentName][domainAndMethod[1]]["invoke"] = this._invoke.bind(this, method, signature);
this._replyArgs[method] = replyArgs;
+
+ this._initialized = true;
},
registerEvent: function(eventName, params)
{
this._eventArgs[eventName] = params;
+
+ this._initialized = true;
},
_invoke: function(method, signature, args, callback)
@@ -275,6 +280,79 @@
for (var id = 0; id < scripts.length; ++id)
scripts[id].call(this);
}
+ },
+
+ loadFromJSONIfNeeded: function()
+ {
+ if (this._initialized)
+ return;
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", "../Inspector.json", false);
+ xhr.send(null);
+
+ var schema = JSON.parse(xhr.responseText);
+ var jsTypes = { integer: "number", array: "object" };
+ var rawTypes = {};
+
+ var domains = schema["domains"];
+ for (var i = 0; i < domains.length; ++i) {
+ var domain = domains[i];
+ for (var j = 0; domain.types && j < domain.types.length; ++j) {
+ var type = domain.types[j];
+ rawTypes[domain.domain + "." + type.id] = jsTypes[type.type] || type.type;
+ }
+ }
+
+ var result = [];
+ for (var i = 0; i < domains.length; ++i) {
+ var domain = domains[i];
+
+ var commands = domain["commands"] || [];
+ for (var j = 0; j < commands.length; ++j) {
+ var command = commands[j];
+ var parameters = command["parameters"];
+ var paramsText = [];
+ for (var k = 0; parameters && k < parameters.length; ++k) {
+ var parameter = parameters[k];
+
+ var type;
+ if (parameter.type)
+ type = jsTypes[parameter.type] || parameter.type;
+ else {
+ var ref = parameter["$ref"];
+ if (ref.indexOf(".") !== -1)
+ type = rawTypes[ref];
+ else
+ type = rawTypes[domain.domain + "." + ref];
+ }
+
+ var text = "{\"name\": \"" + parameter.name + "\", \"type\": \"" + type + "\", \"optional\": " + (parameter.optional ? "true" : "false") + "}";
+ paramsText.push(text);
+ }
+
+ var returnsText = [];
+ var returns = command["returns"] || [];
+ for (var k = 0; k < returns.length; ++k) {
+ var parameter = returns[k];
+ returnsText.push("\"" + parameter.name + "\"");
+ }
+ result.push("InspectorBackend.registerCommand(\"" + domain.domain + "." + command.name + "\", [" + paramsText.join(", ") + "], [" + returnsText.join(", ") + "]);");
+ }
+
+ for (var j = 0; domain.events && j < domain.events.length; ++j) {
+ var event = domain.events[j];
+ var paramsText = [];
+ for (var k = 0; event.parameters && k < event.parameters.length; ++k) {
+ var parameter = event.parameters[k];
+ paramsText.push("\"" + parameter.name + "\"");
+ }
+ result.push("InspectorBackend.registerEvent(\"" + domain.domain + "." + event.name + "\", [" + paramsText.join(", ") + "]);");
+ }
+
+ result.push("InspectorBackend.register" + domain.domain + "Dispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, \"" + domain.domain + "\");");
+ }
+ eval(result.join("\n"));
}
}
Modified: trunk/Source/WebCore/inspector/front-end/TimelineManager.js (101776 => 101777)
--- trunk/Source/WebCore/inspector/front-end/TimelineManager.js 2011-12-02 11:19:13 UTC (rev 101776)
+++ trunk/Source/WebCore/inspector/front-end/TimelineManager.js 2011-12-02 11:37:26 UTC (rev 101777)
@@ -46,6 +46,9 @@
}
WebInspector.TimelineManager.prototype = {
+ /**
+ * @param {number=} maxCallStackDepth
+ */
start: function(maxCallStackDepth)
{
this._enablementCount++;
@@ -94,4 +97,7 @@
}
}
-WebInspector.timelineManager = new WebInspector.TimelineManager();
+/**
+ * @type {WebInspector.TimelineManager}
+ */
+WebInspector.timelineManager;
Modified: trunk/Source/WebCore/inspector/front-end/inspector.js (101776 => 101777)
--- trunk/Source/WebCore/inspector/front-end/inspector.js 2011-12-02 11:19:13 UTC (rev 101776)
+++ trunk/Source/WebCore/inspector/front-end/inspector.js 2011-12-02 11:37:26 UTC (rev 101777)
@@ -307,6 +307,7 @@
WebInspector.loaded = function()
{
+ InspectorBackend.loadFromJSONIfNeeded();
if ("page" in WebInspector.queryParamsObject) {
var page = WebInspector.queryParamsObject.page;
var host = "host" in WebInspector.queryParamsObject ? WebInspector.queryParamsObject.host : window.location.host;
@@ -371,6 +372,9 @@
InspectorBackend.registerInspectorDispatcher(this);
this.cssModel = new WebInspector.CSSStyleModel();
+ this.timelineManager = new WebInspector.TimelineManager();
+ InspectorBackend.registerDatabaseDispatcher(new WebInspector.DatabaseDispatcher());
+ InspectorBackend.registerDOMStorageDispatcher(new WebInspector.DOMStorageDispatcher());
this.searchController = new WebInspector.SearchController();
this.advancedSearchController = new WebInspector.AdvancedSearchController();