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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
// Tests blocking of extensions by ID, name, creator, homepageURL, updateURL
// and RegExps for each. See bug 897735.
// useMLBF=true only supports blocking by version+ID, not by other fields.
enable_blocklist_v2_instead_of_useMLBF();
const BLOCKLIST_DATA = {
extensions: [
{
guid: null,
name: "/^Mozilla Corp\\.$/",
versionRange: [
{
severity: "1",
targetApplication: [
{
guid: "xpcshell@tests.mozilla.org",
maxVersion: "2.*",
minVersion: "1",
},
],
},
],
},
{
guid: "/block2/",
name: "/^Moz/",
homepageURL: "/\\.dangerous\\.com/",
updateURL: "/\\.dangerous\\.com/",
versionRange: [
{
severity: "3",
targetApplication: [
{
guid: "xpcshell@tests.mozilla.org",
maxVersion: "2.*",
minVersion: "1",
},
],
},
],
},
],
};
add_task(async function setup() {
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
await promiseStartupManager();
// Should get blocked by name
await promiseInstallWebExtension({
manifest: {
name: "Mozilla Corp.",
version: "1.0",
browser_specific_settings: { gecko: { id: "block1@tests.mozilla.org" } },
},
});
// Should get blocked by all the attributes.
await promiseInstallWebExtension({
manifest: {
name: "Moz-addon",
version: "1.0",
homepage_url: "https://www.extension.dangerous.com/",
browser_specific_settings: {
gecko: {
id: "block2@tests.mozilla.org",
update_url: "https://www.extension.dangerous.com/update.json",
},
},
},
});
// Fails to get blocked because of a different ID even though other
// attributes match against a blocklist entry.
await promiseInstallWebExtension({
manifest: {
name: "Moz-addon",
version: "1.0",
homepage_url: "https://www.extension.dangerous.com/",
browser_specific_settings: {
gecko: {
id: "block3@tests.mozilla.org",
update_url: "https://www.extension.dangerous.com/update.json",
},
},
},
});
let [a1, a2, a3] = await AddonManager.getAddonsByIDs([
"block1@tests.mozilla.org",
"block2@tests.mozilla.org",
"block3@tests.mozilla.org",
]);
Assert.equal(a1.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
Assert.equal(a2.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
Assert.equal(a3.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
});
add_task(async function test_blocks() {
await AddonTestUtils.loadBlocklistRawData(BLOCKLIST_DATA);
let [a1, a2, a3] = await AddonManager.getAddonsByIDs([
"block1@tests.mozilla.org",
"block2@tests.mozilla.org",
"block3@tests.mozilla.org",
]);
Assert.equal(a1.blocklistState, Ci.nsIBlocklistService.STATE_SOFTBLOCKED);
Assert.equal(a2.blocklistState, Ci.nsIBlocklistService.STATE_BLOCKED);
Assert.equal(a3.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
});
|