diff options
Diffstat (limited to 'addon-sdk/source/test/fixtures/bootstrap/utils.js')
-rw-r--r-- | addon-sdk/source/test/fixtures/bootstrap/utils.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/addon-sdk/source/test/fixtures/bootstrap/utils.js b/addon-sdk/source/test/fixtures/bootstrap/utils.js new file mode 100644 index 000000000..aa7ea2d18 --- /dev/null +++ b/addon-sdk/source/test/fixtures/bootstrap/utils.js @@ -0,0 +1,52 @@ +/* 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 { Cu, Cc, Ci } = require("chrome"); +const { evaluate } = require("sdk/loader/sandbox"); + +const ROOT = require.resolve("sdk/base64").replace("/sdk/base64.js", ""); + +// Note: much of this test code is from +// http://dxr.mozilla.org/mozilla-central/source/toolkit/mozapps/extensions/internal/XPIProvider.jsm +const BOOTSTRAP_REASONS = { + APP_STARTUP : 1, + APP_SHUTDOWN : 2, + ADDON_ENABLE : 3, + ADDON_DISABLE : 4, + ADDON_INSTALL : 5, + ADDON_UNINSTALL : 6, + ADDON_UPGRADE : 7, + ADDON_DOWNGRADE : 8 +}; + +function createBootstrapScope(options) { + let { uri, id: aId } = options; + let principal = Cc["@mozilla.org/systemprincipal;1"]. + createInstance(Ci.nsIPrincipal); + + let bootstrapScope = new Cu.Sandbox(principal, { + sandboxName: uri, + wantGlobalProperties: ["indexedDB"], + addonId: aId, + metadata: { addonID: aId, URI: uri } + }); + + // Copy the reason values from the global object into the bootstrap scope. + for (let name in BOOTSTRAP_REASONS) + bootstrapScope[name] = BOOTSTRAP_REASONS[name]; + + return bootstrapScope; +} +exports.create = createBootstrapScope; + +function evaluateBootstrap(options) { + let { uri, scope } = options; + + evaluate(scope, + `${"Components"}.classes['@mozilla.org/moz/jssubscript-loader;1'] + .createInstance(${"Components"}.interfaces.mozIJSSubScriptLoader) + .loadSubScript("${uri}");`, "ECMAv5"); +} +exports.evaluate = evaluateBootstrap; |