Bug 1338726 fix icon style for new windows, r?kmag draft
authorShane Caraveo <scaraveo@mozilla.com>
Mon, 13 Feb 2017 15:56:46 -0800
changeset 483187 2f537c79af8b444157875cc8e61ae37c88591fe8
parent 483186 716720ad86f54ca544942028f0223a28ad05b65d
child 484207 8f790d7ce02732f7dd654cc4c0a9c9cbd798e64a
push id45257
push usermixedpuppy@gmail.com
push dateMon, 13 Feb 2017 23:57:24 +0000
reviewerskmag
bugs1338726
milestone54.0a1
Bug 1338726 fix icon style for new windows, r?kmag MozReview-Commit-ID: BQOgqOwtSdm
browser/components/extensions/ext-sidebarAction.js
browser/components/extensions/test/browser/browser_ext_sidebarAction.js
--- a/browser/components/extensions/ext-sidebarAction.js
+++ b/browser/components/extensions/ext-sidebarAction.js
@@ -108,22 +108,34 @@ class SidebarAction {
     // get the command id we pass to SidebarUI.
     broadcaster.setAttribute("oncommand", "SidebarUI.toggle(this.getAttribute('observes'))");
 
     let menuitem = document.createElementNS(XUL_NS, "menuitem");
     menuitem.setAttribute("id", this.menuId);
     menuitem.setAttribute("observes", this.id);
     menuitem.setAttribute("class", "menuitem-iconic webextension-menuitem");
 
+    this.setMenuIcon(menuitem, details);
+
     document.getElementById("mainBroadcasterSet").appendChild(broadcaster);
     document.getElementById("viewSidebarMenu").appendChild(menuitem);
 
     return menuitem;
   }
 
+  setMenuIcon(menuitem, details) {
+    let getIcon = size => IconDetails.escapeUrl(
+      IconDetails.getPreferredIcon(details.icon, this.extension, size).icon);
+
+    menuitem.setAttribute("style", `
+      --webextension-menuitem-image: url("${getIcon(16)}");
+      --webextension-menuitem-image-2x: url("${getIcon(32)}");
+    `);
+  }
+
   /**
    * Update the broadcaster and menuitem `node` with the tab context data
    * in `tabData`.
    *
    * @param {ChromeWindow} window
    *        Browser chrome window.
    * @param {object} tabData
    *        Tab specific sidebar configuration.
@@ -142,23 +154,17 @@ class SidebarAction {
     broadcaster.setAttribute("label", title);
 
     let url = this.sidebarUrl(tabData.panel);
     let urlChanged = url !== broadcaster.getAttribute("sidebarurl");
     if (urlChanged) {
       broadcaster.setAttribute("sidebarurl", url);
     }
 
-    let getIcon = size => IconDetails.escapeUrl(
-      IconDetails.getPreferredIcon(tabData.icon, this.extension, size).icon);
-
-    menu.setAttribute("style", `
-      --webextension-menuitem-image: url("${getIcon(16)}");
-      --webextension-menuitem-image-2x: url("${getIcon(32)}");
-    `);
+    this.setMenuIcon(menu, tabData);
 
     // Update the sidebar if this extension is the current sidebar.
     if (SidebarUI.currentID === this.id) {
       SidebarUI.title = title;
       if (SidebarUI.isOpen && urlChanged) {
         SidebarUI.show(this.id);
       }
     }
--- a/browser/components/extensions/test/browser/browser_ext_sidebarAction.js
+++ b/browser/components/extensions/test/browser/browser_ext_sidebarAction.js
@@ -86,25 +86,35 @@ add_task(function* sidebar_two_sidebar_a
 });
 
 add_task(function* sidebar_windows() {
   let extension = ExtensionTestUtils.loadExtension(extData);
   yield extension.startup();
   // Test sidebar is opened on install
   yield 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");
+  is(elements.length, 1, "have one 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 = yield BrowserTestUtils.openNewBrowserWindow({opener: window});
 
   yield 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");
+  is(elements.length, 1, "have one menuitem");
+  style = elements[0].getAttribute("style");
+  ok(style.includes("webextension-menuitem-image"), "this menu has style");
 
   yield extension.unload();
   yield BrowserTestUtils.closeWindow(win);
 });
 
 add_task(function* sidebar_empty_panel() {
   let extension = ExtensionTestUtils.loadExtension(extData);
   yield extension.startup();