Bug 1215376 - fix linting and test issues from rebase draft
authorRob Wu <rob@robwu.nl>
Fri, 05 Jan 2018 01:13:04 +0100
changeset 716634 7a17eb292d84901be6fa868bc5ad867e69cea0a5
parent 716038 ff47c55c1865e7c400d18ae3b3980f2599130a6b
child 745066 ee66acd4b16b05319760958ca9c4ad67e818ac71
push id94471
push userbmo:rob@robwu.nl
push dateSat, 06 Jan 2018 00:25:08 +0000
bugs1215376, 1428213
milestone59.0a1
Bug 1215376 - fix linting and test issues from rebase - Work-around in browser_ext_menus_events.js for bug 1428213 - Fix indentation issues (eslint) - Hide the "pageUrl" property for bookmark menu events (fixes test failure in test_bookmark_contextmenu). MozReview-Commit-ID: 4YHJci0J7Rh
browser/components/extensions/ext-menus.js
browser/components/extensions/test/browser/browser_ext_menus_events.js
browser/components/extensions/test/browser/browser_ext_menus_refresh.js
--- a/browser/components/extensions/ext-menus.js
+++ b/browser/components/extensions/ext-menus.js
@@ -492,17 +492,19 @@ function addMenuEventInfo(info, contextD
   if (includeSensitiveData) {
     if (contextData.onLink) {
       info.linkText = contextData.linkText;
       info.linkUrl = contextData.linkUrl;
     }
     if (contextData.onAudio || contextData.onImage || contextData.onVideo) {
       info.srcUrl = contextData.srcUrl;
     }
-    info.pageUrl = contextData.pageUrl;
+    if (!contextData.onBookmark) {
+      info.pageUrl = contextData.pageUrl;
+    }
     if (contextData.inFrame) {
       info.frameUrl = contextData.frameUrl;
     }
     if (contextData.isTextSelected) {
       info.selectionText = contextData.selectionText;
     }
   }
 }
--- a/browser/components/extensions/test/browser/browser_ext_menus_events.js
+++ b/browser/components/extensions/test/browser/browser_ext_menus_events.js
@@ -21,16 +21,22 @@ async function grantOptionalPermission(e
 async function testShowHideEvent({menuCreateParams, doOpenMenu, doCloseMenu,
                                   expectedShownEvent,
                                   expectedShownEventWithPermissions = null}) {
   async function background() {
     function awaitMessage(expectedId) {
       return new Promise(resolve => {
         browser.test.log(`Waiting for message: ${expectedId}`);
         browser.test.onMessage.addListener(function listener(id, msg) {
+          // Temporary work-around for https://bugzil.la/1428213
+          // TODO Bug 1428213: remove workaround for onMessage.removeListener
+          if (listener._wasCalled) {
+            return;
+          }
+          listener._wasCalled = true;
           browser.test.assertEq(expectedId, id, "Expected message");
           browser.test.onMessage.removeListener(listener);
           resolve(msg);
         });
       });
     }
 
     let menuCreateParams = await awaitMessage("create-params");
@@ -104,34 +110,34 @@ async function testShowHideEvent({menuCr
     await grantOptionalPermission(extension, {
       permissions: [],
       origins: [PAGE_HOST_PATTERN],
     });
     await doOpenMenu(extension);
     extension.sendMessage("optional-menu-shown-with-permissions");
     let shownEvent2 = await extension.awaitMessage("onShown-event-data2");
     Assert.deepEqual(shownEvent2, expectedShownEventWithPermissions,
-      "expected onShown info when host permissions are enabled");
+                     "expected onShown info when host permissions are enabled");
     await doCloseMenu();
   }
 
   await extension.unload();
   await BrowserTestUtils.removeTab(tab);
 }
 
 // Make sure that we won't trigger onShown when extensions cannot add menus.
 add_task(async function test_no_show_hide_for_unsupported_menu() {
   let extension = ExtensionTestUtils.loadExtension({
     background() {
       let events = [];
       browser.menus.onShown.addListener(data => events.push(data));
       browser.menus.onHidden.addListener(() => events.push("onHidden"));
       browser.test.onMessage.addListener(() => {
         browser.test.assertEq("[]", JSON.stringify(events),
-          "Should not have any events when the context is unsupported.");
+                              "Should not have any events when the context is unsupported.");
         browser.test.notifyPass("done listening to menu events");
       });
     },
     manifest: {
       permissions: ["menus"],
     },
   });
 
--- a/browser/components/extensions/test/browser/browser_ext_menus_refresh.js
+++ b/browser/components/extensions/test/browser/browser_ext_menus_refresh.js
@@ -58,17 +58,17 @@ function loadExtensionWithMenusApi() {
 }
 
 // Tests whether browser.menus.refresh works as expected with respect to the
 // menu items that are added/updated/removed before/during/after opening a menu:
 // - browser.refresh before a menu is shown should not have any effect.
 // - browser.refresh while a menu is shown should update the menu.
 // - browser.refresh after a menu is hidden should not have any effect.
 async function testRefreshMenusWhileVisible({contexts, doOpenMenu, doCloseMenu,
-                                            }) {
+}) {
   let extension = loadExtensionWithMenusApi();
   await extension.startup();
   await extension.callMenuApi("create", {
     id: "abc",
     title: "first",
     contexts,
   });
   let elem = extension.getXULElementByMenuId("abc");
@@ -221,17 +221,17 @@ add_task(async function refresh_without_
   await extension.awaitMessage("onShown fired");
   await extension.callMenuApi("create", {
     id: "too late",
     title: "created after shown",
   });
   await extension.callMenuApi("refresh");
   let elem = extension.getXULElementByMenuId("too late");
   is(elem.getAttribute("label"), "created after shown",
-    "extension without visible menu items can add new items");
+     "extension without visible menu items can add new items");
 
   await extension.callMenuApi("update", "too late", {title: "the menu item"});
   await extension.callMenuApi("refresh");
   elem = extension.getXULElementByMenuId("too late");
   is(elem.getAttribute("label"), "the menu item", "label should change");
 
   // The previously created menu item should be visible if the menu is closed
   // and re-opened.