diff options
Diffstat (limited to 'addon-sdk/source/lib/dev/toolbox.js')
-rw-r--r-- | addon-sdk/source/lib/dev/toolbox.js | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/addon-sdk/source/lib/dev/toolbox.js b/addon-sdk/source/lib/dev/toolbox.js deleted file mode 100644 index 43f37759f..000000000 --- a/addon-sdk/source/lib/dev/toolbox.js +++ /dev/null @@ -1,107 +0,0 @@ -/* 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"; - -module.metadata = { - "stability": "experimental" -}; - -const { Cu, Cc, Ci } = require("chrome"); -const { Class } = require("../sdk/core/heritage"); -const { Disposable, setup } = require("../sdk/core/disposable"); -const { contract, validate } = require("../sdk/util/contract"); -const { each, pairs, values } = require("../sdk/util/sequence"); -const { onEnable, onDisable } = require("../dev/theme/hooks"); - -const { gDevTools } = Cu.import("resource://devtools/client/framework/gDevTools.jsm", {}); - -// This is temporary workaround to allow loading of the developer tools client - volcan -// into a toolbox panel, this hack won't be necessary as soon as devtools patch will be -// shipped in nightly, after which it can be removed. Bug 1038517 -const registerSDKURI = () => { - const ioService = Cc['@mozilla.org/network/io-service;1'] - .getService(Ci.nsIIOService); - const resourceHandler = ioService.getProtocolHandler("resource") - .QueryInterface(Ci.nsIResProtocolHandler); - - const uri = module.uri.replace("dev/toolbox.js", ""); - resourceHandler.setSubstitution("sdk", ioService.newURI(uri, null, null)); -}; - -registerSDKURI(); - -const Tool = Class({ - extends: Disposable, - setup: function(params={}) { - const { panels } = validate(this, params); - const { themes } = validate(this, params); - - this.panels = panels; - this.themes = themes; - - each(([key, Panel]) => { - const { url, label, tooltip, icon, invertIconForLightTheme, - invertIconForDarkTheme } = validate(Panel.prototype); - const { id } = Panel.prototype; - - gDevTools.registerTool({ - id: id, - url: "about:blank", - label: label, - tooltip: tooltip, - icon: icon, - invertIconForLightTheme: invertIconForLightTheme, - invertIconForDarkTheme: invertIconForDarkTheme, - isTargetSupported: target => target.isLocalTab, - build: (window, toolbox) => { - const panel = new Panel(); - setup(panel, { window: window, - toolbox: toolbox, - url: url }); - - return panel.ready(); - } - }); - }, pairs(panels)); - - each(([key, theme]) => { - validate(theme); - setup(theme); - - gDevTools.registerTheme({ - id: theme.id, - label: theme.label, - stylesheets: theme.getStyles(), - classList: theme.getClassList(), - onApply: (window, oldTheme) => { - onEnable(theme, { window: window, - oldTheme: oldTheme }); - }, - onUnapply: (window, newTheme) => { - onDisable(theme, { window: window, - newTheme: newTheme }); - } - }); - }, pairs(themes)); - }, - dispose: function() { - each(Panel => gDevTools.unregisterTool(Panel.prototype.id), - values(this.panels)); - - each(Theme => gDevTools.unregisterTheme(Theme.prototype.id), - values(this.themes)); - } -}); - -validate.define(Tool, contract({ - panels: { - is: ["object", "undefined"] - }, - themes: { - is: ["object", "undefined"] - } -})); - -exports.Tool = Tool; |