gecko-dev/addon-sdk/source/test/loader/b2g.js
Erik Vold eba25816af Bug 1114752 - Uplift Add-on SDK to Firefox a=me
--HG--
rename : addon-sdk/source/test/fixtures/test-page-worker.html => addon-sdk/source/test/addons/e10s-content/data/test-page-worker.html
rename : addon-sdk/source/test/fixtures/test-page-worker.js => addon-sdk/source/test/addons/e10s-content/data/test-page-worker.js
rename : addon-sdk/source/test/addons/places/favicon-helpers.js => addon-sdk/source/test/addons/places/lib/favicon-helpers.js
rename : addon-sdk/source/test/addons/places/httpd.js => addon-sdk/source/test/addons/places/lib/httpd.js
rename : addon-sdk/source/test/addons/places/places-helper.js => addon-sdk/source/test/addons/places/lib/places-helper.js
rename : addon-sdk/source/test/addons/places/tests/test-places-utils.js => addon-sdk/source/test/addons/places/lib/test-places-utils.js
rename : addon-sdk/source/test/fixtures/test-page-worker.html => addon-sdk/source/test/fixtures/addon-sdk/data/test-page-worker.html
rename : addon-sdk/source/test/fixtures/test-page-worker.js => addon-sdk/source/test/fixtures/addon-sdk/data/test-page-worker.js
2015-02-03 09:51:16 -08:00

41 lines
1.4 KiB
JavaScript

/* 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 {Cc, Ci, Cu} = require("chrome");
const {readURISync} = require("sdk/net/url");
const systemPrincipal = Cc["@mozilla.org/systemprincipal;1"].
createInstance(Ci.nsIPrincipal);
const FakeCu = function() {
const sandbox = Cu.Sandbox(systemPrincipal, {wantXrays: false});
sandbox.toString = function() {
return "[object BackstagePass]";
}
this.sandbox = sandbox;
}
FakeCu.prototype = {
["import"](url, scope) {
const {sandbox} = this;
sandbox.__URI__ = url;
const target = Cu.createObjectIn(sandbox);
target.toString = sandbox.toString;
Cu.evalInSandbox(`(function(){` + readURISync(url) + `\n})`,
sandbox, "1.8", url).call(target);
// Borrowed from mozJSComponentLoader.cpp to match errors closer.
// https://github.com/mozilla/gecko-dev/blob/f6ca65e8672433b2ce1a0e7c31f72717930b5e27/js/xpconnect/loader/mozJSComponentLoader.cpp#L1205-L1208
if (!Array.isArray(target.EXPORTED_SYMBOLS)) {
throw Error("EXPORTED_SYMBOLS is not an array.");
}
for (let key of target.EXPORTED_SYMBOLS) {
scope[key] = target[key];
}
return target;
}
};
exports.FakeCu = FakeCu;