| Index: chrome_linux64/resources/inspector/devtools_extension_api.js
|
| ===================================================================
|
| --- chrome_linux64/resources/inspector/devtools_extension_api.js (revision 273864)
|
| +++ chrome_linux64/resources/inspector/devtools_extension_api.js (working copy)
|
| @@ -250,12 +250,12 @@
|
| }
|
| callback(result);
|
| }
|
| - return extensionServer.sendRequest({ command: commands.GetHAR }, callback && callbackWrapper);
|
| + extensionServer.sendRequest({ command: commands.GetHAR }, callback && callbackWrapper);
|
| },
|
|
|
| addRequestHeaders: function(headers)
|
| {
|
| - return extensionServer.sendRequest({ command: commands.AddRequestHeaders, headers: headers, extensionId: window.location.hostname });
|
| + extensionServer.sendRequest({ command: commands.AddRequestHeaders, headers: headers, extensionId: window.location.hostname });
|
| }
|
| }
|
|
|
| @@ -365,16 +365,21 @@
|
| else
|
| this._fire();
|
| }
|
| - this.onShown = new EventSink(events.ViewShown + id, dispatchShowEvent);
|
| - this.onHidden = new EventSink(events.ViewHidden + id);
|
| +
|
| + if (id) {
|
| + this.onShown = new EventSink(events.ViewShown + id, dispatchShowEvent);
|
| + this.onHidden = new EventSink(events.ViewHidden + id);
|
| + }
|
| }
|
|
|
| /**
|
| * @constructor
|
| * @extends {ExtensionViewImpl}
|
| + * @param {string} hostPanelName
|
| */
|
| function PanelWithSidebarImpl(hostPanelName)
|
| {
|
| + ExtensionViewImpl.call(this, null);
|
| this._hostPanelName = hostPanelName;
|
| this.onSelectionChanged = new EventSink(events.PanelObjectSelected + hostPanelName);
|
| }
|
| @@ -477,6 +482,9 @@
|
| }
|
|
|
| ExtensionPanelImpl.prototype = {
|
| + /**
|
| + * @return {!Object}
|
| + */
|
| createStatusBarButton: function(iconPath, tooltipText, disabled)
|
| {
|
| var id = "button-" + extensionServer.nextObjectId();
|
| @@ -580,6 +588,9 @@
|
| }
|
|
|
| Audits.prototype = {
|
| + /**
|
| + * @return {!AuditCategory}
|
| + */
|
| addCategory: function(displayName, resultCount)
|
| {
|
| var id = "extension-audit-category-" + extensionServer.nextObjectId();
|
| @@ -619,11 +630,11 @@
|
| {
|
| this._id = id;
|
|
|
| - this.createURL = this._nodeFactory.bind(null, "url");
|
| - this.createSnippet = this._nodeFactory.bind(null, "snippet");
|
| - this.createText = this._nodeFactory.bind(null, "text");
|
| - this.createObject = this._nodeFactory.bind(null, "object");
|
| - this.createNode = this._nodeFactory.bind(null, "node");
|
| + this.createURL = this._nodeFactory.bind(this, "url");
|
| + this.createSnippet = this._nodeFactory.bind(this, "snippet");
|
| + this.createText = this._nodeFactory.bind(this, "text");
|
| + this.createObject = this._nodeFactory.bind(this, "object");
|
| + this.createNode = this._nodeFactory.bind(this, "node");
|
| }
|
|
|
| AuditResultImpl.prototype = {
|
| @@ -644,6 +655,9 @@
|
| extensionServer.sendRequest(request);
|
| },
|
|
|
| + /**
|
| + * @return {!Object}
|
| + */
|
| createResult: function()
|
| {
|
| return new AuditResultNode(Array.prototype.slice.call(arguments));
|
| @@ -659,11 +673,17 @@
|
| extensionServer.sendRequest({ command: commands.StopAuditCategoryRun, resultId: this._id });
|
| },
|
|
|
| + /**
|
| + * @type {!Object.<string, string>}
|
| + */
|
| get Severity()
|
| {
|
| return apiPrivate.audits.Severity;
|
| },
|
|
|
| + /**
|
| + * @return {!{type: string, arguments: !Array.<string|number>}}
|
| + */
|
| createResourceLink: function(url, lineNumber)
|
| {
|
| return {
|
| @@ -672,6 +692,9 @@
|
| };
|
| },
|
|
|
| + /**
|
| + * @return {!{type: string, arguments: !Array.<string|number>}}
|
| + */
|
| _nodeFactory: function(type)
|
| {
|
| return {
|
| @@ -692,6 +715,9 @@
|
| }
|
|
|
| AuditResultNode.prototype = {
|
| + /**
|
| + * @return {!Object}
|
| + */
|
| addChild: function()
|
| {
|
| var node = new AuditResultNode(Array.prototype.slice.call(arguments));
|
| @@ -736,9 +762,12 @@
|
| console.warn("Passing userAgent as string parameter to inspectedWindow.reload() is deprecated. " +
|
| "Use inspectedWindow.reload({ userAgent: value}) instead.");
|
| }
|
| - return extensionServer.sendRequest({ command: commands.Reload, options: options });
|
| + extensionServer.sendRequest({ command: commands.Reload, options: options });
|
| },
|
|
|
| + /**
|
| + * @return {?Object}
|
| + */
|
| eval: function(expression, evaluateOptions)
|
| {
|
| var callback = extractCallbackArgument(arguments);
|
| @@ -755,7 +784,8 @@
|
| };
|
| if (typeof evaluateOptions === "object")
|
| request.evaluateOptions = evaluateOptions;
|
| - return extensionServer.sendRequest(request, callback && callbackWrapper);
|
| + extensionServer.sendRequest(request, callback && callbackWrapper);
|
| + return null;
|
| },
|
|
|
| getResources: function(callback)
|
| @@ -768,7 +798,7 @@
|
| {
|
| callback(resources.map(wrapResource));
|
| }
|
| - return extensionServer.sendRequest({ command: commands.GetPageResources }, callback && callbackWrapper);
|
| + extensionServer.sendRequest({ command: commands.GetPageResources }, callback && callbackWrapper);
|
| }
|
| }
|
|
|
| @@ -799,12 +829,12 @@
|
| callback(response.content, response.encoding);
|
| }
|
|
|
| - return extensionServer.sendRequest({ command: commands.GetResourceContent, url: this._url }, callback && callbackWrapper);
|
| + extensionServer.sendRequest({ command: commands.GetResourceContent, url: this._url }, callback && callbackWrapper);
|
| },
|
|
|
| setContent: function(content, commit, callback)
|
| {
|
| - return extensionServer.sendRequest({ command: commands.SetResourceContent, url: this._url, content: content, commit: commit }, callback);
|
| + extensionServer.sendRequest({ command: commands.SetResourceContent, url: this._url, content: content, commit: commit }, callback);
|
| }
|
| }
|
|
|
| @@ -816,22 +846,38 @@
|
| this.onEventRecorded = new EventSink(events.TimelineEventRecorded);
|
| }
|
|
|
| +var keyboardEventRequestQueue = [];
|
| +var forwardTimer = null;
|
| +
|
| function forwardKeyboardEvent(event)
|
| {
|
| const Esc = "U+001B";
|
| // We only care about global hotkeys, not about random text
|
| if (!event.ctrlKey && !event.altKey && !event.metaKey && !/^F\d+$/.test(event.keyIdentifier) && event.keyIdentifier !== Esc)
|
| return;
|
| - var request = {
|
| - command: commands.ForwardKeyboardEvent,
|
| + var requestPayload = {
|
| eventType: event.type,
|
| ctrlKey: event.ctrlKey,
|
| altKey: event.altKey,
|
| metaKey: event.metaKey,
|
| keyIdentifier: event.keyIdentifier,
|
| - location: event.location
|
| + location: event.location,
|
| + keyCode: event.keyCode
|
| };
|
| + keyboardEventRequestQueue.push(requestPayload);
|
| + if (!forwardTimer)
|
| + forwardTimer = setTimeout(forwardEventQueue, 0);
|
| +}
|
| +
|
| +function forwardEventQueue()
|
| +{
|
| + forwardTimer = null;
|
| + var request = {
|
| + command: commands.ForwardKeyboardEvent,
|
| + entries: keyboardEventRequestQueue
|
| + };
|
| extensionServer.sendRequest(request);
|
| + keyboardEventRequestQueue = [];
|
| }
|
|
|
| document.addEventListener("keydown", forwardKeyboardEvent, false);
|
| @@ -865,9 +911,12 @@
|
| {
|
| if (typeof callback === "function")
|
| message.requestId = this._registerCallback(callback);
|
| - return this._port.postMessage(message);
|
| + this._port.postMessage(message);
|
| },
|
|
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| hasHandler: function(command)
|
| {
|
| return !!this._handlers[command];
|
| @@ -883,6 +932,9 @@
|
| delete this._handlers[command];
|
| },
|
|
|
| + /**
|
| + * @return {string}
|
| + */
|
| nextObjectId: function()
|
| {
|
| return injectedScriptId + "_" + ++this._lastObjectId;
|
| @@ -941,50 +993,8 @@
|
| }
|
|
|
| /**
|
| - * @param {!ExtensionDescriptor} extensionInfo
|
| - * @return {string}
|
| + * @suppress {checkVars, checkTypes}
|
| */
|
| -function buildExtensionAPIInjectedScript(extensionInfo)
|
| -{
|
| - return "(function(injectedScriptId){ " +
|
| - "var extensionServer;" +
|
| - defineCommonExtensionSymbols.toString() + ";" +
|
| - injectedExtensionAPI.toString() + ";" +
|
| - buildPlatformExtensionAPI(extensionInfo) + ";" +
|
| - "platformExtensionAPI(injectedExtensionAPI(injectedScriptId));" +
|
| - "return {};" +
|
| - "})";
|
| -}
|
| -/*
|
| - * 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()
|
| @@ -1021,6 +1031,33 @@
|
| window.webInspector = coreAPI;
|
| }
|
|
|
| +/**
|
| + * @param {!ExtensionDescriptor} extensionInfo
|
| + * @return {string}
|
| + */
|
| +function buildPlatformExtensionAPI(extensionInfo)
|
| +{
|
| + return "var extensionInfo = " + JSON.stringify(extensionInfo) + ";" +
|
| + "var tabId = " + WebInspector._inspectedTabId + ";" +
|
| + platformExtensionAPI.toString();
|
| +}
|
| +
|
| +/**
|
| + * @param {!ExtensionDescriptor} extensionInfo
|
| + * @return {string}
|
| + */
|
| +function buildExtensionAPIInjectedScript(extensionInfo)
|
| +{
|
| + return "(function(injectedScriptId){ " +
|
| + "var extensionServer;" +
|
| + defineCommonExtensionSymbols.toString() + ";" +
|
| + injectedExtensionAPI.toString() + ";" +
|
| + buildPlatformExtensionAPI(extensionInfo) + ";" +
|
| + "platformExtensionAPI(injectedExtensionAPI(injectedScriptId));" +
|
| + "return {};" +
|
| + "})";
|
| +}
|
| +
|
| var tabId;
|
| var extensionInfo = {};
|
| var extensionServer;
|
|
|