Bug 1446956 - Test that activeTab is not granted for bookmarks menu r?mixedpuppy draft
authorRob Wu <rob@robwu.nl>
Thu, 19 Jul 2018 16:35:22 +0200
changeset 824647 2e9002e7938d3901af562f21e33aaca7712a38d6
parent 824646 282bf0e0db3c9deda0e386c449a3e695d7b061e3
push id117964
push userbmo:rob@robwu.nl
push dateTue, 31 Jul 2018 14:45:16 +0000
reviewersmixedpuppy
bugs1446956, 1370499
milestone63.0a1
Bug 1446956 - Test that activeTab is not granted for bookmarks menu r?mixedpuppy This ensures that the check that was introduced by bug 1370499 still continues to work even though it was refactored by the previous commit. MozReview-Commit-ID: GdbIPA6vxIB
browser/components/extensions/test/browser/browser_ext_contextMenus.js
--- a/browser/components/extensions/test/browser/browser_ext_contextMenus.js
+++ b/browser/components/extensions/test/browser/browser_ext_contextMenus.js
@@ -510,34 +510,42 @@ add_task(async function testRemoveAllWit
   await closeContextMenu();
 
   await first.unload();
   await second.unload();
   BrowserTestUtils.removeTab(tab);
 });
 
 add_task(async function test_bookmark_contextmenu() {
+  let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE);
+
   const bookmarksToolbar = document.getElementById("PersonalToolbar");
   setToolbarVisibility(bookmarksToolbar, true);
 
   const extension = ExtensionTestUtils.loadExtension({
     manifest: {
-      permissions: ["contextMenus", "bookmarks"],
+      permissions: ["contextMenus", "bookmarks", "activeTab"],
     },
     async background() {
       const url = "https://example.com/";
       const title = "Example";
       let newBookmark = await browser.bookmarks.create({
         url,
         title,
         parentId: "toolbar_____",
       });
-      browser.contextMenus.onClicked.addListener(async (info) => {
+      browser.contextMenus.onClicked.addListener(async (info, tab) => {
+        browser.test.assertEq(undefined, tab, "click event in bookmarks menu is not associated with any tab");
         browser.test.assertEq(newBookmark.id, info.bookmarkId, "Bookmark ID matches");
 
+        await browser.test.assertRejects(
+          browser.tabs.executeScript({code: "'some code';"}),
+          /Missing host permission for the tab/,
+          "Content script should not run, activeTab should not be granted to bookmark menu events");
+
         let [bookmark] = await browser.bookmarks.get(info.bookmarkId);
         browser.test.assertEq(title, bookmark.title, "Bookmark title matches");
         browser.test.assertEq(url, bookmark.url, "Bookmark url matches");
         browser.test.assertFalse(info.hasOwnProperty("pageUrl"), "Context menu does not expose pageUrl");
         await browser.bookmarks.remove(info.bookmarkId);
         browser.test.sendMessage("test-finish");
       });
       browser.contextMenus.create({
@@ -555,16 +563,18 @@ add_task(async function test_bookmark_co
     "#PersonalToolbar .bookmark-item:last-child");
 
   let menuItem = menu.getElementsByAttribute("label", "Get bookmark")[0];
   closeChromeContextMenu("placesContext", menuItem);
 
   await extension.awaitMessage("test-finish");
   await extension.unload();
   setToolbarVisibility(bookmarksToolbar, false);
+
+  BrowserTestUtils.removeTab(tab);
 });
 
 add_task(async function test_bookmark_context_requires_permission() {
   const bookmarksToolbar = document.getElementById("PersonalToolbar");
   setToolbarVisibility(bookmarksToolbar, true);
 
   const extension = ExtensionTestUtils.loadExtension({
     manifest: {