Bug 1331921 - Hide temporary permissions on tab reload through the context menu. r=florian draft
authorJohann Hofmann <jhofmann@mozilla.com>
Fri, 20 Jan 2017 10:17:43 +0100
changeset 464083 dbaa327bb39b1be5b28cd9dd6086d1b5341a2e99
parent 464075 aa3e49299a3aa5cb0db570532e3df9e75d30c2d1
child 542848 eaccc06bb10cd273eb170dc10a3e0bc18c9a731c
push id42263
push userbmo:jhofmann@mozilla.com
push dateFri, 20 Jan 2017 09:20:04 +0000
reviewersflorian
bugs1331921
milestone53.0a1
Bug 1331921 - Hide temporary permissions on tab reload through the context menu. r=florian MozReview-Commit-ID: 6CbhisP94PT
browser/base/content/tabbrowser.xml
browser/base/content/test/general/browser_temporary_permissions_navigation.js
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -3086,17 +3086,21 @@
           ]]>
         </body>
       </method>
 
       <method name="reloadTab">
         <parameter name="aTab"/>
         <body>
           <![CDATA[
-            this.getBrowserForTab(aTab).reload();
+            let browser = this.getBrowserForTab(aTab);
+            // Reset temporary permissions on the current tab. This is done here
+            // because we only want to reset permissions on user reload.
+            SitePermissions.clearTemporaryPermissions(browser);
+            browser.reload();
           ]]>
         </body>
       </method>
 
       <method name="addProgressListener">
         <parameter name="aListener"/>
         <body>
           <![CDATA[
--- a/browser/base/content/test/general/browser_temporary_permissions_navigation.js
+++ b/browser/base/content/test/general/browser_temporary_permissions_navigation.js
@@ -30,19 +30,46 @@ add_task(function* testTempPermissionOnR
       return reloadButton.disabled == false;
     });
 
     Assert.deepEqual(SitePermissions.get(uri, id, browser), {
       state: SitePermissions.BLOCK,
       scope: SitePermissions.SCOPE_TEMPORARY,
     });
 
+    reloaded = BrowserTestUtils.browserLoaded(browser, false, uri.spec);
+
     // Reload as a user (should remove the temp permission).
     EventUtils.synthesizeMouseAtCenter(reloadButton, {});
 
+    yield reloaded;
+
+    Assert.deepEqual(SitePermissions.get(uri, id, browser), {
+      state: SitePermissions.UNKNOWN,
+      scope: SitePermissions.SCOPE_PERSISTENT,
+    });
+
+    // Set the permission again.
+    SitePermissions.set(uri, id, SitePermissions.BLOCK, SitePermissions.SCOPE_TEMPORARY, browser);
+
+    // Open the tab context menu.
+    let contextMenu = document.getElementById("tabContextMenu");
+    let popupShownPromise = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
+    EventUtils.synthesizeMouseAtCenter(gBrowser.selectedTab, {type: "contextmenu", button: 2});
+    yield popupShownPromise;
+
+    let reloadMenuItem = document.getElementById("context_reloadTab");
+
+    reloaded = BrowserTestUtils.browserLoaded(browser, false, uri.spec);
+
+    // Reload as a user through the context menu (should remove the temp permission).
+    EventUtils.synthesizeMouseAtCenter(reloadMenuItem, {});
+
+    yield reloaded;
+
     Assert.deepEqual(SitePermissions.get(uri, id, browser), {
       state: SitePermissions.UNKNOWN,
       scope: SitePermissions.SCOPE_PERSISTENT,
     });
 
     SitePermissions.remove(uri, id, browser);
   });
 });