summaryrefslogtreecommitdiffstats
path: root/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_reset.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_reset.js')
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_reset.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_reset.js b/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_reset.js
new file mode 100644
index 0000000000..09bcdb2d85
--- /dev/null
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_reset.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+let { ResetProfile } = ChromeUtils.importESModule(
+ "resource://gre/modules/ResetProfile.sys.mjs"
+);
+
+// For this test to work properly, this profile actually needs to be
+// "reset-able", which requires that it be recognized by the profile service
+add_setup(async function () {
+ let profileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile);
+ let profileName = profileDirectory.leafName;
+ let profileService = Cc["@mozilla.org/toolkit/profile-service;1"].getService(
+ Ci.nsIToolkitProfileService
+ );
+ let createdProfile = profileService.createProfile(
+ profileDirectory,
+ profileName
+ );
+ profileService.flush();
+ registerCleanupFunction(async function cleanup() {
+ // Pass false to remove it from the profile service without deleting files.
+ createdProfile.remove(false);
+ });
+});
+
+async function test_reset_disabled({ disabled }) {
+ is(
+ ResetProfile.resetSupported(),
+ !disabled,
+ "Reset should only be supported if policy has not been applied"
+ );
+ is(
+ Services.prefs.getBoolPref("browser.disableResetPrompt", undefined),
+ disabled,
+ "Reset prompt should only be shown if policy has not been applied"
+ );
+ is(
+ Services.prefs.prefIsLocked("browser.disableResetPrompt"),
+ disabled,
+ "Reset prompt pref should be locked if the policy has been applied"
+ );
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ "about:support"
+ );
+ await SpecialPowers.spawn(
+ tab.linkedBrowser,
+ [{ disabled }],
+ async function ({
+ // eslint-disable-next-line no-shadow
+ disabled,
+ }) {
+ let resetBox = content.document.getElementById("reset-box");
+ let elementStyle = content.window.getComputedStyle(resetBox);
+ let expectedDisplayValue = disabled ? "none" : "block";
+ is(
+ elementStyle.display,
+ expectedDisplayValue,
+ "about:support Reset button box should be hidden"
+ );
+ }
+ );
+ await BrowserTestUtils.removeTab(tab);
+}
+
+add_task(async function test_initial_conditions() {
+ await test_reset_disabled({ disabled: false });
+});
+
+add_task(async function test_policy_disable_reset() {
+ await setupPolicyEngineWithJson({
+ policies: {
+ DisableProfileRefresh: true,
+ },
+ });
+ await test_reset_disabled({ disabled: true });
+});