Diff
Modified: trunk/LayoutTests/ChangeLog (103410 => 103411)
--- trunk/LayoutTests/ChangeLog 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/LayoutTests/ChangeLog 2011-12-21 17:20:43 UTC (rev 103411)
@@ -1,3 +1,15 @@
+2011-12-20 Andrey Kosyakov <ca...@chromium.org>
+
+ Web Inspector: [Extension API] refactor extension API build code, expose experimental APIs conditionally in chromium
+ https://bugs.webkit.org/show_bug.cgi?id=74941
+
+ Reviewed by Pavel Feldman.
+
+ * http/tests/inspector/extensions-test.js:
+ (initialize_ExtensionsTest.InspectorTest.runExtensionTests):
+ (initialize_ExtensionsTest):
+ * platform/chromium/inspector/extensions/extensions-api-expected.txt: Removed.
+
2011-12-12 Pavel Podivilov <podivi...@chromium.org>
Web Inspector: fix source map url resolving.
Modified: trunk/LayoutTests/http/tests/inspector/extensions-test.js (103410 => 103411)
--- trunk/LayoutTests/http/tests/inspector/extensions-test.js 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/LayoutTests/http/tests/inspector/extensions-test.js 2011-12-21 17:20:43 UTC (rev 103411)
@@ -50,7 +50,7 @@
pageURL.replace(/^(https?:\/\/[^/]*\/).*$/,"$1") :
pageURL.replace(/\/inspector\/extensions\/[^/]*$/, "/http/tests")) +
"/inspector/resources/extension-main.html";
- WebInspector.addExtensions([{ startPage: extensionURL, name: "test extension" }]);
+ WebInspector.addExtensions([{ startPage: extensionURL, name: "test extension", exposeWebInspectorNamespace: true }]);
});
}
Deleted: trunk/LayoutTests/platform/chromium/inspector/extensions/extensions-api-expected.txt (103410 => 103411)
--- trunk/LayoutTests/platform/chromium/inspector/extensions/extensions-api-expected.txt 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/LayoutTests/platform/chromium/inspector/extensions/extensions-api-expected.txt 2011-12-21 17:20:43 UTC (rev 103411)
@@ -1,95 +0,0 @@
-Tests public interface of WebInspector Extensions API
-
-Started extension.
-Running tests...
-RUNNING TEST: extension_testAPI
-{
- audits : {
- addCategory : <function>
- }
- inspectedWindow : {
- onResourceAdded : {
- addListener : <function>
- removeListener : <function>
- }
- onResourceContentCommitted : {
- addListener : <function>
- removeListener : <function>
- }
- reload : <function>
- eval : <function>
- getResources : <function>
- tabId : undefined
- }
- panels : {
- elements : {
- createSidebarPane : <function>
- onSelectionChanged : {
- addListener : <function>
- removeListener : <function>
- }
- }
- create : <function>
- setOpenResourceHandler : <function>
- }
- network : {
- onRequestFinished : {
- addListener : <function>
- removeListener : <function>
- }
- onFinished : {
- addListener : <function>
- removeListener : <function>
- }
- onNavigated : {
- addListener : <function>
- removeListener : <function>
- }
- getHAR : <function>
- addRequestHeaders : <function>
- }
- resources : {
- onRequestFinished : {
- addListener : <function>
- removeListener : <function>
- }
- onFinished : {
- addListener : <function>
- removeListener : <function>
- }
- onNavigated : {
- addListener : <function>
- removeListener : <function>
- }
- getHAR : <function>
- addRequestHeaders : <function>
- }
- timeline : {
- onEventRecorded : {
- addListener : <function>
- removeListener : <function>
- }
- }
- console : {
- onMessageAdded : {
- addListener : <function>
- removeListener : <function>
- }
- getMessages : <function>
- addMessage : <function>
- Severity : {
- Tip : "tip"
- Debug : "debug"
- Log : "log"
- Warning : "warning"
- Error : "error"
- }
- }
- onReset : {
- addListener : <function>
- removeListener : <function>
- }
- log : <function>
-}
-All tests done.
-
Modified: trunk/Source/WebCore/ChangeLog (103410 => 103411)
--- trunk/Source/WebCore/ChangeLog 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebCore/ChangeLog 2011-12-21 17:20:43 UTC (rev 103411)
@@ -1,3 +1,20 @@
+2011-12-20 Andrey Kosyakov <ca...@chromium.org>
+
+ Web Inspector: [Extension API] refactor extension API build code, expose experimental APIs conditionally in chromium
+ https://bugs.webkit.org/show_bug.cgi?id=74941
+
+ Reviewed by Pavel Feldman.
+
+ * WebCore.gypi:
+ * inspector/front-end/ExtensionAPI.js:
+ (buildPlatformExtensionAPI.platformExtensionAPI):
+ (buildPlatformExtensionAPI):
+ (buildExtensionAPIInjectedScript):
+ * inspector/front-end/ExtensionServer.js:
+ (WebInspector.ExtensionServer.prototype._addExtensions):
+ (WebInspector.ExtensionServer.prototype._addExtension):
+ (window.addExtension):
+
2011-12-12 Pavel Podivilov <podivi...@chromium.org>
Web Inspector: fix source map url resolving.
Modified: trunk/Source/WebCore/WebCore.gypi (103410 => 103411)
--- trunk/Source/WebCore/WebCore.gypi 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebCore/WebCore.gypi 2011-12-21 17:20:43 UTC (rev 103411)
@@ -6407,6 +6407,7 @@
'inspector/front-end/ElementsTreeOutline.js',
'inspector/front-end/EmptyView.js',
'inspector/front-end/EventListenersSidebarPane.js',
+ 'inspector/front-end/ExtensionAPI.js',
'inspector/front-end/ExtensionAuditCategory.js',
'inspector/front-end/ExtensionPanel.js',
'inspector/front-end/ExtensionRegistryStub.js',
@@ -6516,7 +6517,6 @@
'inspector/front-end/inspectorSyntaxHighlight.css',
'inspector/front-end/popover.css',
'<@(webinspector_standalone_css_files)',
- '<@(webinspector_extension_api_files)',
],
'webinspector_standalone_css_files': [
'inspector/front-end/auditsPanel.css',
@@ -6536,9 +6536,6 @@
'inspector/front-end/textViewer.css',
'inspector/front-end/timelinePanel.css',
],
- 'webinspector_extension_api_files': [
- 'inspector/front-end/ExtensionAPI.js',
- ],
'webinspector_uglifyjs_files': [
'inspector/front-end/UglifyJS/parse-js.js',
],
Modified: trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js (103410 => 103411)
--- trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js 2011-12-21 17:20:43 UTC (rev 103411)
@@ -806,19 +806,27 @@
var extensionServer = new ExtensionServerClient();
-window.webInspector = new InspectorExtensionAPI();
-window.experimental = window.experimental || {};
-window.experimental.webInspector = window.webInspector;
+return new InspectorExtensionAPI();
+}
+// Default implementation; platforms will override.
+function buildPlatformExtensionAPI()
+{
+ function platformExtensionAPI(coreAPI)
+ {
+ window.webInspector = coreAPI;
+ }
+ return platformExtensionAPI.toString();
}
-function buildExtensionAPIInjectedScript(platformAPI)
+
+function buildExtensionAPIInjectedScript(extensionInfo)
{
return "(function(injectedScriptHost, inspectedWindow, injectedScriptId){ " +
defineCommonExtensionSymbols.toString() + ";" +
injectedExtensionAPI.toString() + ";" +
- "injectedExtensionAPI(injectedScriptId);" +
- (platformAPI || "") + ";" +
+ buildPlatformExtensionAPI(extensionInfo) + ";" +
+ "platformExtensionAPI(injectedExtensionAPI(injectedScriptId));" +
"return {};" +
"})";
}
Modified: trunk/Source/WebCore/inspector/front-end/ExtensionServer.js (103410 => 103411)
--- trunk/Source/WebCore/inspector/front-end/ExtensionServer.js 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionServer.js 2011-12-21 17:20:43 UTC (rev 103411)
@@ -604,12 +604,14 @@
_addExtensions: function(extensions)
{
for (var i = 0; i < extensions.length; ++i)
- this._addExtension(extensions[i].startPage, extensions[i].name);
+ this._addExtension(extensions[i]);
},
- _addExtension: function(startPage, name)
+ _addExtension: function(extensionInfo)
{
const urlOriginRegExp = new RegExp("([^:]+:\/\/[^/]*)\/"); // Can't use regexp literal here, MinJS chokes on it.
+ var startPage = extensionInfo.startPage;
+ var name = extensionInfo.name;
try {
var originMatch = urlOriginRegExp.exec(startPage);
@@ -620,7 +622,7 @@
var extensionOrigin = originMatch[1];
if (!this._registeredExtensions[extensionOrigin]) {
// See ExtensionAPI.js and ExtensionCommon.js for details.
- InspectorFrontendHost.setInjectedScriptForOrigin(extensionOrigin, this._buildExtensionAPIScript());
+ InspectorFrontendHost.setInjectedScriptForOrigin(extensionOrigin, buildExtensionAPIInjectedScript(extensionInfo));
this._registeredExtensions[extensionOrigin] = { name: name };
}
var iframe = document.createElement("iframe");
@@ -634,12 +636,6 @@
return true;
},
- _buildExtensionAPIScript: function()
- {
- var platformAPI = WebInspector.buildPlatformExtensionAPI ? WebInspector.buildPlatformExtensionAPI() : "";
- return buildExtensionAPIInjectedScript(platformAPI);
- },
-
_onWindowMessage: function(event)
{
if (event.data ="" "registerExtension")
@@ -752,4 +748,10 @@
WebInspector.extensionServer = new WebInspector.ExtensionServer();
-window.addExtension = WebInspector.extensionServer._addExtension.bind(WebInspector.extensionServer);
+window.addExtension = function(page, name)
+{
+ WebInspector.extensionServer._addExtension({
+ startPage: page,
+ name: name,
+ });
+}
Modified: trunk/Source/WebKit/chromium/ChangeLog (103410 => 103411)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-12-21 17:20:43 UTC (rev 103411)
@@ -1,3 +1,19 @@
+2011-12-20 Andrey Kosyakov <ca...@chromium.org>
+
+ Web Inspector: [Extension API] refactor extension API build code, expose experimental APIs conditionally in chromium
+ https://bugs.webkit.org/show_bug.cgi?id=74941
+
+ Reviewed by Pavel Feldman.
+
+ * WebKit.gyp:
+ * WebKit.gypi:
+ * scripts/concatenate_js_files.py:
+ (main):
+ * scripts/generate_devtools_extension_api.py:
+ (write_devtools_extension_api):
+ * src/js/DevTools.js:
+ ():
+
2011-12-20 Nate Chapin <jap...@chromium.org>
Revert code for r96912 and r101905, since they cause
Modified: trunk/Source/WebKit/chromium/WebKit.gyp (103410 => 103411)
--- trunk/Source/WebKit/chromium/WebKit.gyp 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebKit/chromium/WebKit.gyp 2011-12-21 17:20:43 UTC (rev 103411)
@@ -917,10 +917,10 @@
'script_name': 'scripts/generate_devtools_extension_api.py',
'inputs': [
'<@(_script_name)',
- '<@(webinspector_extension_api_files)',
+ '<@(devtools_extension_api_files)',
],
'outputs': ['<(PRODUCT_DIR)/resources/inspector/devtools_extension_api.js'],
- 'action': ['python', '<@(_script_name)', '<@(_outputs)', '<@(webinspector_extension_api_files)'],
+ 'action': ['python', '<@(_script_name)', '<@(_outputs)', '<@(devtools_extension_api_files)'],
}],
},
{
@@ -999,7 +999,7 @@
'<@(_workers_files)',
'<@(webinspector_image_files)',
'<@(devtools_image_files)',
- '<@(webinspector_extension_api_files)',
+ '<@(devtools_extension_api_files)',
],
'search_path': [
'../../WebCore/inspector/front-end',
@@ -1012,7 +1012,7 @@
'action': ['python', '<@(_script_name)', '<@(_inspector_html)',
'--devtools-files', '<@(devtools_files)',
'--workers-files', '<@(_workers_files)',
- '--extension-api-files', '<@(webinspector_extension_api_files)',
+ '--extension-api-files', '<@(devtools_extension_api_files)',
'--search-path', '<@(_search_path)',
'--js-search-path', '<@(_js_search_path)',
'--output', '<@(_outputs)'],
Modified: trunk/Source/WebKit/chromium/WebKit.gypi (103410 => 103411)
--- trunk/Source/WebKit/chromium/WebKit.gypi 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebKit/chromium/WebKit.gypi 2011-12-21 17:20:43 UTC (rev 103411)
@@ -34,11 +34,16 @@
# for copying them to resource dir, and for generating 'devtools.html' file.
'devtools_js_files': [
'src/js/DevTools.js',
+ 'src/js/DevToolsExtensionAPI.js',
'src/js/Tests.js',
],
'devtools_css_files': [
'src/js/devTools.css',
],
+ 'devtools_extension_api_files': [
+ '../../WebCore/inspector/front-end/ExtensionAPI.js',
+ 'src/js/DevToolsExtensionAPI.js'
+ ],
'devtools_image_files': [
'src/js/Images/segmentChromium.png',
'src/js/Images/segmentHoverChromium.png',
Modified: trunk/Source/WebKit/chromium/scripts/concatenate_js_files.py (103410 => 103411)
--- trunk/Source/WebKit/chromium/scripts/concatenate_js_files.py 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebKit/chromium/scripts/concatenate_js_files.py 2011-12-21 17:20:43 UTC (rev 103411)
@@ -87,6 +87,7 @@
with open(input_order_file_name, 'r') as order_html:
extractor = OrderedJSFilesExtractor(order_html.read())
extractor.ordered_js_files.append('DevTools.js')
+ extractor.ordered_js_files.append('DevToolsExtensionAPI.js')
extractor.ordered_js_files.append('Tests.js')
expander = PathExpander(argv[2:])
Modified: trunk/Source/WebKit/chromium/scripts/generate_devtools_extension_api.py (103410 => 103411)
--- trunk/Source/WebKit/chromium/scripts/generate_devtools_extension_api.py 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebKit/chromium/scripts/generate_devtools_extension_api.py 2011-12-21 17:20:43 UTC (rev 103411)
@@ -39,17 +39,9 @@
input = open(input_name, 'r')
output.write(input.read())
output.write("""
- injectedExtensionAPI("remote-" + top.frames.length);
-
- chrome = window.chrome || {};
- chrome.experimental = chrome.experimental || {};
- chrome.experimental.devtools = chrome.experimental.devtools || {};
-
- var properties = Object.getOwnPropertyNames(webInspector);
- for (var i = 0; i < properties.length; ++i) {
- var descriptor = Object.getOwnPropertyDescriptor(webInspector, properties[i]);
- Object.defineProperty(chrome.experimental.devtools, properties[i], descriptor);
- }
+ var tabId;
+ var extensionInfo = {};
+ platformExtensionAPI(injectedExtensionAPI("remote-" + top.frames.length));
})();""")
Modified: trunk/Source/WebKit/chromium/src/js/DevTools.js (103410 => 103411)
--- trunk/Source/WebKit/chromium/src/js/DevTools.js 2011-12-21 17:03:15 UTC (rev 103410)
+++ trunk/Source/WebKit/chromium/src/js/DevTools.js 2011-12-21 17:20:43 UTC (rev 103411)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -42,29 +42,13 @@
Preferences.exposeWorkersInspection = true;
})();}
-WebInspector.platformExtensionAPI = function(tabId)
+function buildPlatformExtensionAPI(extensionInfo)
{
- function getTabId()
- {
- return tabId;
- }
- webInspector.inspectedWindow.__proto__.__defineGetter__("tabId", getTabId);
- chrome = window.chrome || {};
- chrome.experimental = chrome.experimental || {};
- chrome.experimental.devtools = chrome.experimental.devtools || {};
-
- var properties = Object.getOwnPropertyNames(webInspector);
- for (var i = 0; i < properties.length; ++i) {
- var descriptor = Object.getOwnPropertyDescriptor(webInspector, properties[i]);
- Object.defineProperty(chrome.experimental.devtools, properties[i], descriptor);
- }
+ return "var extensionInfo = " + JSON.stringify(extensionInfo) + ";" +
+ "var tabId = " + WebInspector._inspectedTabId + ";" +
+ platformExtensionAPI.toString();
}
-WebInspector.buildPlatformExtensionAPI = function()
-{
- return "(" + WebInspector.platformExtensionAPI + ")(" + WebInspector._inspectedTabId + ");";
-}
-
WebInspector.setInspectedTabId = function(tabId)
{
WebInspector._inspectedTabId = tabId;
Added: trunk/Source/WebKit/chromium/src/js/DevToolsExtensionAPI.js (0 => 103411)
--- trunk/Source/WebKit/chromium/src/js/DevToolsExtensionAPI.js (rev 0)
+++ trunk/Source/WebKit/chromium/src/js/DevToolsExtensionAPI.js 2011-12-21 17:20:43 UTC (rev 103411)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+function platformExtensionAPI(coreAPI)
+{
+ function getTabId()
+ {
+ return tabId;
+ }
+ chrome = window.chrome || {};
+ // Override chrome.devtools as a workaround for a error-throwing getter being exposed
+ // in extension pages loaded into a non-extension process (only happens for remote client
+ // extensions)
+ var devtools_descriptor = Object.getOwnPropertyDescriptor(chrome, "devtools");
+ if (!devtools_descriptor || devtools_descriptor.get)
+ Object.defineProperty(chrome, "devtools", { value: {}, enumerable: true });
+ // Only expose tabId on chrome.devtools.inspectedWindow, not webInspector.inspectedWindow.
+ chrome.devtools.inspectedWindow = {};
+ chrome.devtools.inspectedWindow.__defineGetter__("tabId", getTabId);
+ chrome.devtools.inspectedWindow.__proto__ = coreAPI.inspectedWindow;
+ chrome.devtools.network = coreAPI.network;
+ chrome.devtools.panels = coreAPI.panels;
+
+ // default to expose experimental APIs for now.
+ if (extensionInfo.exposeExperimentalAPIs !== false) {
+ chrome.experimental = chrome.experimental || {};
+ chrome.experimental.devtools = chrome.experimental.devtools || {};
+
+ var properties = Object.getOwnPropertyNames(coreAPI);
+ for (var i = 0; i < properties.length; ++i) {
+ var descriptor = Object.getOwnPropertyDescriptor(coreAPI, properties[i]);
+ Object.defineProperty(chrome.experimental.devtools, properties[i], descriptor);
+ }
+ chrome.experimental.devtools.inspectedWindow = chrome.devtools.inspectedWindow;
+ }
+ if (extensionInfo.exposeWebInspectorNamespace)
+ window.webInspector = coreAPI;
+}
Property changes on: trunk/Source/WebKit/chromium/src/js/DevToolsExtensionAPI.js
___________________________________________________________________
Added: svn:eol-style