|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
3 */ |
|
4 |
|
5 // This verifies startup detection of added/removed/changed items and install |
|
6 // location priorities |
|
7 |
|
8 // Enable loading extensions from the user and system scopes |
|
9 Services.prefs.setIntPref("extensions.enabledScopes", |
|
10 AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER + |
|
11 AddonManager.SCOPE_SYSTEM); |
|
12 |
|
13 var addon1 = { |
|
14 id: "addon1@tests.mozilla.org", |
|
15 version: "1.0", |
|
16 name: "Test 1", |
|
17 targetApplications: [{ |
|
18 id: "xpcshell@tests.mozilla.org", |
|
19 minVersion: "1", |
|
20 maxVersion: "1" |
|
21 }, { // Repeated target application entries should be ignored |
|
22 id: "xpcshell@tests.mozilla.org", |
|
23 minVersion: "2", |
|
24 maxVersion: "2" |
|
25 }] |
|
26 }; |
|
27 |
|
28 var addon2 = { |
|
29 id: "addon2@tests.mozilla.org", |
|
30 version: "2.0", |
|
31 name: "Test 2", |
|
32 targetApplications: [{ // Bad target application entries should be ignored |
|
33 minVersion: "3", |
|
34 maxVersion: "4" |
|
35 }, { |
|
36 id: "xpcshell@tests.mozilla.org", |
|
37 minVersion: "1", |
|
38 maxVersion: "2" |
|
39 }] |
|
40 }; |
|
41 |
|
42 var addon3 = { |
|
43 id: "addon3@tests.mozilla.org", |
|
44 version: "3.0", |
|
45 name: "Test 3", |
|
46 targetApplications: [{ |
|
47 id: "toolkit@mozilla.org", |
|
48 minVersion: "1.9.2", |
|
49 maxVersion: "1.9.2.*" |
|
50 }] |
|
51 }; |
|
52 |
|
53 // Should be ignored because it has no ID |
|
54 var addon4 = { |
|
55 version: "4.0", |
|
56 name: "Test 4", |
|
57 targetApplications: [{ |
|
58 id: "xpcshell@tests.mozilla.org", |
|
59 minVersion: "1", |
|
60 maxVersion: "1" |
|
61 }] |
|
62 }; |
|
63 |
|
64 // Should be ignored because it has no version |
|
65 var addon5 = { |
|
66 id: "addon5@tests.mozilla.org", |
|
67 name: "Test 5", |
|
68 targetApplications: [{ |
|
69 id: "xpcshell@tests.mozilla.org", |
|
70 minVersion: "1", |
|
71 maxVersion: "1" |
|
72 }] |
|
73 }; |
|
74 |
|
75 // Should be ignored because it has an invalid type |
|
76 var addon6 = { |
|
77 id: "addon6@tests.mozilla.org", |
|
78 version: "3.0", |
|
79 name: "Test 6", |
|
80 type: 5, |
|
81 targetApplications: [{ |
|
82 id: "toolkit@mozilla.org", |
|
83 minVersion: "1.9.2", |
|
84 maxVersion: "1.9.2.*" |
|
85 }] |
|
86 }; |
|
87 |
|
88 // Should be ignored because it has an invalid type |
|
89 var addon7 = { |
|
90 id: "addon7@tests.mozilla.org", |
|
91 version: "3.0", |
|
92 name: "Test 3", |
|
93 type: "extension", |
|
94 targetApplications: [{ |
|
95 id: "toolkit@mozilla.org", |
|
96 minVersion: "1.9.2", |
|
97 maxVersion: "1.9.2.*" |
|
98 }] |
|
99 }; |
|
100 |
|
101 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); |
|
102 |
|
103 const globalDir = gProfD.clone(); |
|
104 globalDir.append("extensions2"); |
|
105 globalDir.append(gAppInfo.ID); |
|
106 registerDirectory("XRESysSExtPD", globalDir.parent); |
|
107 const userDir = gProfD.clone(); |
|
108 userDir.append("extensions3"); |
|
109 userDir.append(gAppInfo.ID); |
|
110 registerDirectory("XREUSysExt", userDir.parent); |
|
111 const profileDir = gProfD.clone(); |
|
112 profileDir.append("extensions"); |
|
113 |
|
114 var gCachePurged = false; |
|
115 |
|
116 // Set up the profile |
|
117 function run_test() { |
|
118 do_test_pending("test_startup main"); |
|
119 |
|
120 let obs = AM_Cc["@mozilla.org/observer-service;1"]. |
|
121 getService(AM_Ci.nsIObserverService); |
|
122 obs.addObserver({ |
|
123 observe: function(aSubject, aTopic, aData) { |
|
124 gCachePurged = true; |
|
125 } |
|
126 }, "startupcache-invalidate", false); |
|
127 |
|
128 startupManager(); |
|
129 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
130 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); |
|
131 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
132 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
133 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
134 |
|
135 do_check_false(gExtensionsJSON.exists()); |
|
136 |
|
137 do_check_false(gExtensionsINI.exists()); |
|
138 |
|
139 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
140 "addon2@tests.mozilla.org", |
|
141 "addon3@tests.mozilla.org", |
|
142 "addon4@tests.mozilla.org", |
|
143 "addon5@tests.mozilla.org", |
|
144 "addon6@tests.mozilla.org", |
|
145 "addon7@tests.mozilla.org"], |
|
146 function([a1, a2, a3, a4, a5, a6, a7]) { |
|
147 |
|
148 do_check_eq(a1, null); |
|
149 do_check_not_in_crash_annotation(addon1.id, addon1.version); |
|
150 do_check_eq(a2, null); |
|
151 do_check_not_in_crash_annotation(addon2.id, addon2.version); |
|
152 do_check_eq(a3, null); |
|
153 do_check_not_in_crash_annotation(addon3.id, addon3.version); |
|
154 do_check_eq(a4, null); |
|
155 do_check_eq(a5, null); |
|
156 |
|
157 do_execute_soon(run_test_1); |
|
158 }); |
|
159 } |
|
160 |
|
161 function end_test() { |
|
162 do_test_finished("test_startup main"); |
|
163 } |
|
164 |
|
165 // Try to install all the items into the profile |
|
166 function run_test_1() { |
|
167 writeInstallRDFForExtension(addon1, profileDir); |
|
168 var dest = writeInstallRDFForExtension(addon2, profileDir); |
|
169 // Attempt to make this look like it was added some time in the past so |
|
170 // the change in run_test_2 makes the last modified time change. |
|
171 setExtensionModifiedTime(dest, dest.lastModifiedTime - 5000); |
|
172 |
|
173 writeInstallRDFForExtension(addon3, profileDir); |
|
174 writeInstallRDFForExtension(addon4, profileDir); |
|
175 writeInstallRDFForExtension(addon5, profileDir); |
|
176 writeInstallRDFForExtension(addon6, profileDir); |
|
177 writeInstallRDFForExtension(addon7, profileDir); |
|
178 |
|
179 gCachePurged = false; |
|
180 restartManager(); |
|
181 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org", |
|
182 "addon2@tests.mozilla.org", |
|
183 "addon3@tests.mozilla.org"]); |
|
184 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); |
|
185 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
186 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
187 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
188 do_check_true(gCachePurged); |
|
189 |
|
190 do_print("Checking for " + gExtensionsINI.path); |
|
191 do_check_true(gExtensionsINI.exists()); |
|
192 |
|
193 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
194 "addon2@tests.mozilla.org", |
|
195 "addon3@tests.mozilla.org", |
|
196 "addon4@tests.mozilla.org", |
|
197 "addon5@tests.mozilla.org", |
|
198 "addon6@tests.mozilla.org", |
|
199 "addon7@tests.mozilla.org"], |
|
200 function([a1, a2, a3, a4, a5, a6, a7]) { |
|
201 |
|
202 do_check_neq(a1, null); |
|
203 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
204 do_check_neq(a1.syncGUID, null); |
|
205 do_check_true(a1.syncGUID.length >= 9); |
|
206 do_check_eq(a1.version, "1.0"); |
|
207 do_check_eq(a1.name, "Test 1"); |
|
208 do_check_true(isExtensionInAddonsList(profileDir, a1.id)); |
|
209 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
210 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
211 do_check_in_crash_annotation(addon1.id, addon1.version); |
|
212 do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); |
|
213 do_check_eq(a1.sourceURI, null); |
|
214 do_check_true(a1.foreignInstall); |
|
215 |
|
216 do_check_neq(a2, null); |
|
217 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
218 do_check_neq(a2.syncGUID, null); |
|
219 do_check_true(a2.syncGUID.length >= 9); |
|
220 do_check_eq(a2.version, "2.0"); |
|
221 do_check_eq(a2.name, "Test 2"); |
|
222 do_check_true(isExtensionInAddonsList(profileDir, a2.id)); |
|
223 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
224 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
225 do_check_in_crash_annotation(addon2.id, addon2.version); |
|
226 do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); |
|
227 do_check_eq(a2.sourceURI, null); |
|
228 do_check_true(a2.foreignInstall); |
|
229 |
|
230 do_check_neq(a3, null); |
|
231 do_check_eq(a3.id, "addon3@tests.mozilla.org"); |
|
232 do_check_neq(a3.syncGUID, null); |
|
233 do_check_true(a3.syncGUID.length >= 9); |
|
234 do_check_eq(a3.version, "3.0"); |
|
235 do_check_eq(a3.name, "Test 3"); |
|
236 do_check_true(isExtensionInAddonsList(profileDir, a3.id)); |
|
237 do_check_true(hasFlag(a3.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
238 do_check_true(hasFlag(a3.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
239 do_check_in_crash_annotation(addon3.id, addon3.version); |
|
240 do_check_eq(a3.scope, AddonManager.SCOPE_PROFILE); |
|
241 do_check_eq(a3.sourceURI, null); |
|
242 do_check_true(a3.foreignInstall); |
|
243 |
|
244 do_check_eq(a4, null); |
|
245 do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); |
|
246 dest = profileDir.clone(); |
|
247 dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); |
|
248 do_check_false(dest.exists()); |
|
249 |
|
250 do_check_eq(a5, null); |
|
251 do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); |
|
252 dest = profileDir.clone(); |
|
253 dest.append(do_get_expected_addon_name("addon5@tests.mozilla.org")); |
|
254 do_check_false(dest.exists()); |
|
255 |
|
256 do_check_eq(a6, null); |
|
257 do_check_false(isExtensionInAddonsList(profileDir, "addon6@tests.mozilla.org")); |
|
258 dest = profileDir.clone(); |
|
259 dest.append(do_get_expected_addon_name("addon6@tests.mozilla.org")); |
|
260 do_check_false(dest.exists()); |
|
261 |
|
262 do_check_eq(a7, null); |
|
263 do_check_false(isExtensionInAddonsList(profileDir, "addon7@tests.mozilla.org")); |
|
264 dest = profileDir.clone(); |
|
265 dest.append(do_get_expected_addon_name("addon7@tests.mozilla.org")); |
|
266 do_check_false(dest.exists()); |
|
267 |
|
268 AddonManager.getAddonsByTypes(["extension"], function(extensionAddons) { |
|
269 do_check_eq(extensionAddons.length, 3); |
|
270 |
|
271 do_execute_soon(run_test_2); |
|
272 }); |
|
273 }); |
|
274 } |
|
275 |
|
276 // Test that modified items are detected and items in other install locations |
|
277 // are ignored |
|
278 function run_test_2() { |
|
279 addon1.version = "1.1"; |
|
280 writeInstallRDFForExtension(addon1, userDir); |
|
281 addon2.version="2.1"; |
|
282 writeInstallRDFForExtension(addon2, profileDir); |
|
283 addon2.version="2.2"; |
|
284 writeInstallRDFForExtension(addon2, globalDir); |
|
285 addon2.version="2.3"; |
|
286 writeInstallRDFForExtension(addon2, userDir); |
|
287 var dest = profileDir.clone(); |
|
288 dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); |
|
289 dest.remove(true); |
|
290 |
|
291 gCachePurged = false; |
|
292 restartManager(); |
|
293 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
294 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); |
|
295 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon3@tests.mozilla.org"]); |
|
296 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
297 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
298 do_check_true(gCachePurged); |
|
299 |
|
300 do_check_true(gExtensionsINI.exists()); |
|
301 |
|
302 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
303 "addon2@tests.mozilla.org", |
|
304 "addon3@tests.mozilla.org", |
|
305 "addon4@tests.mozilla.org", |
|
306 "addon5@tests.mozilla.org"], |
|
307 function([a1, a2, a3, a4, a5]) { |
|
308 |
|
309 do_check_neq(a1, null); |
|
310 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
311 do_check_eq(a1.version, "1.0"); |
|
312 do_check_true(isExtensionInAddonsList(profileDir, a1.id)); |
|
313 do_check_false(isExtensionInAddonsList(userDir, a1.id)); |
|
314 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
315 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
316 do_check_in_crash_annotation(addon1.id, a1.version); |
|
317 do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); |
|
318 do_check_true(a1.foreignInstall); |
|
319 |
|
320 do_check_neq(a2, null); |
|
321 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
322 do_check_eq(a2.version, "2.1"); |
|
323 do_check_true(isExtensionInAddonsList(profileDir, a2.id)); |
|
324 do_check_false(isExtensionInAddonsList(userDir, a2.id)); |
|
325 do_check_false(isExtensionInAddonsList(globalDir, a2.id)); |
|
326 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
327 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
328 do_check_in_crash_annotation(addon2.id, a2.version); |
|
329 do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); |
|
330 do_check_true(a2.foreignInstall); |
|
331 |
|
332 do_check_eq(a3, null); |
|
333 do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); |
|
334 do_check_not_in_crash_annotation(addon3.id, addon3.version); |
|
335 |
|
336 do_check_eq(a4, null); |
|
337 do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); |
|
338 |
|
339 do_check_eq(a5, null); |
|
340 do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); |
|
341 |
|
342 do_execute_soon(run_test_3); |
|
343 }); |
|
344 } |
|
345 |
|
346 // Check that removing items from the profile reveals their hidden versions. |
|
347 function run_test_3() { |
|
348 var dest = profileDir.clone(); |
|
349 dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); |
|
350 dest.remove(true); |
|
351 dest = profileDir.clone(); |
|
352 dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); |
|
353 dest.remove(true); |
|
354 writeInstallRDFForExtension(addon3, profileDir, "addon4@tests.mozilla.org"); |
|
355 |
|
356 gCachePurged = false; |
|
357 restartManager(); |
|
358 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
359 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", |
|
360 "addon2@tests.mozilla.org"]); |
|
361 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
362 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
363 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
364 do_check_true(gCachePurged); |
|
365 |
|
366 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
367 "addon2@tests.mozilla.org", |
|
368 "addon3@tests.mozilla.org", |
|
369 "addon4@tests.mozilla.org", |
|
370 "addon5@tests.mozilla.org"], |
|
371 function([a1, a2, a3, a4, a5]) { |
|
372 |
|
373 do_check_neq(a1, null); |
|
374 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
375 do_check_eq(a1.version, "1.1"); |
|
376 do_check_false(isExtensionInAddonsList(profileDir, a1.id)); |
|
377 do_check_true(isExtensionInAddonsList(userDir, a1.id)); |
|
378 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
379 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
380 do_check_in_crash_annotation(addon1.id, a1.version); |
|
381 do_check_eq(a1.scope, AddonManager.SCOPE_USER); |
|
382 |
|
383 do_check_neq(a2, null); |
|
384 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
385 do_check_eq(a2.version, "2.3"); |
|
386 do_check_false(isExtensionInAddonsList(profileDir, a2.id)); |
|
387 do_check_true(isExtensionInAddonsList(userDir, a2.id)); |
|
388 do_check_false(isExtensionInAddonsList(globalDir, a2.id)); |
|
389 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
390 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
391 do_check_in_crash_annotation(addon2.id, a2.version); |
|
392 do_check_eq(a2.scope, AddonManager.SCOPE_USER); |
|
393 |
|
394 do_check_eq(a3, null); |
|
395 do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); |
|
396 |
|
397 do_check_eq(a4, null); |
|
398 do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); |
|
399 |
|
400 do_check_eq(a5, null); |
|
401 do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); |
|
402 |
|
403 dest = profileDir.clone(); |
|
404 dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); |
|
405 do_check_false(dest.exists()); |
|
406 |
|
407 do_execute_soon(run_test_4); |
|
408 }); |
|
409 } |
|
410 |
|
411 // Test that disabling an install location works |
|
412 function run_test_4() { |
|
413 Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_SYSTEM); |
|
414 |
|
415 gCachePurged = false; |
|
416 restartManager(); |
|
417 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
418 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); |
|
419 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org"]); |
|
420 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
421 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
422 do_check_true(gCachePurged); |
|
423 |
|
424 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
425 "addon2@tests.mozilla.org", |
|
426 "addon3@tests.mozilla.org", |
|
427 "addon4@tests.mozilla.org", |
|
428 "addon5@tests.mozilla.org"], |
|
429 function([a1, a2, a3, a4, a5]) { |
|
430 |
|
431 do_check_eq(a1, null); |
|
432 do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); |
|
433 do_check_false(isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org")); |
|
434 |
|
435 do_check_neq(a2, null); |
|
436 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
437 do_check_eq(a2.version, "2.2"); |
|
438 do_check_false(isExtensionInAddonsList(profileDir, a2.id)); |
|
439 do_check_false(isExtensionInAddonsList(userDir, a2.id)); |
|
440 do_check_true(isExtensionInAddonsList(globalDir, a2.id)); |
|
441 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
442 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
443 do_check_in_crash_annotation(addon2.id, a2.version); |
|
444 do_check_eq(a2.scope, AddonManager.SCOPE_SYSTEM); |
|
445 |
|
446 do_execute_soon(run_test_5); |
|
447 }); |
|
448 } |
|
449 |
|
450 // Switching disabled locations works |
|
451 function run_test_5() { |
|
452 Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_USER); |
|
453 |
|
454 gCachePurged = false; |
|
455 restartManager(); |
|
456 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org"]); |
|
457 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); |
|
458 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
459 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
460 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
461 do_check_true(gCachePurged); |
|
462 |
|
463 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
464 "addon2@tests.mozilla.org", |
|
465 "addon3@tests.mozilla.org", |
|
466 "addon4@tests.mozilla.org", |
|
467 "addon5@tests.mozilla.org"], |
|
468 function([a1, a2, a3, a4, a5]) { |
|
469 |
|
470 do_check_neq(a1, null); |
|
471 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
472 do_check_eq(a1.version, "1.1"); |
|
473 do_check_false(isExtensionInAddonsList(profileDir, a1.id)); |
|
474 do_check_true(isExtensionInAddonsList(userDir, a1.id)); |
|
475 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
476 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
477 do_check_in_crash_annotation(addon1.id, a1.version); |
|
478 do_check_eq(a1.scope, AddonManager.SCOPE_USER); |
|
479 |
|
480 do_check_neq(a2, null); |
|
481 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
482 do_check_eq(a2.version, "2.3"); |
|
483 do_check_false(isExtensionInAddonsList(profileDir, a2.id)); |
|
484 do_check_true(isExtensionInAddonsList(userDir, a2.id)); |
|
485 do_check_false(isExtensionInAddonsList(globalDir, a2.id)); |
|
486 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
487 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
488 do_check_in_crash_annotation(addon2.id, a2.version); |
|
489 do_check_eq(a2.scope, AddonManager.SCOPE_USER); |
|
490 |
|
491 do_execute_soon(run_test_6); |
|
492 }); |
|
493 } |
|
494 |
|
495 // Resetting the pref makes everything visible again |
|
496 function run_test_6() { |
|
497 Services.prefs.clearUserPref("extensions.enabledScopes"); |
|
498 |
|
499 gCachePurged = false; |
|
500 restartManager(); |
|
501 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
502 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); |
|
503 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
504 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
505 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
506 do_check_true(gCachePurged); |
|
507 |
|
508 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
509 "addon2@tests.mozilla.org", |
|
510 "addon3@tests.mozilla.org", |
|
511 "addon4@tests.mozilla.org", |
|
512 "addon5@tests.mozilla.org"], |
|
513 function([a1, a2, a3, a4, a5]) { |
|
514 |
|
515 do_check_neq(a1, null); |
|
516 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
517 do_check_eq(a1.version, "1.1"); |
|
518 do_check_false(isExtensionInAddonsList(profileDir, a1.id)); |
|
519 do_check_true(isExtensionInAddonsList(userDir, a1.id)); |
|
520 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
521 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
522 do_check_in_crash_annotation(addon1.id, a1.version); |
|
523 do_check_eq(a1.scope, AddonManager.SCOPE_USER); |
|
524 |
|
525 do_check_neq(a2, null); |
|
526 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
527 do_check_eq(a2.version, "2.3"); |
|
528 do_check_false(isExtensionInAddonsList(profileDir, a2.id)); |
|
529 do_check_true(isExtensionInAddonsList(userDir, a2.id)); |
|
530 do_check_false(isExtensionInAddonsList(globalDir, a2.id)); |
|
531 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
532 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
533 do_check_in_crash_annotation(addon2.id, a2.version); |
|
534 do_check_eq(a2.scope, AddonManager.SCOPE_USER); |
|
535 |
|
536 do_execute_soon(run_test_7); |
|
537 }); |
|
538 } |
|
539 |
|
540 // Check that items in the profile hide the others again. |
|
541 function run_test_7() { |
|
542 addon1.version = "1.2"; |
|
543 writeInstallRDFForExtension(addon1, profileDir); |
|
544 var dest = userDir.clone(); |
|
545 dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); |
|
546 dest.remove(true); |
|
547 |
|
548 gCachePurged = false; |
|
549 restartManager(); |
|
550 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
551 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", |
|
552 "addon2@tests.mozilla.org"]); |
|
553 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
554 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
555 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
556 do_check_true(gCachePurged); |
|
557 |
|
558 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
559 "addon2@tests.mozilla.org", |
|
560 "addon3@tests.mozilla.org", |
|
561 "addon4@tests.mozilla.org", |
|
562 "addon5@tests.mozilla.org"], |
|
563 function([a1, a2, a3, a4, a5]) { |
|
564 |
|
565 do_check_neq(a1, null); |
|
566 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
567 do_check_eq(a1.version, "1.2"); |
|
568 do_check_true(isExtensionInAddonsList(profileDir, a1.id)); |
|
569 do_check_false(isExtensionInAddonsList(userDir, a1.id)); |
|
570 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
571 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
572 do_check_in_crash_annotation(addon1.id, a1.version); |
|
573 do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); |
|
574 |
|
575 do_check_neq(a2, null); |
|
576 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
577 do_check_eq(a2.version, "2.2"); |
|
578 do_check_false(isExtensionInAddonsList(profileDir, a2.id)); |
|
579 do_check_false(isExtensionInAddonsList(userDir, a2.id)); |
|
580 do_check_true(isExtensionInAddonsList(globalDir, a2.id)); |
|
581 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
582 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
583 do_check_in_crash_annotation(addon2.id, a2.version); |
|
584 do_check_eq(a2.scope, AddonManager.SCOPE_SYSTEM); |
|
585 |
|
586 do_check_eq(a3, null); |
|
587 do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); |
|
588 |
|
589 do_check_eq(a4, null); |
|
590 do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); |
|
591 |
|
592 do_check_eq(a5, null); |
|
593 do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); |
|
594 |
|
595 do_execute_soon(run_test_8); |
|
596 }); |
|
597 } |
|
598 |
|
599 // Disabling all locations still leaves the profile working |
|
600 function run_test_8() { |
|
601 Services.prefs.setIntPref("extensions.enabledScopes", 0); |
|
602 |
|
603 gCachePurged = false; |
|
604 restartManager(); |
|
605 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
606 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); |
|
607 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon2@tests.mozilla.org"]); |
|
608 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
609 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
610 do_check_true(gCachePurged); |
|
611 |
|
612 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
613 "addon2@tests.mozilla.org", |
|
614 "addon3@tests.mozilla.org", |
|
615 "addon4@tests.mozilla.org", |
|
616 "addon5@tests.mozilla.org"], |
|
617 function([a1, a2, a3, a4, a5]) { |
|
618 |
|
619 do_check_neq(a1, null); |
|
620 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
621 do_check_eq(a1.version, "1.2"); |
|
622 do_check_true(isExtensionInAddonsList(profileDir, a1.id)); |
|
623 do_check_false(isExtensionInAddonsList(userDir, a1.id)); |
|
624 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
625 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
626 do_check_in_crash_annotation(addon1.id, a1.version); |
|
627 do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); |
|
628 |
|
629 do_check_eq(a2, null); |
|
630 do_check_false(isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org")); |
|
631 do_check_false(isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org")); |
|
632 do_check_false(isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org")); |
|
633 |
|
634 do_execute_soon(run_test_9); |
|
635 }); |
|
636 } |
|
637 |
|
638 // More hiding and revealing |
|
639 function run_test_9() { |
|
640 Services.prefs.clearUserPref("extensions.enabledScopes", 0); |
|
641 |
|
642 var dest = userDir.clone(); |
|
643 dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); |
|
644 dest.remove(true); |
|
645 dest = globalDir.clone(); |
|
646 dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); |
|
647 dest.remove(true); |
|
648 addon2.version = "2.4"; |
|
649 writeInstallRDFForExtension(addon2, profileDir); |
|
650 |
|
651 gCachePurged = false; |
|
652 restartManager(); |
|
653 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon2@tests.mozilla.org"]); |
|
654 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); |
|
655 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
656 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
657 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
658 do_check_true(gCachePurged); |
|
659 |
|
660 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
661 "addon2@tests.mozilla.org", |
|
662 "addon3@tests.mozilla.org", |
|
663 "addon4@tests.mozilla.org", |
|
664 "addon5@tests.mozilla.org"], |
|
665 function([a1, a2, a3, a4, a5]) { |
|
666 |
|
667 do_check_neq(a1, null); |
|
668 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
669 do_check_eq(a1.version, "1.2"); |
|
670 do_check_true(isExtensionInAddonsList(profileDir, a1.id)); |
|
671 do_check_false(isExtensionInAddonsList(userDir, a1.id)); |
|
672 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
673 do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
674 do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); |
|
675 |
|
676 do_check_neq(a2, null); |
|
677 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
678 do_check_eq(a2.version, "2.4"); |
|
679 do_check_true(isExtensionInAddonsList(profileDir, a2.id)); |
|
680 do_check_false(isExtensionInAddonsList(userDir, a2.id)); |
|
681 do_check_false(isExtensionInAddonsList(globalDir, a2.id)); |
|
682 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
683 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
684 do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); |
|
685 |
|
686 do_check_eq(a3, null); |
|
687 do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); |
|
688 |
|
689 do_check_eq(a4, null); |
|
690 do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); |
|
691 |
|
692 do_check_eq(a5, null); |
|
693 do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); |
|
694 |
|
695 do_execute_soon(run_test_10); |
|
696 }); |
|
697 } |
|
698 |
|
699 // Checks that a removal from one location and an addition in another location |
|
700 // for the same item is handled |
|
701 function run_test_10() { |
|
702 var dest = profileDir.clone(); |
|
703 dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); |
|
704 dest.remove(true); |
|
705 addon1.version = "1.3"; |
|
706 writeInstallRDFForExtension(addon1, userDir); |
|
707 |
|
708 gCachePurged = false; |
|
709 restartManager(); |
|
710 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
711 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org"]); |
|
712 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); |
|
713 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
714 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
715 do_check_true(gCachePurged); |
|
716 |
|
717 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
718 "addon2@tests.mozilla.org", |
|
719 "addon3@tests.mozilla.org", |
|
720 "addon4@tests.mozilla.org", |
|
721 "addon5@tests.mozilla.org"], |
|
722 function([a1, a2, a3, a4, a5]) { |
|
723 |
|
724 do_check_neq(a1, null); |
|
725 do_check_eq(a1.id, "addon1@tests.mozilla.org"); |
|
726 do_check_eq(a1.version, "1.3"); |
|
727 do_check_false(isExtensionInAddonsList(profileDir, a1.id)); |
|
728 do_check_true(isExtensionInAddonsList(userDir, a1.id)); |
|
729 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
730 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
731 do_check_eq(a1.scope, AddonManager.SCOPE_USER); |
|
732 |
|
733 do_check_neq(a2, null); |
|
734 do_check_eq(a2.id, "addon2@tests.mozilla.org"); |
|
735 do_check_eq(a2.version, "2.4"); |
|
736 do_check_true(isExtensionInAddonsList(profileDir, a2.id)); |
|
737 do_check_false(isExtensionInAddonsList(userDir, a2.id)); |
|
738 do_check_false(isExtensionInAddonsList(globalDir, a2.id)); |
|
739 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); |
|
740 do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); |
|
741 do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); |
|
742 |
|
743 do_check_eq(a3, null); |
|
744 do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); |
|
745 |
|
746 do_check_eq(a4, null); |
|
747 do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); |
|
748 |
|
749 do_check_eq(a5, null); |
|
750 do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); |
|
751 |
|
752 do_execute_soon(run_test_11); |
|
753 }); |
|
754 } |
|
755 |
|
756 // This should remove any remaining items |
|
757 function run_test_11() { |
|
758 var dest = userDir.clone(); |
|
759 dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); |
|
760 dest.remove(true); |
|
761 dest = profileDir.clone(); |
|
762 dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); |
|
763 dest.remove(true); |
|
764 |
|
765 gCachePurged = false; |
|
766 restartManager(); |
|
767 check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); |
|
768 check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); |
|
769 check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org", |
|
770 "addon2@tests.mozilla.org"]); |
|
771 check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); |
|
772 check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); |
|
773 do_check_true(gCachePurged); |
|
774 |
|
775 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
776 "addon2@tests.mozilla.org", |
|
777 "addon3@tests.mozilla.org", |
|
778 "addon4@tests.mozilla.org", |
|
779 "addon5@tests.mozilla.org"], |
|
780 function([a1, a2, a3, a4, a5]) { |
|
781 |
|
782 do_check_eq(a1, null); |
|
783 do_check_eq(a2, null); |
|
784 do_check_eq(a3, null); |
|
785 do_check_eq(a4, null); |
|
786 do_check_eq(a5, null); |
|
787 do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); |
|
788 do_check_false(isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org")); |
|
789 do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); |
|
790 do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); |
|
791 do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); |
|
792 do_check_false(isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org")); |
|
793 do_check_false(isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org")); |
|
794 do_check_false(isExtensionInAddonsList(userDir, "addon3@tests.mozilla.org")); |
|
795 do_check_false(isExtensionInAddonsList(userDir, "addon4@tests.mozilla.org")); |
|
796 do_check_false(isExtensionInAddonsList(userDir, "addon5@tests.mozilla.org")); |
|
797 do_check_false(isExtensionInAddonsList(globalDir, "addon1@tests.mozilla.org")); |
|
798 do_check_false(isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org")); |
|
799 do_check_false(isExtensionInAddonsList(globalDir, "addon3@tests.mozilla.org")); |
|
800 do_check_false(isExtensionInAddonsList(globalDir, "addon4@tests.mozilla.org")); |
|
801 do_check_false(isExtensionInAddonsList(globalDir, "addon5@tests.mozilla.org")); |
|
802 do_check_not_in_crash_annotation(addon1.id, addon1.version); |
|
803 do_check_not_in_crash_annotation(addon2.id, addon2.version); |
|
804 |
|
805 do_execute_soon(run_test_12); |
|
806 }); |
|
807 } |
|
808 |
|
809 // Test that auto-disabling for specific scopes works |
|
810 function run_test_12() { |
|
811 Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_USER); |
|
812 |
|
813 writeInstallRDFForExtension(addon1, profileDir); |
|
814 writeInstallRDFForExtension(addon2, userDir); |
|
815 writeInstallRDFForExtension(addon3, globalDir); |
|
816 |
|
817 restartManager(); |
|
818 |
|
819 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
820 "addon2@tests.mozilla.org", |
|
821 "addon3@tests.mozilla.org", |
|
822 "addon4@tests.mozilla.org", |
|
823 "addon5@tests.mozilla.org"], |
|
824 callback_soon(function([a1, a2, a3, a4, a5]) { |
|
825 do_check_neq(a1, null); |
|
826 do_check_false(a1.userDisabled); |
|
827 do_check_true(a1.isActive); |
|
828 |
|
829 do_check_neq(a2, null); |
|
830 do_check_true(a2.userDisabled); |
|
831 do_check_false(a2.isActive); |
|
832 |
|
833 do_check_neq(a3, null); |
|
834 do_check_false(a3.userDisabled); |
|
835 do_check_true(a3.isActive); |
|
836 |
|
837 var dest = profileDir.clone(); |
|
838 dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); |
|
839 dest.remove(true); |
|
840 dest = userDir.clone(); |
|
841 dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); |
|
842 dest.remove(true); |
|
843 dest = globalDir.clone(); |
|
844 dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); |
|
845 dest.remove(true); |
|
846 |
|
847 restartManager(); |
|
848 |
|
849 Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_SYSTEM); |
|
850 |
|
851 writeInstallRDFForExtension(addon1, profileDir); |
|
852 writeInstallRDFForExtension(addon2, userDir); |
|
853 writeInstallRDFForExtension(addon3, globalDir); |
|
854 |
|
855 restartManager(); |
|
856 |
|
857 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
858 "addon2@tests.mozilla.org", |
|
859 "addon3@tests.mozilla.org", |
|
860 "addon4@tests.mozilla.org", |
|
861 "addon5@tests.mozilla.org"], |
|
862 function([a1, a2, a3, a4, a5]) { |
|
863 do_check_neq(a1, null); |
|
864 do_check_false(a1.userDisabled); |
|
865 do_check_true(a1.isActive); |
|
866 |
|
867 do_check_neq(a2, null); |
|
868 do_check_false(a2.userDisabled); |
|
869 do_check_true(a2.isActive); |
|
870 |
|
871 do_check_neq(a3, null); |
|
872 do_check_true(a3.userDisabled); |
|
873 do_check_false(a3.isActive); |
|
874 |
|
875 var dest = profileDir.clone(); |
|
876 dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); |
|
877 dest.remove(true); |
|
878 dest = userDir.clone(); |
|
879 dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); |
|
880 dest.remove(true); |
|
881 dest = globalDir.clone(); |
|
882 dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); |
|
883 dest.remove(true); |
|
884 |
|
885 restartManager(); |
|
886 |
|
887 Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_USER + AddonManager.SCOPE_SYSTEM); |
|
888 |
|
889 writeInstallRDFForExtension(addon1, profileDir); |
|
890 writeInstallRDFForExtension(addon2, userDir); |
|
891 writeInstallRDFForExtension(addon3, globalDir); |
|
892 |
|
893 restartManager(); |
|
894 |
|
895 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
896 "addon2@tests.mozilla.org", |
|
897 "addon3@tests.mozilla.org", |
|
898 "addon4@tests.mozilla.org", |
|
899 "addon5@tests.mozilla.org"], |
|
900 function([a1, a2, a3, a4, a5]) { |
|
901 do_check_neq(a1, null); |
|
902 do_check_false(a1.userDisabled); |
|
903 do_check_true(a1.isActive); |
|
904 |
|
905 do_check_neq(a2, null); |
|
906 do_check_true(a2.userDisabled); |
|
907 do_check_false(a2.isActive); |
|
908 |
|
909 do_check_neq(a3, null); |
|
910 do_check_true(a3.userDisabled); |
|
911 do_check_false(a3.isActive); |
|
912 |
|
913 do_execute_soon(end_test); |
|
914 }); |
|
915 }); |
|
916 })); |
|
917 } |