--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -494,18 +494,17 @@ const gSessionHistoryObserver = {
gURLBar.editor.transactionManager.clear();
}
};
const gStoragePressureObserver = {
_lastNotificationTime: -1,
observe(subject, topic, data) {
- if (topic != "QuotaManager::StoragePressure" ||
- !Services.prefs.getBoolPref("browser.storageManager.enabled")) {
+ if (topic != "QuotaManager::StoragePressure") {
return;
}
const NOTIFICATION_VALUE = "storage-pressure-notification";
let notificationBox = document.getElementById("high-priority-global-notificationbox");
if (notificationBox.getNotificationWithValue(NOTIFICATION_VALUE)) {
// Do not display the 2nd notification when there is already one
return;
--- a/browser/base/content/test/general/browser_storagePressure_notification.js
+++ b/browser/base/content/test/general/browser_storagePressure_notification.js
@@ -18,17 +18,16 @@ function openAboutPrefPromise() {
TestUtils.topicObserved("privacy-pane-loaded", () => true)
];
return Promise.all(promises);
}
// Test only displaying notification once within the given interval
add_task(async function() {
const TEST_NOTIFICATION_INTERVAL_MS = 2000;
- await SpecialPowers.pushPrefEnv({set: [["browser.storageManager.enabled", true]]});
await SpecialPowers.pushPrefEnv({set: [["browser.storageManager.pressureNotification.minIntervalMS", TEST_NOTIFICATION_INTERVAL_MS]]});
// Commenting this to see if we really need it
// await SpecialPowers.pushPrefEnv({set: [["privacy.reduceTimerPrecision", false]]});
await notifyStoragePressure();
let notificationbox = document.getElementById("high-priority-global-notificationbox");
let notification = notificationbox.getNotificationWithValue("storage-pressure-notification");
ok(notification instanceof XULElement, "Should display storage pressure notification");
@@ -42,17 +41,16 @@ add_task(async function() {
await notifyStoragePressure();
notification = notificationbox.getNotificationWithValue("storage-pressure-notification");
ok(notification instanceof XULElement, "Should display storage pressure notification after the given interval");
notification.close();
});
// Test guiding user to the about:preferences when usage exceeds the given threshold
add_task(async function() {
- await SpecialPowers.pushPrefEnv({ set: [["browser.storageManager.enabled", true]] });
await SpecialPowers.pushPrefEnv({ set: [["browser.storageManager.pressureNotification.minIntervalMS", 0]] });
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "https://example.com");
const BYTES_IN_GIGABYTE = 1073741824;
const USAGE_THRESHOLD_BYTES = BYTES_IN_GIGABYTE *
Services.prefs.getIntPref("browser.storageManager.pressureNotification.usageThresholdGB");
await notifyStoragePressure(USAGE_THRESHOLD_BYTES);
let notificationbox = document.getElementById("high-priority-global-notificationbox");
@@ -69,17 +67,16 @@ add_task(async function() {
is_element_visible(siteDataGroup, "Should open to the siteDataGroup section in about:preferences");
BrowserTestUtils.removeTab(aboutPrefTab);
BrowserTestUtils.removeTab(tab);
});
// Test not displaying the 2nd notification if one is already being displayed
add_task(async function() {
const TEST_NOTIFICATION_INTERVAL_MS = 0;
- await SpecialPowers.pushPrefEnv({set: [["browser.storageManager.enabled", true]]});
await SpecialPowers.pushPrefEnv({set: [["browser.storageManager.pressureNotification.minIntervalMS", TEST_NOTIFICATION_INTERVAL_MS]]});
await notifyStoragePressure();
await notifyStoragePressure();
let notificationbox = document.getElementById("high-priority-global-notificationbox");
let allNotifications = notificationbox.allNotifications;
let pressureNotificationCount = 0;
allNotifications.forEach(notification => {
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -2758,19 +2758,17 @@ const ContentPermissionIntegration = {
switch (type) {
case "geolocation": {
return new PermissionUI.GeolocationPermissionPrompt(request);
}
case "desktop-notification": {
return new PermissionUI.DesktopNotificationPermissionPrompt(request);
}
case "persistent-storage": {
- if (Services.prefs.getBoolPref("browser.storageManager.enabled")) {
- return new PermissionUI.PersistentStoragePermissionPrompt(request);
- }
+ return new PermissionUI.PersistentStoragePermissionPrompt(request);
}
case "midi": {
return new PermissionUI.MIDIPermissionPrompt(request);
}
}
return undefined;
},
};
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -332,35 +332,31 @@ var gPrivacyPane = {
document.l10n.setAttributes(checkbox, "permissions-notification-pause");
if (AlertsServiceDND.manualDoNotDisturb) {
let notificationsDoNotDisturb =
document.getElementById("notificationsDoNotDisturb");
notificationsDoNotDisturb.setAttribute("checked", true);
}
}
- if (Services.prefs.getBoolPref("browser.storageManager.enabled")) {
- Services.obs.addObserver(this, "sitedatamanager:sites-updated");
- Services.obs.addObserver(this, "sitedatamanager:updating-sites");
- let unload = () => {
- window.removeEventListener("unload", unload);
- Services.obs.removeObserver(this, "sitedatamanager:sites-updated");
- Services.obs.removeObserver(this, "sitedatamanager:updating-sites");
- };
- window.addEventListener("unload", unload);
- SiteDataManager.updateSites();
- setEventListener("clearSiteDataButton", "command",
- gPrivacyPane.clearSiteData);
- setEventListener("siteDataSettings", "command",
- gPrivacyPane.showSiteDataSettings);
- let url = Services.urlFormatter.formatURLPref("app.support.baseURL") + "storage-permissions";
- document.getElementById("siteDataLearnMoreLink").setAttribute("href", url);
- let siteDataGroup = document.getElementById("siteDataGroup");
- siteDataGroup.removeAttribute("data-hidden-from-search");
- }
+ Services.obs.addObserver(this, "sitedatamanager:sites-updated");
+ Services.obs.addObserver(this, "sitedatamanager:updating-sites");
+ let unload = () => {
+ window.removeEventListener("unload", unload);
+ Services.obs.removeObserver(this, "sitedatamanager:sites-updated");
+ Services.obs.removeObserver(this, "sitedatamanager:updating-sites");
+ };
+ window.addEventListener("unload", unload);
+ SiteDataManager.updateSites();
+ setEventListener("clearSiteDataButton", "command",
+ gPrivacyPane.clearSiteData);
+ setEventListener("siteDataSettings", "command",
+ gPrivacyPane.showSiteDataSettings);
+ let url = Services.urlFormatter.formatURLPref("app.support.baseURL") + "storage-permissions";
+ document.getElementById("siteDataLearnMoreLink").setAttribute("href", url);
let notificationInfoURL =
Services.urlFormatter.formatURLPref("app.support.baseURL") + "push";
document.getElementById("notificationPermissionsLearnMore").setAttribute("href",
notificationInfoURL);
let drmInfoURL =
Services.urlFormatter.formatURLPref("app.support.baseURL") + "drm-content";
document.getElementById("playDRMContentLink").setAttribute("href", drmInfoURL);
--- a/browser/components/preferences/in-content/privacy.xul
+++ b/browser/components/preferences/in-content/privacy.xul
@@ -155,17 +155,17 @@
class="accessory-button"
icon="clear"
data-l10n-id="history-clear-button"/>
</vbox>
</hbox>
</groupbox>
<!-- Site Data -->
-<groupbox id="siteDataGroup" hidden="true" data-category="panePrivacy" data-hidden-from-search="true">
+<groupbox id="siteDataGroup" data-category="panePrivacy">
<caption><label data-l10n-id="sitedata-header"/></caption>
<hbox data-subcategory="sitedata" align="baseline">
<vbox flex="1">
<description class="description-with-side-element" flex="1">
<html:span id="totalSiteDataSize" class="tail-with-learn-more"></html:span>
<label id="siteDataLearnMoreLink"
class="learnMore text-link" data-l10n-id="sitedata-learn-more"/>
--- a/browser/components/preferences/in-content/tests/browser_bug731866.js
+++ b/browser/components/preferences/in-content/tests/browser_bug731866.js
@@ -1,15 +1,14 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm");
ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
-const storageManagerDisabled = !SpecialPowers.getBoolPref("browser.storageManager.enabled");
const browserContainersGroupDisabled = !SpecialPowers.getBoolPref("privacy.userContext.ui.enabled");
function test() {
waitForExplicitFinish();
open_preferences(runTest);
}
var gElements;
@@ -17,24 +16,17 @@ var gElements;
function checkElements(expectedPane) {
for (let element of gElements) {
// keyset elements fail is_element_visible checks because they are never visible.
// special-case the drmGroup item because its visibility depends on pref + OS version
if (element.nodeName == "keyset" ||
element.id === "drmGroup") {
continue;
}
- // The siteDataGroup in the Storage Management project is currently only pref-on on Nightly for testing purpose.
- // During the test and the transition period, we have to check the pref to see if the siteDataGroup
- // should be hidden always. This would be a bit bothersome, same as the offlineGroup as below.
- // However, this checking is necessary to make sure we don't leak the siteDataGroup into beta/release build
- if (element.id == "siteDataGroup" && storageManagerDisabled) {
- is_element_hidden(element, "Disabled siteDataGroup should be hidden");
- continue;
- }
+
// The browserContainersGroup is still only pref-on on Nightly
if (element.id == "browserContainersGroup" && browserContainersGroupDisabled) {
is_element_hidden(element, "Disabled browserContainersGroup should be hidden");
continue;
}
let attributeValue = element.getAttribute("data-category");
let suffix = " (id=" + element.id + ")";
--- a/browser/components/preferences/in-content/tests/browser_search_subdialogs_within_preferences_3.js
+++ b/browser/components/preferences/in-content/tests/browser_search_subdialogs_within_preferences_3.js
@@ -1,17 +1,16 @@
/*
* This file contains tests for the Preferences search bar.
*/
// Enabling Searching functionatily. Will display search bar form this testcase forward.
add_task(async function() {
await SpecialPowers.pushPrefEnv({"set": [
- ["browser.preferences.search", true],
- ["browser.storageManager.enabled", true]
+ ["browser.preferences.search", true]
]});
});
/**
* Test for searching for the "Allowed Sites - Add-ons Installation" subdialog.
*/
add_task(async function() {
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
--- a/browser/components/preferences/in-content/tests/browser_search_subdialogs_within_preferences_7.js
+++ b/browser/components/preferences/in-content/tests/browser_search_subdialogs_within_preferences_7.js
@@ -2,18 +2,17 @@
* This file contains tests for the Preferences search bar.
*/
requestLongerTimeout(2);
// Enabling Searching functionatily. Will display search bar form this testcase forward.
add_task(async function() {
await SpecialPowers.pushPrefEnv({"set": [
- ["browser.preferences.search", true],
- ["browser.storageManager.enabled", true]
+ ["browser.preferences.search", true]
]});
});
/**
* Test for searching for the "Device Manager" subdialog.
*/
add_task(async function() {
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
--- a/browser/components/preferences/in-content/tests/browser_search_within_preferences_1.js
+++ b/browser/components/preferences/in-content/tests/browser_search_within_preferences_1.js
@@ -208,59 +208,16 @@ add_task(async function exiting_search_r
// Checks if back to normal
is_element_visible(generalPane, "Should be in generalPane");
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});
/**
- * Test for "Site Data" case, verifying elements with data-hidden-from-search = true
- * are hidden in search result.
- */
-add_task(async function verify_hidden_from_search_elements_dont_show_up() {
- await SpecialPowers.pushPrefEnv({ "set": [["browser.storageManager.enabled", false]] });
- await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
- let generalPane = gBrowser.contentDocument.getElementById("generalCategory");
-
- is_element_hidden(generalPane, "Should not be in general");
-
- // Performs search
- let searchInput = gBrowser.contentDocument.getElementById("searchInput");
-
- is(searchInput, gBrowser.contentDocument.activeElement.closest("#searchInput"),
- "Search input should be focused when visiting preferences");
-
- let query = "site data";
- let searchCompletedPromise = BrowserTestUtils.waitForEvent(
- gBrowser.contentWindow, "PreferencesSearchCompleted", evt => evt.detail == query);
- EventUtils.sendString(query);
- await searchCompletedPromise;
-
- let mainPrefTag = gBrowser.contentDocument.getElementById("mainPrefPane");
-
- let child = mainPrefTag.querySelector("#siteDataGroup");
- is_element_hidden(child, "Should be hidden in search results");
-
- // Takes search off
- searchCompletedPromise = BrowserTestUtils.waitForEvent(
- gBrowser.contentWindow, "PreferencesSearchCompleted", evt => evt.detail == "");
- let count = query.length;
- while (count--) {
- EventUtils.sendKey("BACK_SPACE");
- }
- await searchCompletedPromise;
-
- // Checks if back to normal
- is_element_visible(generalPane, "Should be in generalPane");
-
- BrowserTestUtils.removeTab(gBrowser.selectedTab);
-});
-
-/**
* Test for if we go to another tab after searching
*/
add_task(async function changing_tabs_after_searching() {
await openPreferencesViaOpenPreferencesAPI("paneGeneral", { leaveOpen: true });
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
is(searchInput, gBrowser.contentDocument.activeElement.closest("#searchInput"),
"Search input should be focused when visiting preferences");
--- a/browser/components/preferences/in-content/tests/browser_search_within_preferences_command.js
+++ b/browser/components/preferences/in-content/tests/browser_search_within_preferences_command.js
@@ -1,15 +1,14 @@
"use strict";
/**
* Test for "command" event on search input (when user clicks the x button)
*/
add_task(async function() {
- await SpecialPowers.pushPrefEnv({"set": [["browser.storageManager.enabled", false]]});
await openPreferencesViaOpenPreferencesAPI("privacy", {leaveOpen: true});
let generalPane = gBrowser.contentDocument.getElementById("generalCategory");
is_element_hidden(generalPane, "Should not be in general");
// Performs search
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
is(searchInput, gBrowser.contentDocument.activeElement.closest("#searchInput"),
--- a/browser/modules/SitePermissions.jsm
+++ b/browser/modules/SitePermissions.jsm
@@ -679,22 +679,16 @@ var gPermissionObject = {
exactHostMatch: true
},
"midi-sysex": {
exactHostMatch: true
}
};
-// Delete this entry while being pre-off
-// or the persistent-storage permission would appear in Page info's Permission section
-if (!Services.prefs.getBoolPref("browser.storageManager.enabled")) {
- delete gPermissionObject["persistent-storage"];
-}
-
if (!Services.prefs.getBoolPref("dom.webmidi.enabled")) {
// ESLint gets angry about array versus dot notation here, but some permission
// names use hyphens. Disabling rule for line to keep things consistent.
// eslint-disable-next-line dot-notation
delete gPermissionObject["midi"];
delete gPermissionObject["midi-sysex"];
}
--- a/browser/modules/test/unit/test_SitePermissions.js
+++ b/browser/modules/test/unit/test_SitePermissions.js
@@ -1,29 +1,23 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
"use strict";
ChromeUtils.import("resource:///modules/SitePermissions.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
-const STORAGE_MANAGER_ENABLED = Services.prefs.getBoolPref("browser.storageManager.enabled");
const RESIST_FINGERPRINTING_ENABLED = Services.prefs.getBoolPref("privacy.resistFingerprinting");
const MIDI_ENABLED = Services.prefs.getBoolPref("dom.webmidi.enabled");
add_task(async function testPermissionsListing() {
let expectedPermissions = ["camera", "cookie", "desktop-notification", "focus-tab-by-prompt",
- "geo", "image", "install", "microphone", "plugin:flash", "popup", "screen", "shortcuts"];
- if (STORAGE_MANAGER_ENABLED) {
- // The persistent-storage permission is still only pref-on on Nightly
- // so we add it only when it's pref-on.
- // Should remove this checking and add it as default after it is fully pref-on.
- expectedPermissions.push("persistent-storage");
- }
+ "geo", "image", "install", "microphone", "plugin:flash", "popup", "screen", "shortcuts",
+ "persistent-storage"];
if (RESIST_FINGERPRINTING_ENABLED) {
// Canvas permission should be hidden unless privacy.resistFingerprinting
// is true.
expectedPermissions.push("canvas");
}
if (MIDI_ENABLED) {
// Should remove this checking and add it as default after it is fully pref'd-on.
expectedPermissions.push("midi");
@@ -108,23 +102,17 @@ add_task(async function testGetAvailable
SitePermissions.BLOCK ]);
});
add_task(async function testExactHostMatch() {
let uri = Services.io.newURI("https://example.com");
let subUri = Services.io.newURI("https://test1.example.com");
let exactHostMatched = ["desktop-notification", "focus-tab-by-prompt", "camera",
- "microphone", "screen", "geo"];
- if (STORAGE_MANAGER_ENABLED) {
- // The persistent-storage permission is still only pref-on on Nightly
- // so we add it only when it's pref-on.
- // Should remove this checking and add it as default after it is fully pref-on.
- exactHostMatched.push("persistent-storage");
- }
+ "microphone", "screen", "geo", "persistent-storage"];
if (RESIST_FINGERPRINTING_ENABLED) {
// Canvas permission should be hidden unless privacy.resistFingerprinting
// is true.
exactHostMatched.push("canvas");
}
if (MIDI_ENABLED) {
// WebMIDI is only pref'd on in nightly.
// Should remove this checking and add it as default after it is fully pref-on.
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/PermissionPrompts.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/PermissionPrompts.jsm
@@ -11,17 +11,16 @@ ChromeUtils.import("resource://gre/modul
ChromeUtils.import("resource://testing-common/ContentTask.jsm");
ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
const URL = "https://test1.example.com/browser/browser/tools/mozscreenshots/mozscreenshots/extension/mozscreenshots/browser/chrome/mozscreenshots/lib/permissionPrompts.html";
let lastTab = null;
var PermissionPrompts = {
init(libDir) {
- Services.prefs.setBoolPref("browser.storageManager.enabled", true);
Services.prefs.setBoolPref("media.navigator.permission.fake", true);
Services.prefs.setBoolPref("extensions.install.requireBuiltInCerts", false);
Services.prefs.setBoolPref("signon.rememberSignons", true);
},
configurations: {
shareDevices: {
selectors: ["#notification-popup"],
--- a/dom/quota/test/browser_permissionsPrompt.html
+++ b/dom/quota/test/browser_permissionsPrompt.html
@@ -8,18 +8,17 @@
<title>Persistent-Storage Permission Prompt Test</title>
<script type="text/javascript">
function* testSteps()
{
SpecialPowers.pushPrefEnv({
"set": [["dom.storageManager.enabled", true],
["dom.storageManager.prompt.testing", false],
- ["dom.storageManager.prompt.testing.allow", false],
- ["browser.storageManager.enabled", true]]
+ ["dom.storageManager.prompt.testing.allow", false]]
}, continueToNextStep);
yield undefined;
navigator.storage.persist().then(result => {
testGenerator.next(result);
});
testResult = yield undefined;
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -5832,19 +5832,17 @@ pref("security.data_uri.block_toplevel_d
#if !defined(MOZ_WIDGET_ANDROID)
pref("dom.storageManager.enabled", true);
#else
pref("dom.storageManager.enabled", false);
#endif
pref("dom.storageManager.prompt.testing", false);
pref("dom.storageManager.prompt.testing.allow", false);
-// Enable the Storage management in about:preferences and persistent-storage permission request
-// To enable the DOM implementation, turn on "dom.storageManager.enabled"
-pref("browser.storageManager.enabled", true);
+
pref("browser.storageManager.pressureNotification.minIntervalMS", 1200000);
pref("browser.storageManager.pressureNotification.usageThresholdGB", 5);
// When a user cancels this number of authentication dialogs coming from
// a single web page in a row, all following authentication dialogs will
// be blocked (automatically canceled) for that page. The counter resets
// when the page is reloaded. To turn this feature off, just set the limit to 0.
pref("prompts.authentication_dialog_abuse_limit", 3);
--- a/testing/web-platform/meta/storage/storagemanager-persist.https.html.ini
+++ b/testing/web-platform/meta/storage/storagemanager-persist.https.html.ini
@@ -1,2 +1,2 @@
[storagemanager-persist.https.html]
- prefs: [browser.storageManager.enabled:true, dom.storageManager.prompt.testing:true]
+ prefs: [dom.storageManager.prompt.testing:true]
--- a/toolkit/components/extensions/test/mochitest/test_ext_unlimitedStorage.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_unlimitedStorage.html
@@ -15,18 +15,16 @@
<script type="text/javascript">
"use strict";
add_task(async function test_background_storagePersist() {
await SpecialPowers.pushPrefEnv({
"set": [
["dom.storageManager.enabled", true],
- // Enable the storageManager permission prompt.
- ["browser.storageManager.enabled", true],
["dom.storageManager.prompt.testing", false],
["dom.storageManager.prompt.testing.allow", false],
],
});
const EXTENSION_ID = "test-storagePersist@mozilla";
const extension = ExtensionTestUtils.loadExtension({