/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* vim: set sts=2 sw=2 et tw=80: */ "use strict"; let extData = { manifest: { sidebar_action: { default_panel: "sidebar.html", }, }, useAddonManager: "temporary", files: { "sidebar.html": ` A Test Sidebar `, "sidebar.js": function () { window.onload = () => { browser.test.sendMessage("sidebar"); }; }, }, }; add_task(async function sidebar_windows() { let extension = ExtensionTestUtils.loadExtension(extData); await extension.startup(); // Test sidebar is opened on install await extension.awaitMessage("sidebar"); ok( !document.getElementById("sidebar-box").hidden, "sidebar box is visible in first window" ); // Check that the menuitem has our image styling. let elements = document.getElementsByClassName("webextension-menuitem"); // ui is in flux, at time of writing we potentially have 3 menuitems, later // it may be two or one, just make sure one is there. ok(!!elements.length, "have a menuitem"); let style = elements[0].getAttribute("style"); ok(style.includes("webextension-menuitem-image"), "this menu has style"); let secondSidebar = extension.awaitMessage("sidebar"); // SidebarUI relies on window.opener being set, which is normal behavior when // using menu or key commands to open a new browser window. let win = await BrowserTestUtils.openNewBrowserWindow(); await secondSidebar; ok( !win.document.getElementById("sidebar-box").hidden, "sidebar box is visible in second window" ); // Check that the menuitem has our image styling. elements = win.document.getElementsByClassName("webextension-menuitem"); ok(!!elements.length, "have a menuitem"); style = elements[0].getAttribute("style"); ok(style.includes("webextension-menuitem-image"), "this menu has style"); await extension.unload(); await BrowserTestUtils.closeWindow(win); });