/* 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 }); });