1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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 });
});
|