From a611092efe6d4e2928bdd51089ac636eb7ecb958 Mon Sep 17 00:00:00 2001 From: Tim van der Lippe Date: Thu, 9 Jan 2020 15:38:39 +0000 Subject: [PATCH] Migrate extensions/ to ESM internally Bug: 1006759 Change-Id: I5a21c9cc7510dad06903f24f06a0cde23473f532 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/1991633 Commit-Queue: Tim van der Lippe Reviewed-by: Paul Lewis --- BUILD.gn | 2 + front_end/extensions/ExtensionAPI.js | 11 +--- front_end/extensions/ExtensionPanel.js | 33 ++++------- front_end/extensions/ExtensionServer.js | 56 ++++++------------- .../extensions/ExtensionTraceProvider.js | 14 +---- front_end/extensions/ExtensionView.js | 22 ++------ front_end/extensions/extensions-legacy.js | 49 ++++++++++++++++ front_end/extensions/extensions.js | 3 +- front_end/extensions/module.json | 1 + 9 files changed, 91 insertions(+), 100 deletions(-) create mode 100644 front_end/extensions/extensions-legacy.js diff --git a/BUILD.gn b/BUILD.gn index 7e649924da..f050c784ca 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -658,6 +658,7 @@ all_devtools_modules = [ "front_end/extensions/ExtensionAPI.js", "front_end/extensions/ExtensionPanel.js", "front_end/extensions/extensions.js", + "front_end/extensions/extensions-legacy.js", "front_end/extensions/ExtensionServer.js", "front_end/extensions/ExtensionTraceProvider.js", "front_end/extensions/ExtensionView.js", @@ -1527,6 +1528,7 @@ copied_devtools_modules = [ "$resources_out_dir/extensions/ExtensionAPI.js", "$resources_out_dir/extensions/ExtensionPanel.js", "$resources_out_dir/extensions/extensions.js", + "$resources_out_dir/extensions/extensions-legacy.js", "$resources_out_dir/extensions/ExtensionServer.js", "$resources_out_dir/extensions/ExtensionTraceProvider.js", "$resources_out_dir/extensions/ExtensionView.js", diff --git a/front_end/extensions/ExtensionAPI.js b/front_end/extensions/ExtensionAPI.js index c6813adaf7..22d5e1b92a 100644 --- a/front_end/extensions/ExtensionAPI.js +++ b/front_end/extensions/ExtensionAPI.js @@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -function defineCommonExtensionSymbols(apiPrivate) { +export function defineCommonExtensionSymbols(apiPrivate) { if (!apiPrivate.panels) { apiPrivate.panels = {}; } @@ -858,12 +858,3 @@ self.buildExtensionAPIInjectedScript = function(extensionInfo, inspectedTabId, t '(' + self.injectedExtensionAPI.toString() + ')(' + argumentsJSON + ',' + testHook + ', injectedScriptId);' + '})'; }; - -/* Legacy exported object */ -self.Extensions = self.Extensions || {}; - -/* Legacy exported object */ -Extensions = Extensions || {}; - -Extensions.extensionAPI = {}; -defineCommonExtensionSymbols(Extensions.extensionAPI); diff --git a/front_end/extensions/ExtensionPanel.js b/front_end/extensions/ExtensionPanel.js index 7a9ceca4d2..4b173e7aa4 100644 --- a/front_end/extensions/ExtensionPanel.js +++ b/front_end/extensions/ExtensionPanel.js @@ -27,13 +27,17 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +import {ExtensionServer} from './ExtensionServer.js'; // eslint-disable-line no-unused-vars +import {ExtensionNotifierView, ExtensionView} from './ExtensionView.js'; + /** * @implements {UI.Searchable} * @unrestricted */ -export default class ExtensionPanel extends UI.Panel { +export class ExtensionPanel extends UI.Panel { /** - * @param {!Extensions.ExtensionServer} server + * @param {!ExtensionServer} server * @param {string} panelName * @param {string} id * @param {string} pageURL @@ -48,7 +52,7 @@ export default class ExtensionPanel extends UI.Panel { this._searchableView = new UI.SearchableView(this); this._searchableView.show(this.element); - const extensionView = new Extensions.ExtensionView(server, this._id, pageURL, 'extension'); + const extensionView = new ExtensionView(server, this._id, pageURL, 'extension'); extensionView.show(this._searchableView.element); } @@ -123,7 +127,7 @@ export default class ExtensionPanel extends UI.Panel { */ export class ExtensionButton { /** - * @param {!Extensions.ExtensionServer} server + * @param {!ExtensionServer} server * @param {string} id * @param {string} iconURL * @param {string=} tooltip @@ -168,7 +172,7 @@ export class ExtensionButton { */ export class ExtensionSidebarPane extends UI.SimpleView { /** - * @param {!Extensions.ExtensionServer} server + * @param {!ExtensionServer} server * @param {string} panelName * @param {string} title * @param {string} id @@ -230,7 +234,7 @@ export class ExtensionSidebarPane extends UI.SimpleView { this._extensionView.detach(true); } - this._extensionView = new Extensions.ExtensionView(this._server, this._id, url, 'extension fill'); + this._extensionView = new ExtensionView(this._server, this._id, url, 'extension fill'); this._extensionView.show(this.element); if (!this.element.style.height) { @@ -268,7 +272,7 @@ export class ExtensionSidebarPane extends UI.SimpleView { this._extensionView.detach(true); delete this._extensionView; } - this._objectPropertiesView = new Extensions.ExtensionNotifierView(this._server, this._id); + this._objectPropertiesView = new ExtensionNotifierView(this._server, this._id); this._objectPropertiesView.show(this.element); } @@ -297,18 +301,3 @@ export class ExtensionSidebarPane extends UI.SimpleView { }); } } - -/* Legacy exported object */ -self.Extensions = self.Extensions || {}; - -/* Legacy exported object */ -Extensions = Extensions || {}; - -/** @constructor */ -Extensions.ExtensionPanel = ExtensionPanel; - -/** @constructor */ -Extensions.ExtensionButton = ExtensionButton; - -/** @constructor */ -Extensions.ExtensionSidebarPane = ExtensionSidebarPane; diff --git a/front_end/extensions/ExtensionServer.js b/front_end/extensions/ExtensionServer.js index e6a8f1fb38..0487b632dc 100644 --- a/front_end/extensions/ExtensionServer.js +++ b/front_end/extensions/ExtensionServer.js @@ -28,10 +28,13 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import {ExtensionButton, ExtensionPanel, ExtensionSidebarPane} from './ExtensionPanel.js'; +import {ExtensionTraceProvider, TracingSession} from './ExtensionTraceProvider.js'; // eslint-disable-line no-unused-vars + /** * @unrestricted */ -export default class ExtensionServer extends Common.Object { +export class ExtensionServer extends Common.Object { /** * @suppressGlobalPropertiesCheck */ @@ -47,11 +50,11 @@ export default class ExtensionServer extends Common.Object { this._lastRequestId = 0; this._registeredExtensions = {}; this._status = new ExtensionStatus(); - /** @type {!Array} */ + /** @type {!Array} */ this._sidebarPanes = []; - /** @type {!Array} */ + /** @type {!Array} */ this._traceProviders = []; - /** @type {!Map} */ + /** @type {!Map} */ this._traceSessions = new Map(); const commands = Extensions.extensionAPI.Commands; @@ -149,7 +152,7 @@ export default class ExtensionServer extends Common.Object { /** * @param {string} providerId * @param {string} sessionId - * @param {!Extensions.TracingSession} session + * @param {!TracingSession} session */ startTraceRecording(providerId, sessionId, session) { this._traceSessions.set(sessionId, session); @@ -270,8 +273,8 @@ export default class ExtensionServer extends Common.Object { const page = this._expandResourcePath(port._extensionOrigin, message.page); let persistentId = port._extensionOrigin + message.title; persistentId = persistentId.replace(/\s/g, ''); - const panelView = new ExtensionServerPanelView( - persistentId, message.title, new Extensions.ExtensionPanel(this, persistentId, id, page)); + const panelView = + new ExtensionServerPanelView(persistentId, message.title, new ExtensionPanel(this, persistentId, id, page)); this._clientObjects[id] = panelView; UI.inspectorView.addPanel(panelView); return this._status.OK(); @@ -291,7 +294,7 @@ export default class ExtensionServer extends Common.Object { if (!panelView || !(panelView instanceof ExtensionServerPanelView)) { return this._status.E_NOTFOUND(message.panel); } - const button = new Extensions.ExtensionButton( + const button = new ExtensionButton( this, message.id, this._expandResourcePath(port._extensionOrigin, message.icon), message.tooltip, message.disabled); this._clientObjects[message.id] = button; @@ -302,7 +305,7 @@ export default class ExtensionServer extends Common.Object { * @param {!UI.Widget} panel */ function appendButton(panel) { - /** @type {!Extensions.ExtensionPanel} panel*/ (panel).addToolbarItem(button.toolbarButton()); + /** @type {!ExtensionPanel} panel*/ (panel).addToolbarItem(button.toolbarButton()); } return this._status.OK(); @@ -310,7 +313,7 @@ export default class ExtensionServer extends Common.Object { _onUpdateButton(message, port) { const button = this._clientObjects[message.id]; - if (!button || !(button instanceof Extensions.ExtensionButton)) { + if (!button || !(button instanceof ExtensionButton)) { return this._status.E_NOTFOUND(message.id); } button.update(this._expandResourcePath(port._extensionOrigin, message.icon), message.tooltip, message.disabled); @@ -334,7 +337,7 @@ export default class ExtensionServer extends Common.Object { return this._status.E_NOTFOUND(message.panel); } const id = message.id; - const sidebar = new Extensions.ExtensionSidebarPane(this, message.panel, message.title, id); + const sidebar = new ExtensionSidebarPane(this, message.panel, message.title, id); this._sidebarPanes.push(sidebar); this._clientObjects[id] = sidebar; this.dispatchEventToListeners(Events.SidebarPaneAdded, sidebar); @@ -343,7 +346,7 @@ export default class ExtensionServer extends Common.Object { } /** - * @return {!Array.} + * @return {!Array.} */ sidebarPanes() { return this._sidebarPanes; @@ -569,15 +572,15 @@ export default class ExtensionServer extends Common.Object { * @param {!MessagePort} port */ _onAddTraceProvider(message, port) { - const provider = new Extensions.ExtensionTraceProvider( - port._extensionOrigin, message.id, message.categoryName, message.categoryTooltip); + const provider = + new ExtensionTraceProvider(port._extensionOrigin, message.id, message.categoryName, message.categoryTooltip); this._clientObjects[message.id] = provider; this._traceProviders.push(provider); this.dispatchEventToListeners(Events.TraceProviderAdded, provider); } /** - * @return {!Array} + * @return {!Array} */ traceProviders() { return this._traceProviders; @@ -1023,26 +1026,3 @@ export class ExtensionStatus { this.E_FAILED = makeStatus.bind(null, 'E_FAILED', 'Operation failed: %s'); } } - -/* Legacy exported object */ -self.Extensions = self.Extensions || {}; - -/* Legacy exported object */ -Extensions = Extensions || {}; - -/** @constructor */ -Extensions.ExtensionServer = ExtensionServer; - -/** @enum {symbol} */ -Extensions.ExtensionServer.Events = Events; - -/** @constructor */ -Extensions.ExtensionStatus = ExtensionStatus; - -/** - * @typedef {{code: string, description: string, details: !Array.<*>}} - */ -Extensions.ExtensionStatus.Record; - -/** @type {!ExtensionServer} */ -Extensions.extensionServer; diff --git a/front_end/extensions/ExtensionTraceProvider.js b/front_end/extensions/ExtensionTraceProvider.js index de305ccebe..999621bd9b 100644 --- a/front_end/extensions/ExtensionTraceProvider.js +++ b/front_end/extensions/ExtensionTraceProvider.js @@ -5,7 +5,7 @@ /** * @unrestricted */ -export default class ExtensionTraceProvider { +export class ExtensionTraceProvider { /** * @param {string} extensionOrigin * @param {string} id @@ -66,15 +66,3 @@ export class TracingSession { complete(url, timeOffsetMicroseconds) { } } - -/* Legacy exported object */ -self.Extensions = self.Extensions || {}; - -/* Legacy exported object */ -Extensions = Extensions || {}; - -/** @constructor */ -Extensions.ExtensionTraceProvider = ExtensionTraceProvider; - -/** @interface */ -Extensions.TracingSession = TracingSession; diff --git a/front_end/extensions/ExtensionView.js b/front_end/extensions/ExtensionView.js index 03641a7efc..cc83450fb7 100644 --- a/front_end/extensions/ExtensionView.js +++ b/front_end/extensions/ExtensionView.js @@ -28,12 +28,14 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import {ExtensionServer} from './ExtensionServer.js'; // eslint-disable-line no-unused-vars + /** * @unrestricted - */ -export default class ExtensionView extends UI.Widget { +*/ +export class ExtensionView extends UI.Widget { /** - * @param {!Extensions.ExtensionServer} server + * @param {!ExtensionServer} server * @param {string} id * @param {string} src * @param {string} className @@ -91,7 +93,7 @@ export default class ExtensionView extends UI.Widget { */ export class ExtensionNotifierView extends UI.VBox { /** - * @param {!Extensions.ExtensionServer} server + * @param {!ExtensionServer} server * @param {string} id */ constructor(server, id) { @@ -115,15 +117,3 @@ export class ExtensionNotifierView extends UI.VBox { this._server.notifyViewHidden(this._id); } } - -/* Legacy exported object */ -self.Extensions = self.Extensions || {}; - -/* Legacy exported object */ -Extensions = Extensions || {}; - -/** @constructor */ -Extensions.ExtensionView = ExtensionView; - -/** @constructor */ -Extensions.ExtensionNotifierView = ExtensionNotifierView; diff --git a/front_end/extensions/extensions-legacy.js b/front_end/extensions/extensions-legacy.js new file mode 100644 index 0000000000..b07e5a795c --- /dev/null +++ b/front_end/extensions/extensions-legacy.js @@ -0,0 +1,49 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import * as ExtensionsModule from './extensions.js'; + +self.Extensions = self.Extensions || {}; +Extensions = Extensions || {}; + +Extensions.extensionAPI = {}; +ExtensionsModule.ExtensionAPI.defineCommonExtensionSymbols(Extensions.extensionAPI); + +/** @constructor */ +Extensions.ExtensionPanel = ExtensionsModule.ExtensionPanel.ExtensionPanel; + +/** @constructor */ +Extensions.ExtensionButton = ExtensionsModule.ExtensionPanel.ExtensionButton; + +/** @constructor */ +Extensions.ExtensionSidebarPane = ExtensionsModule.ExtensionPanel.ExtensionSidebarPane; + +/** @constructor */ +Extensions.ExtensionServer = ExtensionsModule.ExtensionServer.ExtensionServer; + +/** @enum {symbol} */ +Extensions.ExtensionServer.Events = ExtensionsModule.ExtensionServer.Events; + +/** @constructor */ +Extensions.ExtensionStatus = ExtensionsModule.ExtensionServer.ExtensionStatus; + +/** @constructor */ +Extensions.ExtensionTraceProvider = ExtensionsModule.ExtensionTraceProvider.ExtensionTraceProvider; + +/** @interface */ +Extensions.TracingSession = ExtensionsModule.ExtensionTraceProvider.TracingSession; + +/** @constructor */ +Extensions.ExtensionView = ExtensionsModule.ExtensionView.ExtensionView; + +/** @constructor */ +Extensions.ExtensionNotifierView = ExtensionsModule.ExtensionView.ExtensionNotifierView; + +/** + * @typedef {{code: string, description: string, details: !Array.<*>}} + */ +Extensions.ExtensionStatus.Record; + +/** @type {!Extensions.ExtensionServer} */ +Extensions.extensionServer; diff --git a/front_end/extensions/extensions.js b/front_end/extensions/extensions.js index 71c229ec26..37d02899b3 100644 --- a/front_end/extensions/extensions.js +++ b/front_end/extensions/extensions.js @@ -2,13 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import './ExtensionAPI.js'; +import * as ExtensionAPI from './ExtensionAPI.js'; import * as ExtensionPanel from './ExtensionPanel.js'; import * as ExtensionServer from './ExtensionServer.js'; import * as ExtensionTraceProvider from './ExtensionTraceProvider.js'; import * as ExtensionView from './ExtensionView.js'; export { + ExtensionAPI, ExtensionPanel, ExtensionServer, ExtensionTraceProvider, diff --git a/front_end/extensions/module.json b/front_end/extensions/module.json index 3695a2574b..97c2ae4df1 100644 --- a/front_end/extensions/module.json +++ b/front_end/extensions/module.json @@ -7,6 +7,7 @@ "scripts": [], "modules": [ "extensions.js", + "extensions-legacy.js", "ExtensionAPI.js", "ExtensionTraceProvider.js", "ExtensionServer.js",