зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1434076: Follow-up: Add test for conflict between browserAction and bundled experiment. r=zombie a=test-only
--HG-- extra : rebase_source : 4612cdff82bac267c61aa5a249a19a71c21d70f1 extra : amend_source : 5e643c5b3543a7837f64d15df41a4bc3b28eff11
This commit is contained in:
Родитель
f40e76c04e
Коммит
3e279d936f
|
@ -39,6 +39,7 @@ support-files =
|
|||
../../../../../toolkit/components/reader/test/readerModeArticle.html
|
||||
|
||||
[browser_ext_browserAction_area.js]
|
||||
[browser_ext_browserAction_experiment.js]
|
||||
[browser_ext_browserAction_context.js]
|
||||
skip-if = os == 'win' || os == 'mac' # Bug 1405453
|
||||
[browser_ext_browserAction_contextMenu.js]
|
||||
|
|
|
@ -0,0 +1,137 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
"use strict";
|
||||
|
||||
let fooExperimentAPIs = {
|
||||
foo: {
|
||||
schema: "schema.json",
|
||||
parent: {
|
||||
scopes: ["addon_parent"],
|
||||
script: "parent.js",
|
||||
paths: [["experiments", "foo", "parent"]],
|
||||
},
|
||||
child: {
|
||||
scopes: ["addon_child"],
|
||||
script: "child.js",
|
||||
paths: [["experiments", "foo", "child"]],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
let fooExperimentFiles = {
|
||||
"schema.json": JSON.stringify([
|
||||
{
|
||||
"namespace": "experiments.foo",
|
||||
"types": [
|
||||
{
|
||||
"id": "Meh",
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
},
|
||||
],
|
||||
"functions": [
|
||||
{
|
||||
"name": "parent",
|
||||
"type": "function",
|
||||
"async": true,
|
||||
"parameters": [],
|
||||
},
|
||||
{
|
||||
"name": "child",
|
||||
"type": "function",
|
||||
"parameters": [],
|
||||
"returns": {"type": "string"},
|
||||
},
|
||||
],
|
||||
},
|
||||
]),
|
||||
|
||||
/* globals ExtensionAPI */
|
||||
"parent.js": () => {
|
||||
this.foo = class extends ExtensionAPI {
|
||||
getAPI(context) {
|
||||
return {
|
||||
experiments: {
|
||||
foo: {
|
||||
parent() {
|
||||
return Promise.resolve("parent");
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
"child.js": () => {
|
||||
this.foo = class extends ExtensionAPI {
|
||||
getAPI(context) {
|
||||
return {
|
||||
experiments: {
|
||||
foo: {
|
||||
child() {
|
||||
return "child";
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
async function testFooExperiment() {
|
||||
browser.test.assertEq("object", typeof browser.experiments,
|
||||
"typeof browser.experiments");
|
||||
|
||||
browser.test.assertEq("object", typeof browser.experiments.foo,
|
||||
"typeof browser.experiments.foo");
|
||||
|
||||
browser.test.assertEq("function", typeof browser.experiments.foo.child,
|
||||
"typeof browser.experiments.foo.child");
|
||||
|
||||
browser.test.assertEq("function", typeof browser.experiments.foo.parent,
|
||||
"typeof browser.experiments.foo.parent");
|
||||
|
||||
browser.test.assertEq("child", browser.experiments.foo.child(),
|
||||
"foo.child()");
|
||||
|
||||
browser.test.assertEq("parent", await browser.experiments.foo.parent(),
|
||||
"await foo.parent()");
|
||||
}
|
||||
|
||||
add_task(async function test_browseraction_with_experiment() {
|
||||
async function background() {
|
||||
await new Promise(resolve => browser.browserAction.onClicked.addListener(resolve));
|
||||
browser.test.log("Got browserAction.onClicked");
|
||||
|
||||
await testFooExperiment();
|
||||
|
||||
browser.test.notifyPass("background-browserAction-experiments.foo");
|
||||
}
|
||||
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
isPrivileged: true,
|
||||
|
||||
manifest: {
|
||||
browser_action: {},
|
||||
|
||||
experiment_apis: fooExperimentAPIs,
|
||||
},
|
||||
|
||||
background: `
|
||||
${testFooExperiment}
|
||||
(${background})();
|
||||
`,
|
||||
|
||||
files: fooExperimentFiles,
|
||||
});
|
||||
|
||||
await extension.startup();
|
||||
|
||||
await clickBrowserAction(extension, window);
|
||||
|
||||
await extension.awaitFinish("background-browserAction-experiments.foo");
|
||||
|
||||
await extension.unload();
|
||||
});
|
Загрузка…
Ссылка в новой задаче