зеркало из https://github.com/mozilla/gecko-dev.git
71 строка
2.0 KiB
JavaScript
71 строка
2.0 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 { Ci, Cu, Cc, components } = require("chrome");
|
|
const self = require("sdk/self");
|
|
const { before, after } = require("sdk/test/utils");
|
|
const fixtures = require("./fixtures");
|
|
const { Loader } = require("sdk/test/loader");
|
|
const { merge } = require("sdk/util/object");
|
|
|
|
exports["test changing result from addon extras in panel"] = function(assert, done) {
|
|
let loader = Loader(module, null, null, {
|
|
modules: {
|
|
"sdk/self": merge({}, self, {
|
|
data: merge({}, self.data, {url: fixtures.url})
|
|
})
|
|
}
|
|
});
|
|
|
|
const { Panel } = loader.require("sdk/panel");
|
|
const { events } = loader.require("sdk/content/sandbox/events");
|
|
const { on } = loader.require("sdk/event/core");
|
|
const { isAddonContent } = loader.require("sdk/content/utils");
|
|
|
|
var result = 1;
|
|
var extrasVal = {
|
|
test: function() {
|
|
return result;
|
|
}
|
|
};
|
|
|
|
on(events, "content-script-before-inserted", ({ window, worker }) => {
|
|
assert.pass("content-script-before-inserted");
|
|
|
|
if (isAddonContent({ contentURL: window.location.href })) {
|
|
let extraStuff = Cu.cloneInto(extrasVal, window, {
|
|
cloneFunctions: true
|
|
});
|
|
getUnsafeWindow(window).extras = extraStuff;
|
|
|
|
assert.pass("content-script-before-inserted done!");
|
|
}
|
|
});
|
|
|
|
let panel = Panel({
|
|
contentURL: "./test-addon-extras.html"
|
|
});
|
|
|
|
panel.port.once("result1", (result) => {
|
|
assert.equal(result, 1, "result is a number");
|
|
result = true;
|
|
panel.port.emit("get-result");
|
|
});
|
|
|
|
panel.port.once("result2", (result) => {
|
|
assert.equal(result, true, "result is a boolean");
|
|
loader.unload();
|
|
done();
|
|
});
|
|
|
|
panel.port.emit("get-result");
|
|
}
|
|
|
|
function getUnsafeWindow (win) {
|
|
return win.wrappedJSObject || win;
|
|
}
|
|
|
|
require("sdk/test").run(exports);
|