"use strict"; add_task(async function test_support_theme_frame() { const FRAME_COLOR = [71, 105, 91]; const TAB_TEXT_COLOR = [0, 0, 0]; let extension = ExtensionTestUtils.loadExtension({ manifest: { theme: { images: { theme_frame: "face.png", }, colors: { frame: FRAME_COLOR, tab_background_text: TAB_TEXT_COLOR, }, }, }, files: { "face.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA), }, }); await extension.startup(); let docEl = window.document.documentElement; Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set"); Assert.ok( docEl.hasAttribute("lwtheme-image"), "LWT image attribute should be set" ); Assert.equal( docEl.getAttribute("lwtheme-brighttext"), null, "LWT text color attribute should not be set" ); let toolbox = document.querySelector("#navigator-toolbox"); let toolboxCS = window.getComputedStyle(toolbox); Assert.ok( toolboxCS.backgroundImage.includes("face.png"), `The backgroundImage should use face.png. Actual value is: ${toolboxCS.backgroundImage}` ); Assert.equal( getToolboxBackgroundColor(), "rgb(" + FRAME_COLOR.join(", ") + ")", "Expected correct background color" ); Assert.equal( toolboxCS.color, "rgb(" + TAB_TEXT_COLOR.join(", ") + ")", "Expected correct text color" ); await extension.unload(); Assert.ok(!docEl.hasAttribute("lwtheme"), "LWT attribute should not be set"); Assert.ok( !docEl.hasAttribute("lwtheme-image"), "LWT image attribute should not be set" ); Assert.ok( !docEl.hasAttribute("lwtheme-brighttext"), "LWT text color attribute should not be set" ); }); add_task(async function test_support_theme_frame_inactive() { const FRAME_COLOR = [71, 105, 91]; const FRAME_COLOR_INACTIVE = [255, 0, 0]; const TAB_TEXT_COLOR = [207, 221, 192]; let extension = ExtensionTestUtils.loadExtension({ manifest: { theme: { images: { theme_frame: "image1.png", }, colors: { frame: FRAME_COLOR, frame_inactive: FRAME_COLOR_INACTIVE, tab_background_text: TAB_TEXT_COLOR, }, }, }, files: { "image1.png": BACKGROUND, }, }); await extension.startup(); let docEl = window.document.documentElement; Assert.equal( getToolboxBackgroundColor(), "rgb(" + FRAME_COLOR.join(", ") + ")", "Window background is set to the colors.frame property" ); // Now we'll open a new window to see if the inactive browser accent color changed let window2 = await BrowserTestUtils.openNewBrowserWindow(); Assert.equal( getToolboxBackgroundColor(), "rgb(" + FRAME_COLOR_INACTIVE.join(", ") + ")", `Inactive window background color should be ${FRAME_COLOR_INACTIVE}` ); await BrowserTestUtils.closeWindow(window2); await extension.unload(); Assert.ok(!docEl.hasAttribute("lwtheme"), "LWT attribute should not be set"); }); add_task(async function test_lack_of_theme_frame_inactive() { const FRAME_COLOR = [71, 105, 91]; const TAB_TEXT_COLOR = [207, 221, 192]; let extension = ExtensionTestUtils.loadExtension({ manifest: { theme: { images: { theme_frame: "image1.png", }, colors: { frame: FRAME_COLOR, tab_background_text: TAB_TEXT_COLOR, }, }, }, files: { "image1.png": BACKGROUND, }, }); await extension.startup(); let docEl = window.document.documentElement; Assert.equal( getToolboxBackgroundColor(), "rgb(" + FRAME_COLOR.join(", ") + ")", "Window background is set to the colors.frame property" ); // Now we'll open a new window to make sure the inactive browser accent color stayed the same let window2 = await BrowserTestUtils.openNewBrowserWindow(); Assert.equal( getToolboxBackgroundColor(), "rgb(" + FRAME_COLOR.join(", ") + ")", "Inactive window background should not change if colors.frame_inactive isn't set" ); await BrowserTestUtils.closeWindow(window2); await extension.unload(); Assert.ok(!docEl.hasAttribute("lwtheme"), "LWT attribute should not be set"); });