Bug 1374477 - Update consumers of Photon page action panel for changed identifiers. r?mikedeboer draft
authorDrew Willcoxon <adw@mozilla.com>
Thu, 20 Jul 2017 18:39:40 -0700
changeset 612732 877b348bcac6796443668b93048a60fb38e86b5c
parent 612731 800ab24bc95c9f0a401f1a55c572693f8d9d012c
child 612733 909a3606f0412e6ed56147e72f7cd49e3ffbbdac
push id69589
push userdwillcoxon@mozilla.com
push dateFri, 21 Jul 2017 01:40:28 +0000
reviewersmikedeboer
bugs1374477
milestone56.0a1
Bug 1374477 - Update consumers of Photon page action panel for changed identifiers. r?mikedeboer MozReview-Commit-ID: 1skE8YJaqA7
browser/base/content/browser-sync.js
browser/base/content/browser.css
browser/base/content/test/urlbar/browser_page_action_menu.js
browser/base/content/test/urlbar/browser_page_action_menu_clipboard.js
browser/base/content/test/urlbar/head.js
--- a/browser/base/content/browser-sync.js
+++ b/browser/base/content/browser-sync.js
@@ -307,17 +307,17 @@ var gSync = {
     const fragment = document.createDocumentFragment();
     if (this.syncReady) {
       const onTargetDeviceCommand = (event) => {
         let clients = event.target.getAttribute("clientId") ?
           [event.target.getAttribute("clientId")] :
           this.remoteClients.map(client => client.id);
 
         clients.forEach(clientId => this.sendTabToDevice(url, clientId, title));
-        gPageActionButton.panel.hidePopup();
+        BrowserPageActions.panel.hidePopup();
       }
 
       function addTargetDevice(clientId, name, clientType) {
         const targetDevice = createDeviceNodeFn(clientId, name, clientType);
         targetDevice.addEventListener("command", onTargetDeviceCommand, true);
         targetDevice.classList.add("sync-menuitem", "sendtab-target");
         targetDevice.setAttribute("clientId", clientId);
         targetDevice.setAttribute("clientType", clientType);
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -1479,16 +1479,21 @@ toolbarpaletteitem[place="palette"][hidd
 }
 
 .dragfeedback-tab {
   -moz-appearance: none;
   opacity: 0.65;
   -moz-window-shadow: none;
 }
 
-/* Page action menu */
-#page-action-sendToDeviceView-body:not([state="notsignedin"]) > #page-action-sendToDevice-fxa-button,
-#page-action-sendToDeviceView-body:not([state="nodevice"]) > #page-action-no-devices-button,
-#page-action-sendToDeviceView-body:not([state="notready"]) > #page-action-sync-not-ready-button {
+%ifdef MOZ_PHOTON_THEME
+/* Page action panel */
+#pageAction-panel-sendToDevice-subview-body:not([state="notsignedin"]) > #pageAction-panel-sendToDevice-fxa,
+#pageAction-urlbar-sendToDevice-subview-body:not([state="notsignedin"]) > #pageAction-urlbar-sendToDevice-fxa,
+#pageAction-panel-sendToDevice-subview-body:not([state="nodevice"]) > #pageAction-panel-sendToDevice-noDevices,
+#pageAction-urlbar-sendToDevice-subview-body:not([state="nodevice"]) > #pageAction-urlbar-sendToDevice-noDevices,
+#pageAction-panel-sendToDevice-subview-body:not([state="notready"]) > #pageAction-panel-sendToDevice-notReady,
+#pageAction-urlbar-sendToDevice-subview-body:not([state="notready"]) > #pageAction-urlbar-sendToDevice-notReady {
   display: none;
 }
+%endif
 
 %include theme-vars.inc.css
--- a/browser/base/content/test/urlbar/browser_page_action_menu.js
+++ b/browser/base/content/test/urlbar/browser_page_action_menu.js
@@ -9,17 +9,17 @@ const mockRemoteClients = [
 add_task(async function bookmark() {
   // Open a unique page.
   let url = "http://example.com/browser_page_action_menu";
   await BrowserTestUtils.withNewTab(url, async () => {
     // Open the panel.
     await promisePageActionPanelOpen();
 
     // The bookmark button should read "Bookmark This Page" and not be starred.
-    let bookmarkButton = document.getElementById("page-action-bookmark-button");
+    let bookmarkButton = document.getElementById("pageAction-panel-bookmark");
     Assert.equal(bookmarkButton.label, "Bookmark This Page");
     Assert.ok(!bookmarkButton.hasAttribute("starred"));
 
     // Click the button.
     let hiddenPromise = promisePageActionPanelHidden();
     EventUtils.synthesizeMouseAtCenter(bookmarkButton, {});
     await hiddenPromise;
 
@@ -87,31 +87,31 @@ add_task(async function emailLink() {
   };
   registerCleanupFunction(() => {
     MailIntegration.sendLinkForBrowser = originalFn;
   });
 
   // Open the panel and click Email Link.
   await promisePageActionPanelOpen();
   let emailLinkButton =
-    document.getElementById("page-action-email-link-button");
+    document.getElementById("pageAction-panel-emailLink");
   let hiddenPromise = promisePageActionPanelHidden();
   EventUtils.synthesizeMouseAtCenter(emailLinkButton, {});
   await hiddenPromise;
 
   Assert.ok(fnCalled);
 });
 
 add_task(async function sendToDevice_nonSendable() {
   // Open a tab that's not sendable.
   await BrowserTestUtils.withNewTab("about:blank", async () => {
     // Open the panel.  Send to Device should be disabled.
     await promisePageActionPanelOpen();
     let sendToDeviceButton =
-      document.getElementById("page-action-send-to-device-button");
+      document.getElementById("pageAction-panel-sendToDevice");
     Assert.ok(sendToDeviceButton.disabled);
     let hiddenPromise = promisePageActionPanelHidden();
     gPageActionPanel.hidePopup();
     await hiddenPromise;
   });
 });
 
 add_task(async function sendToDevice_syncNotReady() {
@@ -122,76 +122,76 @@ add_task(async function sendToDevice_syn
 
     let remoteClientsMock;
     let origSync = Weave.Service.sync;
     Weave.Service.sync = () => {
       mockReturn(gSync, "syncReady", true);
       remoteClientsMock = mockReturn(gSync, "remoteClients", mockRemoteClients);
     };
 
-    let origSetupSendToDeviceView = gPageActionButton.setupSendToDeviceView;
-    gPageActionButton.setupSendToDeviceView = () => {
+    let origOnShowingSubview = BrowserPageActions.sendToDevice.onShowingSubview;
+    BrowserPageActions.sendToDevice.onShowingSubview = (...args) => {
       this.numCall++ || (this.numCall = 1);
-      origSetupSendToDeviceView.call(gPageActionButton);
+      origOnShowingSubview.call(BrowserPageActions.sendToDevice, ...args);
       testSendTabToDeviceMenu(this.numCall);
     }
 
     let cleanUp = () => {
       Weave.Service.sync = origSync;
-      gPageActionButton.setupSendToDeviceView = origSetupSendToDeviceView;
+      BrowserPageActions.sendToDevice.onShowingSubview = origOnShowingSubview;
       signedInMock.restore();
       syncReadyMock.restore();
       remoteClientsMock.restore();
     };
     registerCleanupFunction(cleanUp);
 
     // Open the panel.
     await promisePageActionPanelOpen();
     let sendToDeviceButton =
-      document.getElementById("page-action-send-to-device-button");
+      document.getElementById("pageAction-panel-sendToDevice");
     Assert.ok(!sendToDeviceButton.disabled);
 
     // Click Send to Device.
     let viewPromise = promisePageActionViewShown();
     EventUtils.synthesizeMouseAtCenter(sendToDeviceButton, {});
     let view = await viewPromise;
-    Assert.equal(view.id, "page-action-sendToDeviceView");
+    Assert.equal(view.id, "pageAction-panel-sendToDevice-subview");
 
     function testSendTabToDeviceMenu(numCall) {
       if (numCall == 1) {
         // The Fxa button should be shown.
         checkSendToDeviceItems([
           {
-            id: "page-action-sendToDevice-fxa-button",
+            id: "pageAction-panel-sendToDevice-fxa",
             display: "none",
           },
           {
-            id: "page-action-no-devices-button",
+            id: "pageAction-panel-sendToDevice-noDevices",
             display: "none",
             disabled: true,
           },
           {
-            id: "page-action-sync-not-ready-button",
+            id: "pageAction-panel-sendToDevice-notReady",
             disabled: true,
           },
         ]);
       } else if (numCall == 2) {
         // The devices should be shown in the subview.
         let expectedItems = [
           {
-            id: "page-action-sendToDevice-fxa-button",
+            id: "pageAction-panel-sendToDevice-fxa",
             display: "none",
           },
           {
-            id: "page-action-no-devices-button",
+            id: "pageAction-panel-sendToDevice-noDevices",
             display: "none",
             disabled: true,
           },
           {
-            id: "page-action-sync-not-ready-button",
+            id: "pageAction-panel-sendToDevice-notReady",
             display: "none",
             disabled: true,
           },
         ];
         for (let client of mockRemoteClients) {
           expectedItems.push({
             attrs: {
               clientId: client.id,
@@ -223,46 +223,46 @@ add_task(async function sendToDevice_syn
 add_task(async function sendToDevice_notSignedIn() {
   // Open a tab that's sendable.
   await BrowserTestUtils.withNewTab("http://example.com/", async () => {
     await promiseSyncReady();
 
     // Open the panel.
     await promisePageActionPanelOpen();
     let sendToDeviceButton =
-      document.getElementById("page-action-send-to-device-button");
+      document.getElementById("pageAction-panel-sendToDevice");
     Assert.ok(!sendToDeviceButton.disabled);
 
     // Click Send to Device.
     let viewPromise = promisePageActionViewShown();
     EventUtils.synthesizeMouseAtCenter(sendToDeviceButton, {});
     let view = await viewPromise;
-    Assert.equal(view.id, "page-action-sendToDeviceView");
+    Assert.equal(view.id, "pageAction-panel-sendToDevice-subview");
 
     // The Fxa button should be shown.
     checkSendToDeviceItems([
       {
-        id: "page-action-sendToDevice-fxa-button",
+        id: "pageAction-panel-sendToDevice-fxa",
       },
       {
-        id: "page-action-no-devices-button",
+        id: "pageAction-panel-sendToDevice-noDevices",
         display: "none",
         disabled: true,
       },
       {
-        id: "page-action-sync-not-ready-button",
+        id: "pageAction-panel-sendToDevice-notReady",
         display: "none",
         disabled: true,
       },
     ]);
 
     // Click the Fxa button.
     let body = view.firstChild;
     let fxaButton = body.childNodes[0];
-    Assert.equal(fxaButton.id, "page-action-sendToDevice-fxa-button");
+    Assert.equal(fxaButton.id, "pageAction-panel-sendToDevice-fxa");
     let prefsTabPromise = BrowserTestUtils.waitForNewTab(gBrowser);
     let hiddenPromise = promisePageActionPanelHidden();
     EventUtils.synthesizeMouseAtCenter(fxaButton, {});
     let values = await Promise.all([prefsTabPromise, hiddenPromise]);
     let tab = values[0];
 
     // The Fxa prefs pane should open.  The full URL is something like:
     //   about:preferences?entrypoint=syncbutton#sync
@@ -279,37 +279,37 @@ add_task(async function sendToDevice_noD
   // Open a tab that's sendable.
   await BrowserTestUtils.withNewTab("http://example.com/", async () => {
     await promiseSyncReady();
     UIState._internal._state = { status: UIState.STATUS_SIGNED_IN };
 
     // Open the panel.
     await promisePageActionPanelOpen();
     let sendToDeviceButton =
-      document.getElementById("page-action-send-to-device-button");
+      document.getElementById("pageAction-panel-sendToDevice");
     Assert.ok(!sendToDeviceButton.disabled);
 
     // Click Send to Device.
     let viewPromise = promisePageActionViewShown();
     EventUtils.synthesizeMouseAtCenter(sendToDeviceButton, {});
     let view = await viewPromise;
-    Assert.equal(view.id, "page-action-sendToDeviceView");
+    Assert.equal(view.id, "pageAction-panel-sendToDevice-subview");
 
     // The no-devices item should be shown.
     checkSendToDeviceItems([
       {
-        id: "page-action-sendToDevice-fxa-button",
+        id: "pageAction-panel-sendToDevice-fxa",
         display: "none",
       },
       {
-        id: "page-action-no-devices-button",
+        id: "pageAction-panel-sendToDevice-noDevices",
         disabled: true,
       },
       {
-        id: "page-action-sync-not-ready-button",
+        id: "pageAction-panel-sendToDevice-notReady",
         display: "none",
         disabled: true,
       },
     ]);
 
     // Done, hide the panel.
     let hiddenPromise = promisePageActionPanelHidden();
     gPageActionPanel.hidePopup();
@@ -330,38 +330,38 @@ add_task(async function sendToDevice_dev
     let cleanUp = () => {
       remoteClientsMock.restore();
     };
     registerCleanupFunction(cleanUp);
 
     // Open the panel.
     await promisePageActionPanelOpen();
     let sendToDeviceButton =
-      document.getElementById("page-action-send-to-device-button");
+      document.getElementById("pageAction-panel-sendToDevice");
     Assert.ok(!sendToDeviceButton.disabled);
 
     // Click Send to Device.
     let viewPromise = promisePageActionViewShown();
     EventUtils.synthesizeMouseAtCenter(sendToDeviceButton, {});
     let view = await viewPromise;
-    Assert.equal(view.id, "page-action-sendToDeviceView");
+    Assert.equal(view.id, "pageAction-panel-sendToDevice-subview");
 
     // The devices should be shown in the subview.
     let expectedItems = [
       {
-        id: "page-action-sendToDevice-fxa-button",
+        id: "pageAction-panel-sendToDevice-fxa",
         display: "none",
       },
       {
-        id: "page-action-no-devices-button",
+        id: "pageAction-panel-sendToDevice-noDevices",
         display: "none",
         disabled: true,
       },
       {
-        id: "page-action-sync-not-ready-button",
+        id: "pageAction-panel-sendToDevice-notReady",
         display: "none",
         disabled: true,
       },
     ];
     for (let client of mockRemoteClients) {
       expectedItems.push({
         attrs: {
           clientId: client.id,
@@ -394,17 +394,18 @@ function promiseSyncReady() {
                   .wrappedJSObject;
   return service.whenLoaded().then(() => {
     UIState.isReady();
     return UIState.refresh();
   });
 }
 
 function checkSendToDeviceItems(expectedItems) {
-  let body = document.getElementById("page-action-sendToDeviceView-body");
+  let body =
+    document.getElementById("pageAction-panel-sendToDevice-subview-body");
   Assert.equal(body.childNodes.length, expectedItems.length);
   for (let i = 0; i < expectedItems.length; i++) {
     let expected = expectedItems[i];
     let actual = body.childNodes[i];
     if (!expected) {
       Assert.equal(actual.localName, "toolbarseparator");
       continue;
     }
--- a/browser/base/content/test/urlbar/browser_page_action_menu_clipboard.js
+++ b/browser/base/content/test/urlbar/browser_page_action_menu_clipboard.js
@@ -6,17 +6,17 @@ const mockRemoteClients = [
   { id: "2", name: "baz", type: "mobile" },
 ];
 
 add_task(async function copyURL() {
   // Open the panel.
   await promisePageActionPanelOpen();
 
   // Click Copy URL.
-  let copyURLButton = document.getElementById("page-action-copy-url-button");
+  let copyURLButton = document.getElementById("pageAction-panel-copyURL");
   let hiddenPromise = promisePageActionPanelHidden();
   EventUtils.synthesizeMouseAtCenter(copyURLButton, {});
   await hiddenPromise;
 
   // Check the clipboard.
   let transferable = Cc["@mozilla.org/widget/transferable;1"]
                        .createInstance(Ci.nsITransferable);
   transferable.init(null);
--- a/browser/base/content/test/urlbar/head.js
+++ b/browser/base/content/test/urlbar/head.js
@@ -195,20 +195,20 @@ function promiseNewSearchEngine(basename
       onError(errCode) {
         Assert.ok(false, "addEngine failed with error code " + errCode);
         reject();
       },
     });
   });
 }
 
-let gPageActionPanel = document.getElementById("page-action-panel");
+let gPageActionPanel = document.getElementById("pageActionPanel");
 
 function promisePageActionPanelOpen() {
-  let button = document.getElementById("urlbar-page-action-button");
+  let button = document.getElementById("pageActionButton");
   let shownPromise = promisePageActionPanelShown();
   EventUtils.synthesizeMouseAtCenter(button, {});
   return shownPromise;
 }
 
 function promisePageActionPanelShown() {
   return promisePageActionPanelEvent("popupshown");
 }