|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
3 */ |
|
4 |
|
5 // This verifies that multiple calls to the async API return fully formed |
|
6 // add-ons |
|
7 |
|
8 var addon1 = { |
|
9 id: "addon1@tests.mozilla.org", |
|
10 version: "1.0", |
|
11 name: "Test 1", |
|
12 targetApplications: [{ |
|
13 id: "xpcshell@tests.mozilla.org", |
|
14 minVersion: "1", |
|
15 maxVersion: "1" |
|
16 }] |
|
17 }; |
|
18 |
|
19 const profileDir = gProfD.clone(); |
|
20 profileDir.append("extensions"); |
|
21 |
|
22 var gAddon; |
|
23 |
|
24 // Sets up the profile by installing an add-on. |
|
25 function run_test() { |
|
26 do_test_pending(); |
|
27 |
|
28 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); |
|
29 |
|
30 writeInstallRDFForExtension(addon1, profileDir); |
|
31 |
|
32 startupManager(); |
|
33 |
|
34 run_test_1(); |
|
35 } |
|
36 |
|
37 // Verifies that multiple calls to get an add-on at various stages of execution |
|
38 // return an add-on with a valid name. |
|
39 function run_test_1() { |
|
40 var count = 0; |
|
41 |
|
42 AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { |
|
43 do_check_neq(a1, null); |
|
44 do_check_eq(a1.name, "Test 1"); |
|
45 |
|
46 if (count == 0) |
|
47 gAddon = a1; |
|
48 else |
|
49 do_check_eq(a1, gAddon); |
|
50 count++; |
|
51 if (count == 4) |
|
52 run_test_2(); |
|
53 }); |
|
54 |
|
55 AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { |
|
56 do_check_neq(a1, null); |
|
57 do_check_eq(a1.name, "Test 1"); |
|
58 |
|
59 if (count == 0) |
|
60 gAddon = a1; |
|
61 else |
|
62 do_check_eq(a1, gAddon); |
|
63 count++; |
|
64 if (count == 4) |
|
65 run_test_2(); |
|
66 }); |
|
67 |
|
68 do_execute_soon(function() { |
|
69 AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { |
|
70 do_check_neq(a1, null); |
|
71 do_check_eq(a1.name, "Test 1"); |
|
72 |
|
73 if (count == 0) |
|
74 gAddon = a1; |
|
75 else |
|
76 do_check_eq(a1, gAddon); |
|
77 count++; |
|
78 if (count == 4) |
|
79 run_test_2(); |
|
80 }); |
|
81 }); |
|
82 |
|
83 do_execute_soon(function() { |
|
84 do_execute_soon(function() { |
|
85 AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { |
|
86 do_check_neq(a1, null); |
|
87 do_check_eq(a1.name, "Test 1"); |
|
88 |
|
89 if (count == 0) |
|
90 gAddon = a1; |
|
91 else |
|
92 do_check_eq(a1, gAddon); |
|
93 count++; |
|
94 if (count == 4) |
|
95 run_test_2(); |
|
96 }); |
|
97 }); |
|
98 }); |
|
99 } |
|
100 |
|
101 // Verifies that a subsequent call gets the same add-on from the cache |
|
102 function run_test_2() { |
|
103 AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { |
|
104 do_check_neq(a1, null); |
|
105 do_check_eq(a1.name, "Test 1"); |
|
106 |
|
107 do_check_eq(a1, gAddon); |
|
108 |
|
109 do_execute_soon(do_test_finished); |
|
110 }); |
|
111 |
|
112 } |