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
|
// Any copyright is dedicated to the Public Domain.
// http://creativecommons.org/publicdomain/zero/1.0/
/* import-globals-from head_addons.js */
// Enable all scopes.
Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_ALL);
// Setting this to all enables the same behavior as before disabling sideloading.
// We reset this later after doing some legacy sideloading.
Services.prefs.setIntPref("extensions.sideloadScopes", AddonManager.SCOPE_ALL);
// AddonTestUtils sets this to zero, we need the default value.
Services.prefs.clearUserPref("extensions.autoDisableScopes");
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
function getID(n) {
return `${n}@tests.mozilla.org`;
}
function initialVersion(n) {
return `${n}.0`;
}
// Setup some common extension locations, one in each scope.
// SCOPE_SYSTEM
const globalDir = gProfD.clone();
globalDir.append("app-system-share");
globalDir.append(gAppInfo.ID);
registerDirectory("XRESysSExtPD", globalDir.parent);
// SCOPE_USER
const userDir = gProfD.clone();
userDir.append("app-system-user");
userDir.append(gAppInfo.ID);
registerDirectory("XREUSysExt", userDir.parent);
// SCOPE_APPLICATION
const addonAppDir = gProfD.clone();
addonAppDir.append("app-global");
addonAppDir.append("extensions");
registerDirectory("XREAddonAppDir", addonAppDir.parent);
// SCOPE_PROFILE
const profileDir = gProfD.clone();
profileDir.append("extensions");
const scopeDirectories = {
global: globalDir,
user: userDir,
app: addonAppDir,
profile: profileDir,
};
const scopeToDir = new Map([
[AddonManager.SCOPE_SYSTEM, globalDir],
[AddonManager.SCOPE_USER, userDir],
[AddonManager.SCOPE_APPLICATION, addonAppDir],
[AddonManager.SCOPE_PROFILE, profileDir],
]);
async function createWebExtension(id, version, dir) {
let xpi = AddonTestUtils.createTempWebExtensionFile({
manifest: {
version,
browser_specific_settings: { gecko: { id } },
},
});
await AddonTestUtils.manuallyInstall(xpi, dir);
}
function check_startup_changes(aType, aIds) {
let changes = AddonManager.getStartupChanges(aType);
changes = changes.filter(aEl => /@tests.mozilla.org$/.test(aEl));
Assert.deepEqual([...aIds].sort(), changes.sort());
}
|