Revision control
Copy as Markdown
Other Tools
/* 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
"use strict";
let gDefaultTabmail, gDefaultAbout3Pane, gDefaultMessagePane;
add_setup(async () => {
const account = createAccount();
const rootFolder = account.incomingServer.rootFolder;
const folder = await createSubfolder(
rootFolder,
"messageDisplayScriptsManifestMV3"
);
await createMessages(folder, 5);
gDefaultTabmail = document.getElementById("tabmail");
gDefaultAbout3Pane =
gDefaultTabmail.currentTabInfo.chromeBrowser.contentWindow;
gDefaultAbout3Pane.displayFolder(folder.URI);
gDefaultMessagePane =
gDefaultAbout3Pane.messageBrowser.contentDocument.getElementById(
"messagepane"
);
});
async function selectMessageAndWaitForScript(index) {
const scriptPromise = BrowserTestUtils.waitForEvent(
window,
"extension-scripts-added"
);
gDefaultAbout3Pane.threadTree.selectedIndex = index;
await scriptPromise;
}
add_task(async function test_manifest_message_display_scripts_mv3() {
const extension = ExtensionTestUtils.loadExtension({
files: {
"test.css": "body { background-color: green; }",
"test.js": () => {
document.body.setAttribute("foo", "bar");
},
},
manifest: {
manifest_version: 3,
message_display_scripts: [
{
css: ["test.css"],
js: ["test.js"],
},
],
permissions: ["messagesModify"],
},
});
gDefaultAbout3Pane.threadTree.selectedIndex = 0;
await awaitBrowserLoaded(gDefaultMessagePane);
await extension.startup();
await checkContent(gDefaultMessagePane, {
backgroundColor: "rgba(0, 0, 0, 0)",
});
await selectMessageAndWaitForScript(1);
await checkContent(gDefaultMessagePane, {
backgroundColor: "rgb(0, 128, 0)",
foo: "bar",
});
await extension.unload();
});