Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'win' && socketprocess_networking && fission OR os == 'mac' && socketprocess_networking && fission OR os == 'mac' && debug OR os == 'linux' && socketprocess_networking OR os == 'linux' && !fission OR os == 'android'
- Manifest: toolkit/components/extensions/test/xpcshell/xpcshell-remote.toml includes toolkit/components/extensions/test/xpcshell/xpcshell-common.toml
- Manifest: toolkit/components/extensions/test/xpcshell/xpcshell.toml includes toolkit/components/extensions/test/xpcshell/xpcshell-common.toml
"use strict";
const { createAppInfo } = AddonTestUtils;
AddonTestUtils.init(this);
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "49");
const server = createHttpServer();
server.registerDirectory("/data/", do_get_file("data"));
add_task(async function test_userscripts_register_cookieStoreId() {
async function background() {
const matches = ["<all_urls>"];
await browser.test.assertRejects(
browser.userScripts.register({
js: [{ code: "" }],
matches,
cookieStoreId: "not_a_valid_cookieStoreId",
}),
/Invalid cookieStoreId/,
"userScript.register with an invalid cookieStoreId"
);
await browser.test.assertRejects(
browser.userScripts.register({
js: [{ code: "" }],
matches,
cookieStoreId: "",
}),
/Invalid cookieStoreId/,
"userScripts.register with an invalid cookieStoreId"
);
let cookieStoreIdJSArray = [
{
id: "firefox-container-1",
code: `document.body.textContent += "1"`,
},
{
id: ["firefox-container-2", "firefox-container-3"],
code: `document.body.textContent += "2-3"`,
},
{
id: "firefox-private",
code: `document.body.textContent += "private"`,
},
{
id: "firefox-default",
code: `document.body.textContent += "default"`,
},
];
for (let { id, code } of cookieStoreIdJSArray) {
await browser.userScripts.register({
js: [{ code }],
matches,
runAt: "document_end",
cookieStoreId: id,
});
}
await browser.contentScripts.register({
js: [
{
code: `browser.test.sendMessage("last-content-script");`,
},
],
matches,
runAt: "document_end",
});
browser.test.sendMessage("background_ready");
}
const extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: ["<all_urls>"],
user_scripts: {},
},
background,
incognitoOverride: "spanning",
});
await extension.startup();
await extension.awaitMessage("background_ready");
registerCleanupFunction(() => extension.unload());
let testCases = [
{
contentPageOptions: { userContextId: 0 },
expectedTextContent: "default",
},
{
contentPageOptions: { userContextId: 1 },
expectedTextContent: "1",
},
{
contentPageOptions: { userContextId: 2 },
expectedTextContent: "2-3",
},
{
contentPageOptions: { userContextId: 3 },
expectedTextContent: "2-3",
},
{
contentPageOptions: { userContextId: 4 },
expectedTextContent: "",
},
{
contentPageOptions: { privateBrowsing: true },
expectedTextContent: "private",
},
];
for (let test of testCases) {
let contentPage = await ExtensionTestUtils.loadContentPage(
`${BASE_URL}/file_sample.html`,
test.contentPageOptions
);
await extension.awaitMessage("last-content-script");
let result = await contentPage.spawn([], () => {
let textContent = content.document.body.textContent;
// Omit the default content from file_sample.html.
return textContent.replace("\n\nSample text\n\n\n\n", "");
});
await contentPage.close();
equal(
result,
test.expectedTextContent,
`Expected textContent on content page`
);
}
});