diff options
Diffstat (limited to '')
-rw-r--r-- | devtools/client/application/src/modules/application-services.js | 85 | ||||
-rw-r--r-- | devtools/client/application/src/modules/l10n.js | 12 | ||||
-rw-r--r-- | devtools/client/application/src/modules/moz.build | 8 |
3 files changed, 105 insertions, 0 deletions
diff --git a/devtools/client/application/src/modules/application-services.js b/devtools/client/application/src/modules/application-services.js new file mode 100644 index 0000000000..e51caa585b --- /dev/null +++ b/devtools/client/application/src/modules/application-services.js @@ -0,0 +1,85 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +// keyword to use in telemetry, as `reason` parameter +const REASON = "application"; + +class ManifestDevToolsError extends Error { + constructor(...params) { + super(...params); + + this.name = "ManifestDevToolsError"; + } +} + +class ApplicationServices { + init(toolbox) { + this._toolbox = toolbox; + + this.features = { + doesDebuggerSupportWorkers: Services.prefs.getBoolPref( + "devtools.debugger.features.windowless-service-workers", + false + ), + }; + } + + selectTool(toolId) { + this._assertInit(); + return this._toolbox.selectTool(toolId, REASON); + } + + async openWorkerInDebugger(workerDescriptorFront) { + const debuggerPanel = await this.selectTool("jsdebugger"); + debuggerPanel.selectWorker(workerDescriptorFront); + } + + async viewWorkerSource(workerDescriptorFront) { + // NOTE: this falls back to view-source: if the source can't be inspected + // within the debugger. + this._toolbox.viewSourceInDebugger( + workerDescriptorFront.url, + 1, + 1, + null, + REASON + ); + } + + async fetchManifest() { + let response; + + try { + this._assertInit(); + const manifestFront = await this._toolbox.target.getFront("manifest"); + response = await manifestFront.fetchCanonicalManifest(); + } catch (error) { + throw new ManifestDevToolsError( + error.message, + error.fileName, + error.lineNumber + ); + } + + if (response.errorMessage) { + throw new Error(response.errorMessage); + } + + return response.manifest; + } + + _assertInit() { + if (!this._toolbox) { + throw new Error("Services singleton has not been initialized"); + } + } +} + +module.exports = { + ManifestDevToolsError, + // exports a singleton, which will be used across all application panel modules + services: new ApplicationServices(), +}; diff --git a/devtools/client/application/src/modules/l10n.js b/devtools/client/application/src/modules/l10n.js new file mode 100644 index 0000000000..21e300cb38 --- /dev/null +++ b/devtools/client/application/src/modules/l10n.js @@ -0,0 +1,12 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { + FluentL10n, +} = require("resource://devtools/client/shared/fluent-l10n/fluent-l10n.js"); + +// exports a singleton, which will be used across all application panel modules +exports.l10n = new FluentL10n(); diff --git a/devtools/client/application/src/modules/moz.build b/devtools/client/application/src/modules/moz.build new file mode 100644 index 0000000000..778345fb1f --- /dev/null +++ b/devtools/client/application/src/modules/moz.build @@ -0,0 +1,8 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DevToolsModules( + "application-services.js", + "l10n.js", +) |