Diff
Modified: trunk/LayoutTests/ChangeLog (93604 => 93605)
--- trunk/LayoutTests/ChangeLog 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/LayoutTests/ChangeLog 2011-08-23 15:35:58 UTC (rev 93605)
@@ -1,3 +1,21 @@
+2011-08-23 Andrey Kosyakov <[email protected]>
+
+ Web Inspector: [Extensions API] provide access to page resources
+ https://bugs.webkit.org/show_bug.cgi?id=66767
+
+ Reviewed by Pavel Feldman.
+
+ * http/tests/inspector/resources/extension-main.js:
+ (trimURL):
+ * inspector/extensions/extensions-api-expected.txt:
+ * inspector/extensions/extensions-network-expected.txt:
+ * inspector/extensions/extensions-network.html:
+ * inspector/extensions/extensions-resources-expected.txt: Added.
+ * inspector/extensions/extensions-resources.html: Added.
+ * inspector/extensions/resources/Ahem.ttf:
+ * inspector/extensions/resources/test-script.js: Added.
+ (__test_function):
+
2011-08-23 Csaba Osztrogonác <[email protected]>
[Qt] Unreviewed gardening. Remove a non-existent test from the skipped list.
Modified: trunk/LayoutTests/http/tests/inspector/resources/extension-main.js (93604 => 93605)
--- trunk/LayoutTests/http/tests/inspector/resources/extension-main.js 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/LayoutTests/http/tests/inspector/resources/extension-main.js 2011-08-23 15:35:58 UTC (rev 93605)
@@ -1,3 +1,10 @@
+function trimURL(url)
+{
+ if (/^data:/.test(url))
+ return url.replace(/;.*$/, "...");
+ return url.replace(/.*\//, ".../");
+}
+
function dumpObject(object, nondeterministicProps, prefix, firstLinePrefix)
{
prefix = prefix || "";
@@ -6,9 +13,10 @@
for (var prop in object) {
var prefixWithName = prefix + " " + prop + " : ";
var propValue = object[prop];
- if (nondeterministicProps && prop in nondeterministicProps)
- output(prefixWithName + "<" + typeof propValue + ">");
- else if (propValue === null)
+ if (nondeterministicProps && prop in nondeterministicProps) {
+ var value = nondeterministicProps[prop] === "url" ? trimURL(propValue) : "<" + typeof propValue + ">";
+ output(prefixWithName + value);
+ } else if (propValue === null)
output(prefixWithName + "null");
else if (typeof propValue === "object")
dumpObject(propValue, nondeterministicProps, prefix + " ", prefixWithName);
Modified: trunk/LayoutTests/inspector/extensions/extensions-api-expected.txt (93604 => 93605)
--- trunk/LayoutTests/inspector/extensions/extensions-api-expected.txt 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/LayoutTests/inspector/extensions/extensions-api-expected.txt 2011-08-23 15:35:58 UTC (rev 93605)
@@ -8,8 +8,17 @@
addCategory : <function>
}
inspectedWindow : {
+ onResourceAdded : {
+ addListener : <function>
+ removeListener : <function>
+ }
+ onResourceContentCommitted : {
+ addListener : <function>
+ removeListener : <function>
+ }
reload : <function>
eval : <function>
+ getResources : <function>
}
panels : {
elements : {
@@ -42,10 +51,6 @@
addListener : <function>
removeListener : <function>
}
- onContentEdited : {
- addListener : <function>
- removeListener : <function>
- }
getHAR : <function>
addRequestHeaders : <function>
}
@@ -62,10 +67,6 @@
addListener : <function>
removeListener : <function>
}
- onContentEdited : {
- addListener : <function>
- removeListener : <function>
- }
getHAR : <function>
addRequestHeaders : <function>
}
Modified: trunk/LayoutTests/inspector/extensions/extensions-network-expected.txt (93604 => 93605)
--- trunk/LayoutTests/inspector/extensions/extensions-network-expected.txt 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/LayoutTests/inspector/extensions/extensions-network-expected.txt 2011-08-23 15:35:58 UTC (rev 93605)
@@ -28,7 +28,5 @@
}
RUNNING TEST: extension_testRequestNotification
Request finished: .../inspector/extensions/extensions-network.html
-RUNNING TEST: extension_testResourceContentEdited
-content for resource .../extensions/resources/audits-style1.css edited: body { background-color: black; }
All tests done.
Modified: trunk/LayoutTests/inspector/extensions/extensions-network.html (93604 => 93605)
--- trunk/LayoutTests/inspector/extensions/extensions-network.html 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/LayoutTests/inspector/extensions/extensions-network.html 2011-08-23 15:35:58 UTC (rev 93605)
@@ -76,30 +76,6 @@
});
}
-function extension_testResourceContentEdited(nextTest)
-{
- function onContentEdited(url, content)
- {
- webInspector.network.onContentEdited.removeListener(onContentEdited);
- var urlTail = url.replace(/.*((\/[^/]*){3}$)/,"...$1");
- output("content for resource " + urlTail + " edited: " + content);
- nextTest();
- }
- webInspector.network.onContentEdited.addListener(onContentEdited);
-
- function findAndEditResource()
- {
- var resources = WebInspector.networkLog.resources;
- for (var i = 0; i < resources.length; ++i) {
- if (/audits-style1.css$/.test(resources[i].url)) {
- resources[i].setContent("body { background-color: black; }", true);
- break;
- }
- }
- }
- evaluateOnFrontend("(" + findAndEditResource + ")()");
-}
-
var test = function()
{
InspectorTest.reloadPage(InspectorTest.runExtensionTests);
Added: trunk/LayoutTests/inspector/extensions/extensions-resources-expected.txt (0 => 93605)
--- trunk/LayoutTests/inspector/extensions/extensions-resources-expected.txt (rev 0)
+++ trunk/LayoutTests/inspector/extensions/extensions-resources-expected.txt 2011-08-23 15:35:58 UTC (rev 93605)
@@ -0,0 +1,74 @@
+CONSOLE MESSAGE: line 1: ReferenceError: Can't find variable: application
+Tests resource-related methods of WebInspector extension API
+
+
+Started extension.
+Running tests...
+RUNNING TEST: extension_testGetAllResources
+page resources:
+{
+ 0 : {
+ 0 : {
+ url : .../extensions-resources.html
+ type : "document"
+ getContent : <function>
+ setContent : <function>
+ }
+ 1 : {
+ url : .../extensions-test.js
+ type : "script"
+ getContent : <function>
+ setContent : <function>
+ }
+ 2 : {
+ url : .../test-script.js
+ type : "script"
+ getContent : <function>
+ setContent : <function>
+ }
+ 3 : {
+ url : .../inspector-test.js
+ type : "script"
+ getContent : <function>
+ setContent : <function>
+ }
+ 4 : {
+ url : .../audits-style1.css
+ type : "stylesheet"
+ getContent : <function>
+ setContent : <function>
+ }
+ 5 : {
+ url : .../abe.png
+ type : "image"
+ getContent : <function>
+ setContent : <function>
+ }
+ }
+}
+RUNNING TEST: extension_testGetResourceContent
+{
+ 0 : "function __test_function()
+{
+}
+
+"
+ 1 : ""
+}
+RUNNING TEST: extension_testOnContentCommitted
+log: Extension server error: Operation failed: Resource is not editable
+content committed for resource file:///usr/local/google/home/caseq/src/chromium/src/third_party/WebKit/LayoutTests/inspector/extensions/resources/audits-style1.css (type: stylesheet), new content: div.test { width: 220px; height: 42px; }
+RUNNING TEST: extension_testOnResourceAdded
+resource added:
+{
+ 0 : {
+ url : data:application/_javascript_...
+ type : "script"
+ getContent : <function>
+ setContent : <function>
+ }
+}
+RUNNING TEST: extension_testSetResourceContent
+div.test width after stylesheet edited (should be 126): 126
+All tests done.
+
Property changes on: trunk/LayoutTests/inspector/extensions/extensions-resources-expected.txt
___________________________________________________________________
Added: svn:eol-style
Added: trunk/LayoutTests/inspector/extensions/extensions-resources.html (0 => 93605)
--- trunk/LayoutTests/inspector/extensions/extensions-resources.html (rev 0)
+++ trunk/LayoutTests/inspector/extensions/extensions-resources.html 2011-08-23 15:35:58 UTC (rev 93605)
@@ -0,0 +1,120 @@
+<html>
+<head>
+<script src=""
+<script src=""
+<link rel="stylesheet" href="" type="text/css">
+<script type="text/_javascript_" src=""
+
+<script type="text/_javascript_">
+
+function extension_testGetAllResources(nextTest)
+{
+ function callback(resources)
+ {
+ function compareResources(a, b)
+ {
+ return trimURL(a.url).localeCompare(trimURL(b.url));
+ }
+ resources.sort(compareResources);
+ output("page resources:");
+ dumpObject(Array.prototype.slice.call(arguments), { url: "url" });
+ }
+ webInspector.inspectedWindow.getResources(callbackAndNextTest(callback, nextTest));
+}
+
+function extension_runWithResource(regexp, callback)
+{
+ function onResources(resources)
+ {
+ for (var i = 0; i < resources.length; ++i) {
+ if (regexp.test(resources[i].url)) {
+ callback(resources[i])
+ return;
+ }
+ }
+ throw "Failed to find a resource: " + regexp.toString();
+ }
+ webInspector.inspectedWindow.getResources(onResources);
+}
+
+function extension_testGetResourceContent(nextTest)
+{
+ function onContent()
+ {
+ dumpObject(Array.prototype.slice.call(arguments));
+ }
+ extension_runWithResource(/test-script\.js$/, function(resource) {
+ resource.getContent(callbackAndNextTest(onContent, nextTest));
+ });
+}
+
+function extension_testSetResourceContent(nextTest)
+{
+ function callback()
+ {
+ webInspector.inspectedWindow.eval("document.getElementById('test-div').clientWidth", function(result) {
+ output("div.test width after stylesheet edited (should be 126): " + result);
+ nextTest();
+ });
+ }
+ extension_runWithResource(/audits-style1\.css$/, function(resource) {
+ resource.setContent("div.test { width: 126px; height: 42px; }", false, callback);
+ });
+}
+
+function extension_testOnContentCommitted(nextTest)
+{
+ var expected_content = "div.test { width: 220px; height: 42px; }";
+
+ function onContentCommitted(resource, content)
+ {
+ output("content committed for resource " + trimURL(resource.url) + " (type: " + resource.type + "), new content: " + content);
+ if (!/audits-style1\.css$/.test(resource.url) || content !== expected_content)
+ output("FAIL: stray onContentEdited event");
+ webInspector.inspectedWindow.onResourceContentCommitted.removeListener(onContentCommitted);
+ nextTest();
+ }
+ webInspector.inspectedWindow.onResourceContentCommitted.addListener(onContentCommitted);
+ extension_runWithResource(/audits-style1\.css$/, function(resource) {
+ resource.setContent("div.test { width: 140px; height: 42px; }", false);
+ });
+ // The next step is going to produce a console message that will be logged, so synchronize the output now.
+ evaluateOnFrontend("InspectorTest.runAfterPendingDispatches(reply)", function() {
+ extension_runWithResource(/test-script\.js$/, function(resource) {
+ resource.setContent("function function1(){}", true);
+ });
+ extension_runWithResource(/audits-style1\.css$/, function(resource) {
+ resource.setContent(expected_content, true);
+ });
+ });
+}
+
+function extension_testOnResourceAdded(nextTest)
+{
+ function onResourceAdded(resource)
+ {
+ output("resource added:");
+ dumpObject(Array.prototype.slice.call(arguments), { url: "url" });
+ webInspector.inspectedWindow.onResourceAdded.removeListener(onResourceAdded);
+
+ nextTest();
+ }
+ webInspector.inspectedWindow.onResourceAdded.addListener(onResourceAdded);
+ webInspector.inspectedWindow.eval("addResource()");
+}
+
+function addResource()
+{
+ var script = document.createElement("script");
+ script.src = "" test_func(){}";
+ document.head.appendChild(script);
+}
+
+</script>
+</head>
+<body _onload_="runTest()">
+<p>Tests resource-related methods of WebInspector extension API</p>
+<img src=""
+<div id="test-div" class="test"></div>
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/extensions/extensions-resources.html
___________________________________________________________________
Added: svn:eol-style
Property changes: trunk/LayoutTests/inspector/extensions/resources/Ahem.ttf
Deleted: svn:executable
Added: trunk/LayoutTests/inspector/extensions/resources/test-script.js (0 => 93605)
--- trunk/LayoutTests/inspector/extensions/resources/test-script.js (rev 0)
+++ trunk/LayoutTests/inspector/extensions/resources/test-script.js 2011-08-23 15:35:58 UTC (rev 93605)
@@ -0,0 +1,4 @@
+function __test_function()
+{
+}
+
Property changes on: trunk/LayoutTests/inspector/extensions/resources/test-script.js
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebCore/ChangeLog (93604 => 93605)
--- trunk/Source/WebCore/ChangeLog 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/Source/WebCore/ChangeLog 2011-08-23 15:35:58 UTC (rev 93605)
@@ -1,3 +1,40 @@
+2011-08-23 Andrey Kosyakov <[email protected]>
+
+ Web Inspector: [Extensions API] provide access to page resources
+ https://bugs.webkit.org/show_bug.cgi?id=66767
+
+ Reviewed by Pavel Feldman.
+
+ Test: inspector/extensions/extensions-resources.html
+
+ * inspector/front-end/ExtensionAPI.js:
+ (WebInspector.injectedExtensionAPI.EventSinkImpl.prototype.addListener):
+ (WebInspector.injectedExtensionAPI):
+ (WebInspector.injectedExtensionAPI.RequestImpl.prototype.getContent):
+ (WebInspector.injectedExtensionAPI.InspectedWindow.resourceDispatch):
+ (WebInspector.injectedExtensionAPI.InspectedWindow.resourceContentDispatch):
+ (WebInspector.injectedExtensionAPI.InspectedWindow):
+ (WebInspector.injectedExtensionAPI.InspectedWindow.prototype.eval):
+ (WebInspector.injectedExtensionAPI.InspectedWindow.prototype.getResources):
+ (WebInspector.injectedExtensionAPI.InspectedWindow.prototype.getResources.callbackWrapper):
+ (WebInspector.injectedExtensionAPI.ResourceImpl.prototype.get url):
+ (WebInspector.injectedExtensionAPI.ResourceImpl.prototype.get type):
+ (WebInspector.injectedExtensionAPI.ResourceImpl.prototype.getContent):
+ (WebInspector.injectedExtensionAPI.ResourceImpl.prototype.setContent):
+ * inspector/front-end/ExtensionServer.js:
+ (WebInspector.ExtensionServer):
+ (WebInspector.ExtensionServer.prototype._notifyResourceAdded):
+ (WebInspector.ExtensionServer.prototype.notifyResourceContentCommitted):
+ (WebInspector.ExtensionServer.prototype._makeResource):
+ (WebInspector.ExtensionServer.prototype._onGetPageResources):
+ (WebInspector.ExtensionServer.prototype._getResourceContent):
+ (WebInspector.ExtensionServer.prototype._onGetRequestContent):
+ (WebInspector.ExtensionServer.prototype._onGetResourceContent):
+ (WebInspector.ExtensionServer.prototype._onSetResourceContent):
+ (WebInspector.ExtensionServer.prototype.initExtensions):
+ * inspector/front-end/Resource.js:
+ (WebInspector.Resource.prototype.addRevision):
+
2011-08-23 Pavel Feldman <[email protected]>
Not reviewed: fixing build. One line drive-by typo fix in the inspector shortcut (Esc -> Backspace).
Modified: trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js (93604 => 93605)
--- trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js 2011-08-23 15:35:58 UTC (rev 93605)
@@ -48,7 +48,7 @@
addListener: function(callback)
{
if (typeof callback != "function")
- throw new "addListener: callback is not a function";
+ throw "addListener: callback is not a function";
if (this._listeners.length === 0)
extensionServer.sendRequest({ command: "subscribe", type: this._type });
this._listeners.push(callback);
@@ -115,7 +115,6 @@
this._onRequestFinished_ = new EventSink("network-request-finished", requestDispatch);
defineDeprecatedProperty(this, "network", "onFinished", "onRequestFinished");
this._onNavigated_ = new EventSink("inspectedURLChanged");
- this._onContentEdited_ = new EventSink("resource-content-edited");
}
Network.prototype = {
@@ -151,7 +150,7 @@
{
callback(response.content, response.encoding);
}
- extensionServer.sendRequest({ command: "getResourceContent", id: this._id }, callback && callbackWrapper);
+ extensionServer.sendRequest({ command: "getRequestContent", id: this._id }, callback && callbackWrapper);
}
};
@@ -358,6 +357,16 @@
function InspectedWindow()
{
+ function resourceDispatch(message)
+ {
+ this._fire(new Resource(message.arguments[0]));
+ }
+ function resourceContentDispatch(message)
+ {
+ this._fire(new Resource(message.arguments[0]), message.arguments[1]);
+ }
+ this._onResourceAdded_ = new EventSink("resource-added", resourceDispatch);
+ this._onResourceContentCommitted_ = new EventSink("resource-content-committed", resourceContentDispatch);
}
InspectedWindow.prototype = {
@@ -376,9 +385,55 @@
callback(value, result.isException);
}
return extensionServer.sendRequest({ command: "evaluateOnInspectedPage", _expression_: _expression_ }, callback && callbackWrapper);
+ },
+
+ getResources: function(callback)
+ {
+ function wrapResource(resourceData)
+ {
+ return new Resource(resourceData);
+ }
+ function callbackWrapper(resources)
+ {
+ callback(resources.map(wrapResource));
+ }
+ return extensionServer.sendRequest({ command: "getPageResources" }, callback && callbackWrapper);
}
}
+function ResourceImpl(resourceData)
+{
+ this._url = resourceData.url
+ this._type = resourceData.type;
+}
+
+ResourceImpl.prototype = {
+ get url()
+ {
+ return this._url;
+ },
+
+ get type()
+ {
+ return this._type;
+ },
+
+ getContent: function(callback)
+ {
+ function callbackWrapper(response)
+ {
+ callback(response.content, response.encoding);
+ }
+
+ return extensionServer.sendRequest({ command: "getResourceContent", url: this._url }, callback && callbackWrapper);
+ },
+
+ setContent: function(content, commit, callback)
+ {
+ return extensionServer.sendRequest({ command: "setResourceContent", url: this._url, content: content, commit: commit }, callback);
+ }
+};
+
function TimelineImpl()
{
this._onEventRecorded_ = new EventSink("timeline-event-recorded");
@@ -455,9 +510,18 @@
for (var member in implementation) {
if (member.charAt(0) === "_")
continue;
- var value = implementation[member];
- interface[member] = typeof value === "function" ? bind(value, implementation)
- : interface[member] = implementation[member];
+ var descriptor = null;
+ // Traverse prototype chain until we find the owner.
+ for (var owner = implementation; owner && !descriptor; owner = owner.__proto__)
+ descriptor = Object.getOwnPropertyDescriptor(owner, member);
+ if (!descriptor)
+ continue;
+ if (typeof descriptor.value === "function")
+ interface[member] = bind(descriptor.value, implementation);
+ else if (typeof descriptor.get === "function")
+ interface.__defineGetter__(member, bind(descriptor.get, implementation));
+ else
+ Object.defineProperty(interface, member, descriptor);
}
}
@@ -492,6 +556,7 @@
var Panel = declareInterfaceClass(PanelImpl);
var PanelWithSidebar = declareInterfaceClass(PanelWithSidebarImpl);
var Request = declareInterfaceClass(RequestImpl);
+var Resource = declareInterfaceClass(ResourceImpl);
var Timeline = declareInterfaceClass(TimelineImpl);
var extensionServer = new ExtensionServerClient();
Modified: trunk/Source/WebCore/inspector/front-end/ExtensionServer.js (93604 => 93605)
--- trunk/Source/WebCore/inspector/front-end/ExtensionServer.js 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionServer.js 2011-08-23 15:35:58 UTC (rev 93605)
@@ -48,9 +48,12 @@
this._registerHandler("createSidebarPane", this._onCreateSidebarPane.bind(this));
this._registerHandler("evaluateOnInspectedPage", this._onEvaluateOnInspectedPage.bind(this));
this._registerHandler("getHAR", this._onGetHAR.bind(this));
+ this._registerHandler("getPageResources", this._onGetPageResources.bind(this));
+ this._registerHandler("getRequestContent", this._onGetRequestContent.bind(this));
this._registerHandler("getResourceContent", this._onGetResourceContent.bind(this));
this._registerHandler("log", this._onLog.bind(this));
this._registerHandler("reload", this._onReload.bind(this));
+ this._registerHandler("setResourceContent", this._onSetResourceContent.bind(this));
this._registerHandler("setSidebarHeight", this._onSetSidebarHeight.bind(this));
this._registerHandler("setSidebarContent", this._onSetSidebarContent.bind(this));
this._registerHandler("setSidebarPage", this._onSetSidebarPage.bind(this));
@@ -117,11 +120,17 @@
delete this._clientObjects[auditRun.id];
},
- notifyResourceContentEdited: function(url, content)
+ _notifyResourceAdded: function(event)
{
- this._postNotification("resource-content-edited", url, content);
+ var resource = event.data;
+ this._postNotification("resource-added", this._makeResource(resource));
},
+ notifyResourceContentCommitted: function(resource, content)
+ {
+ this._postNotification("resource-content-committed", this._makeResource(resource), content);
+ },
+
_notifyRequestFinished: function(event)
{
var request = event.data;
@@ -310,8 +319,27 @@
return harLog;
},
- _onGetResourceContent: function(message, port)
+ _makeResource: function(resource)
{
+ return {
+ url: resource.url,
+ type: WebInspector.Resource.Type.toString(resource.type)
+ };
+ },
+
+ _onGetPageResources: function()
+ {
+ var resources = [];
+ function pushResourceData(resource)
+ {
+ resources.push(this._makeResource(resource));
+ }
+ WebInspector.resourceTreeModel.forAllResources(pushResourceData.bind(this));
+ return resources;
+ },
+
+ _getResourceContent: function(resource, message, port)
+ {
function onContentAvailable(content, encoded)
{
var response = {
@@ -320,12 +348,38 @@
};
this._dispatchCallback(message.requestId, port, response);
}
+ resource.requestContent(onContentAvailable.bind(this));
+ },
+
+ _onGetRequestContent: function(message, port)
+ {
var request = this._requestById(message.id);
if (!request)
return this._status.E_NOTFOUND(message.id);
- request.requestContent(onContentAvailable.bind(this));
+ this._getResourceContent(request, message, port);
},
+ _onGetResourceContent: function(message, port)
+ {
+ var resource = WebInspector.resourceTreeModel.resourceForURL(message.url);
+ if (!resource)
+ return this._status.E_NOTFOUND(message.url);
+ this._getResourceContent(resource, message, port);
+ },
+
+ _onSetResourceContent: function(message, port)
+ {
+ function callbackWrapper(error)
+ {
+ var response = error ? this._status.E_FAILED(error) : this._status.OK();
+ this._dispatchCallback(message.requestId, port, response);
+ }
+ var resource = WebInspector.resourceTreeModel.resourceForURL(message.url);
+ if (!resource)
+ return this._status.E_NOTFOUND(message.url);
+ resource.setContent(message.content, message.commit, callbackWrapper.bind(this));
+ },
+
_requestId: function(request)
{
if (!request._extensionRequestId) {
@@ -375,6 +429,7 @@
// The networkManager is normally created after the ExtensionServer is constructed, but before initExtensions() is called.
WebInspector.networkManager.addEventListener(WebInspector.NetworkManager.EventTypes.ResourceFinished, this._notifyRequestFinished, this);
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged, this._inspectedURLChanged, this);
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ResourceAdded, this._notifyResourceAdded, this);
WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded, this._addRecordToTimeline, this);
InspectorExtensionRegistry.getExtensionsAsync();
@@ -501,6 +556,7 @@
E_BADARGTYPE: "Invalid type for argument %s: got %s, expected %s",
E_NOTFOUND: "Object not found: %s",
E_NOTSUPPORTED: "Object does not support requested operation: %s",
+ E_FAILED: "Operation failed: %s"
}
WebInspector.ExtensionStatus = function()
Modified: trunk/Source/WebCore/inspector/front-end/Resource.js (93604 => 93605)
--- trunk/Source/WebCore/inspector/front-end/Resource.js 2011-08-23 15:08:14 UTC (rev 93604)
+++ trunk/Source/WebCore/inspector/front-end/Resource.js 2011-08-23 15:35:58 UTC (rev 93605)
@@ -833,7 +833,7 @@
if (!restoringHistory)
this._persistRevision();
- WebInspector.extensionServer.notifyResourceContentEdited(this.url, newContent);
+ WebInspector.extensionServer.notifyResourceContentCommitted(this, newContent);
},
_persistRevision: function()