toolkit/mozapps/extensions/test/xpcshell/test_compatoverrides.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:d225d231a90d
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 // Tests compatibility overrides, for when strict compatibility checking is
5 // disabled. See bug 693906.
6
7
8 const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
9
10 Components.utils.import("resource://testing-common/httpd.js");
11 var gServer = new HttpServer();
12 gServer.start(-1);
13 gPort = gServer.identity.primaryPort;
14
15 const PORT = gPort;
16 const BASE_URL = "http://localhost:" + PORT;
17 const DEFAULT_URL = "about:blank";
18 const REQ_URL = "/data.xml";
19
20 // register static file and mark it for interpolation
21 mapUrlToFile(REQ_URL, do_get_file("data/test_compatoverrides.xml"), gServer);
22
23 Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false);
24 Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);
25 Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE,
26 BASE_URL + REQ_URL);
27
28
29 // Not hosted, no overrides
30 var addon1 = {
31 id: "addon1@tests.mozilla.org",
32 version: "1.0",
33 name: "Test addon 1",
34 targetApplications: [{
35 id: "xpcshell@tests.mozilla.org",
36 minVersion: "1",
37 maxVersion: "1"
38 }]
39 };
40
41 // Hosted, no overrides
42 var addon2 = {
43 id: "addon2@tests.mozilla.org",
44 version: "1.0",
45 name: "Test addon 2",
46 targetApplications: [{
47 id: "xpcshell@tests.mozilla.org",
48 minVersion: "1",
49 maxVersion: "1"
50 }]
51 };
52
53 // Hosted, matching override
54 var addon3 = {
55 id: "addon3@tests.mozilla.org",
56 version: "1.0",
57 name: "Test addon 3",
58 targetApplications: [{
59 id: "xpcshell@tests.mozilla.org",
60 minVersion: "1",
61 maxVersion: "1"
62 }]
63 };
64
65 // Hosted, matching override, wouldn't be compatible if strict checking is enabled
66 var addon4 = {
67 id: "addon4@tests.mozilla.org",
68 version: "1.0",
69 name: "Test addon 4",
70 targetApplications: [{
71 id: "xpcshell@tests.mozilla.org",
72 minVersion: "0.1",
73 maxVersion: "0.2"
74 }]
75 };
76
77 // Hosted, app ID doesn't match in override
78 var addon5 = {
79 id: "addon5@tests.mozilla.org",
80 version: "1.0",
81 name: "Test addon 5",
82 targetApplications: [{
83 id: "xpcshell@tests.mozilla.org",
84 minVersion: "1",
85 maxVersion: "1"
86 }]
87 };
88
89 // Hosted, addon version range doesn't match in override
90 var addon6 = {
91 id: "addon6@tests.mozilla.org",
92 version: "1.0",
93 name: "Test addon 6",
94 targetApplications: [{
95 id: "xpcshell@tests.mozilla.org",
96 minVersion: "1",
97 maxVersion: "1"
98 }]
99 };
100
101 // Hosted, app version range doesn't match in override
102 var addon7 = {
103 id: "addon7@tests.mozilla.org",
104 version: "1.0",
105 name: "Test addon 7",
106 targetApplications: [{
107 id: "xpcshell@tests.mozilla.org",
108 minVersion: "1",
109 maxVersion: "1"
110 }]
111 };
112
113 // Hosted, multiple overrides
114 var addon8 = {
115 id: "addon8@tests.mozilla.org",
116 version: "1.0",
117 name: "Test addon 8",
118 targetApplications: [{
119 id: "xpcshell@tests.mozilla.org",
120 minVersion: "1",
121 maxVersion: "1"
122 }]
123 };
124
125 // Not hosted, matching override
126 var addon9 = {
127 id: "addon9@tests.mozilla.org",
128 version: "1.0",
129 name: "Test addon 9",
130 targetApplications: [{
131 id: "xpcshell@tests.mozilla.org",
132 minVersion: "1",
133 maxVersion: "1"
134 }]
135 };
136
137 // Not hosted, override is of unsupported type (compatible)
138 var addon10 = {
139 id: "addon10@tests.mozilla.org",
140 version: "1.0",
141 name: "Test addon 10",
142 targetApplications: [{
143 id: "xpcshell@tests.mozilla.org",
144 minVersion: "1",
145 maxVersion: "1"
146 }]
147 };
148
149
150 const profileDir = gProfD.clone();
151 profileDir.append("extensions");
152
153
154 /*
155 * Trigger an AddonManager background update check
156 *
157 * @param aCallback
158 * Callback to call once the background update is complete
159 */
160 function trigger_background_update(aCallback) {
161 Services.obs.addObserver({
162 observe: function(aSubject, aTopic, aData) {
163 Services.obs.removeObserver(this, "addons-background-update-complete");
164 do_execute_soon(aCallback);
165 }
166 }, "addons-background-update-complete", false);
167
168 gInternalManager.notify(null);
169 }
170
171 function run_test() {
172 do_test_pending();
173 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "2");
174
175 writeInstallRDFForExtension(addon1, profileDir);
176 writeInstallRDFForExtension(addon2, profileDir);
177 writeInstallRDFForExtension(addon3, profileDir);
178 writeInstallRDFForExtension(addon4, profileDir);
179 writeInstallRDFForExtension(addon5, profileDir);
180 writeInstallRDFForExtension(addon6, profileDir);
181 writeInstallRDFForExtension(addon7, profileDir);
182 writeInstallRDFForExtension(addon8, profileDir);
183 writeInstallRDFForExtension(addon9, profileDir);
184 writeInstallRDFForExtension(addon10, profileDir);
185
186 startupManager();
187
188 trigger_background_update(run_test_1);
189 }
190
191 function end_test() {
192 gServer.stop(do_test_finished);
193 }
194
195 function check_compat_status(aCallback) {
196 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
197 "addon2@tests.mozilla.org",
198 "addon3@tests.mozilla.org",
199 "addon4@tests.mozilla.org",
200 "addon5@tests.mozilla.org",
201 "addon6@tests.mozilla.org",
202 "addon7@tests.mozilla.org",
203 "addon8@tests.mozilla.org",
204 "addon9@tests.mozilla.org",
205 "addon10@tests.mozilla.org"],
206 function([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]) {
207
208 do_check_neq(a1, null);
209 do_check_eq(a1.compatibilityOverrides, null);
210 do_check_true(a1.isCompatible);
211 do_check_false(a1.appDisabled);
212
213 do_check_neq(a2, null);
214 do_check_eq(a2.compatibilityOverrides, null);
215 do_check_true(a2.isCompatible);
216 do_check_false(a2.appDisabled);
217
218 do_check_neq(a3, null);
219 do_check_neq(a3.compatibilityOverrides, null);
220 do_check_eq(a3.compatibilityOverrides.length, 1);
221 do_check_false(a3.isCompatible);
222 do_check_true(a3.appDisabled);
223
224 do_check_neq(a4, null);
225 do_check_neq(a4.compatibilityOverrides, null);
226 do_check_eq(a4.compatibilityOverrides.length, 1);
227 do_check_false(a4.isCompatible);
228 do_check_true(a4.appDisabled);
229
230 do_check_neq(a5, null);
231 do_check_eq(a5.compatibilityOverrides, null);
232 do_check_true(a5.isCompatible);
233 do_check_false(a5.appDisabled);
234
235 do_check_neq(a6, null);
236 do_check_neq(a6.compatibilityOverrides, null);
237 do_check_eq(a6.compatibilityOverrides.length, 1);
238 do_check_true(a6.isCompatible);
239 do_check_false(a6.appDisabled);
240
241 do_check_neq(a7, null);
242 do_check_neq(a7.compatibilityOverrides, null);
243 do_check_eq(a7.compatibilityOverrides.length, 1);
244 do_check_true(a7.isCompatible);
245 do_check_false(a7.appDisabled);
246
247 do_check_neq(a8, null);
248 do_check_neq(a8.compatibilityOverrides, null);
249 do_check_eq(a8.compatibilityOverrides.length, 3);
250 do_check_false(a8.isCompatible);
251 do_check_true(a8.appDisabled);
252
253 do_check_neq(a9, null);
254 do_check_neq(a9.compatibilityOverrides, null);
255 do_check_eq(a9.compatibilityOverrides.length, 1);
256 do_check_false(a9.isCompatible);
257 do_check_true(a9.appDisabled);
258
259 do_check_neq(a10, null);
260 do_check_eq(a10.compatibilityOverrides, null);
261 do_check_true(a10.isCompatible);
262 do_check_false(a10.appDisabled);
263
264 do_execute_soon(aCallback);
265 });
266 }
267
268 function run_test_1() {
269 do_print("Run test 1");
270 check_compat_status(run_test_2);
271 }
272
273 function run_test_2() {
274 do_print("Run test 2");
275 restartManager();
276 check_compat_status(end_test);
277 }

mercurial