fune/toolkit/components/extensions/test/browser/browser_ext_themes_persistence.js

52 lines
1.6 KiB
JavaScript

"use strict";
// This test checks whether applied WebExtension themes are persisted and applied
// on newly opened windows.
add_task(async function setup() {
await SpecialPowers.pushPrefEnv({
set: [["extensions.webextensions.themes.enabled", true]],
});
});
add_task(async function test_multiple_windows() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"theme": {
"images": {
"headerURL": "image1.png",
},
"colors": {
"accentcolor": ACCENT_COLOR,
"textcolor": TEXT_COLOR,
},
},
},
files: {
"image1.png": BACKGROUND,
},
});
await extension.startup();
let docEl = window.document.documentElement;
let style = window.getComputedStyle(docEl);
Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set");
Assert.equal(docEl.getAttribute("lwthemetextcolor"), "bright",
"LWT text color attribute should be set");
Assert.ok(style.backgroundImage.includes("image1.png"), "Expected background image");
// Now we'll open a new window to see if the theme is also applied there.
let window2 = await BrowserTestUtils.openNewBrowserWindow();
docEl = window2.document.documentElement;
style = window2.getComputedStyle(docEl);
Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set");
Assert.equal(docEl.getAttribute("lwthemetextcolor"), "bright",
"LWT text color attribute should be set");
Assert.ok(style.backgroundImage.includes("image1.png"), "Expected background image");
await BrowserTestUtils.closeWindow(window2);
await extension.unload();
});