|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
3 */ |
|
4 |
|
5 // Tests that upgrading an incompatible add-on to a compatible one forces an |
|
6 // EM restart |
|
7 |
|
8 const profileDir = gProfD.clone(); |
|
9 profileDir.append("extensions"); |
|
10 |
|
11 function run_test() { |
|
12 do_test_pending(); |
|
13 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9.2"); |
|
14 |
|
15 var dest = writeInstallRDFForExtension({ |
|
16 id: "addon1@tests.mozilla.org", |
|
17 version: "1.0", |
|
18 name: "Test", |
|
19 targetApplications: [{ |
|
20 id: "xpcshell@tests.mozilla.org", |
|
21 minVersion: "1", |
|
22 maxVersion: "1" |
|
23 }] |
|
24 }, profileDir); |
|
25 // Attempt to make this look like it was added some time in the past so |
|
26 // the update makes the last modified time change. |
|
27 setExtensionModifiedTime(dest, dest.lastModifiedTime - 5000); |
|
28 |
|
29 startupManager(); |
|
30 |
|
31 AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a) { |
|
32 do_check_neq(a, null); |
|
33 do_check_eq(a.version, "1.0"); |
|
34 do_check_false(a.userDisabled); |
|
35 do_check_true(a.appDisabled); |
|
36 do_check_false(a.isActive); |
|
37 do_check_false(isExtensionInAddonsList(profileDir, a.id)); |
|
38 |
|
39 writeInstallRDFForExtension({ |
|
40 id: "addon1@tests.mozilla.org", |
|
41 version: "2.0", |
|
42 name: "Test", |
|
43 targetApplications: [{ |
|
44 id: "xpcshell@tests.mozilla.org", |
|
45 minVersion: "1", |
|
46 maxVersion: "2" |
|
47 }] |
|
48 }, profileDir); |
|
49 |
|
50 restartManager(); |
|
51 |
|
52 AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a) { |
|
53 do_check_neq(a, null); |
|
54 do_check_eq(a.version, "2.0"); |
|
55 do_check_false(a.userDisabled); |
|
56 do_check_false(a.appDisabled); |
|
57 do_check_true(a.isActive); |
|
58 do_check_true(isExtensionInAddonsList(profileDir, a.id)); |
|
59 |
|
60 do_execute_soon(do_test_finished); |
|
61 }); |
|
62 })); |
|
63 } |