Bug 1331921 - Hide temporary permissions on tab reload through the context menu. r=florian
MozReview-Commit-ID: 6CbhisP94PT
--- 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);
});
});