|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
3 */ |
|
4 |
|
5 // This verifies that the themes switch as expected |
|
6 |
|
7 const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; |
|
8 |
|
9 const profileDir = gProfD.clone(); |
|
10 profileDir.append("extensions"); |
|
11 |
|
12 function run_test() { |
|
13 do_test_pending(); |
|
14 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); |
|
15 |
|
16 writeInstallRDFForExtension({ |
|
17 id: "default@tests.mozilla.org", |
|
18 version: "1.0", |
|
19 name: "Default", |
|
20 internalName: "classic/1.0", |
|
21 targetApplications: [{ |
|
22 id: "xpcshell@tests.mozilla.org", |
|
23 minVersion: "1", |
|
24 maxVersion: "2" |
|
25 }] |
|
26 }, profileDir); |
|
27 |
|
28 writeInstallRDFForExtension({ |
|
29 id: "alternate@tests.mozilla.org", |
|
30 version: "1.0", |
|
31 name: "Test 1", |
|
32 type: 4, |
|
33 internalName: "alternate/1.0", |
|
34 targetApplications: [{ |
|
35 id: "xpcshell@tests.mozilla.org", |
|
36 minVersion: "1", |
|
37 maxVersion: "2" |
|
38 }] |
|
39 }, profileDir); |
|
40 |
|
41 startupManager(); |
|
42 |
|
43 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
44 |
|
45 AddonManager.getAddonsByIDs(["default@tests.mozilla.org", |
|
46 "alternate@tests.mozilla.org"], function([d, a]) { |
|
47 do_check_neq(d, null); |
|
48 do_check_false(d.userDisabled); |
|
49 do_check_false(d.appDisabled); |
|
50 do_check_true(d.isActive); |
|
51 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
52 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
53 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
54 |
|
55 do_check_neq(a, null); |
|
56 do_check_true(a.userDisabled); |
|
57 do_check_false(a.appDisabled); |
|
58 do_check_false(a.isActive); |
|
59 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
60 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
61 do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
62 |
|
63 run_test_1(d, a); |
|
64 }); |
|
65 } |
|
66 |
|
67 function end_test() { |
|
68 do_execute_soon(do_test_finished); |
|
69 } |
|
70 |
|
71 // Checks switching to a different theme and back again leaves everything the |
|
72 // same |
|
73 function run_test_1(d, a) { |
|
74 a.userDisabled = false; |
|
75 |
|
76 do_check_true(d.userDisabled); |
|
77 do_check_false(d.appDisabled); |
|
78 do_check_true(d.isActive); |
|
79 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
80 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
81 do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
82 |
|
83 do_check_false(a.userDisabled); |
|
84 do_check_false(a.appDisabled); |
|
85 do_check_false(a.isActive); |
|
86 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
87 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
88 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
89 |
|
90 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
91 |
|
92 d.userDisabled = false; |
|
93 |
|
94 do_check_false(d.userDisabled); |
|
95 do_check_false(d.appDisabled); |
|
96 do_check_true(d.isActive); |
|
97 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
98 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
99 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
100 |
|
101 do_check_true(a.userDisabled); |
|
102 do_check_false(a.appDisabled); |
|
103 do_check_false(a.isActive); |
|
104 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
105 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
106 do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
107 |
|
108 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
109 |
|
110 do_execute_soon(run_test_2); |
|
111 } |
|
112 |
|
113 // Tests that after the restart themes can be changed as expected |
|
114 function run_test_2() { |
|
115 restartManager(); |
|
116 AddonManager.getAddonsByIDs(["default@tests.mozilla.org", |
|
117 "alternate@tests.mozilla.org"], function([d, a]) { |
|
118 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
119 |
|
120 do_check_neq(d, null); |
|
121 do_check_false(d.userDisabled); |
|
122 do_check_false(d.appDisabled); |
|
123 do_check_true(d.isActive); |
|
124 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
125 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
126 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
127 |
|
128 do_check_neq(a, null); |
|
129 do_check_true(a.userDisabled); |
|
130 do_check_false(a.appDisabled); |
|
131 do_check_false(a.isActive); |
|
132 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
133 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
134 do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
135 |
|
136 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
137 |
|
138 a.userDisabled = false; |
|
139 |
|
140 do_check_true(d.userDisabled); |
|
141 do_check_false(d.appDisabled); |
|
142 do_check_true(d.isActive); |
|
143 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
144 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
145 do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
146 |
|
147 do_check_false(a.userDisabled); |
|
148 do_check_false(a.appDisabled); |
|
149 do_check_false(a.isActive); |
|
150 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
151 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
152 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
153 |
|
154 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
155 |
|
156 d.userDisabled = false; |
|
157 |
|
158 do_check_false(d.userDisabled); |
|
159 do_check_false(d.appDisabled); |
|
160 do_check_true(d.isActive); |
|
161 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
162 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
163 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
164 |
|
165 do_check_true(a.userDisabled); |
|
166 do_check_false(a.appDisabled); |
|
167 do_check_false(a.isActive); |
|
168 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
169 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
170 do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
171 |
|
172 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
173 |
|
174 a.userDisabled = false; |
|
175 |
|
176 do_check_true(d.userDisabled); |
|
177 do_check_false(d.appDisabled); |
|
178 do_check_true(d.isActive); |
|
179 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
180 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
181 do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
182 |
|
183 do_check_false(a.userDisabled); |
|
184 do_check_false(a.appDisabled); |
|
185 do_check_false(a.isActive); |
|
186 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
187 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
188 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
189 |
|
190 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
191 |
|
192 do_execute_soon(check_test_2); |
|
193 }); |
|
194 } |
|
195 |
|
196 function check_test_2() { |
|
197 restartManager(); |
|
198 AddonManager.getAddonsByIDs(["default@tests.mozilla.org", |
|
199 "alternate@tests.mozilla.org"], callback_soon(function([d, a]) { |
|
200 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0"); |
|
201 |
|
202 do_check_true(d.userDisabled); |
|
203 do_check_false(d.appDisabled); |
|
204 do_check_false(d.isActive); |
|
205 do_check_false(isThemeInAddonsList(profileDir, d.id)); |
|
206 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
207 do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
208 |
|
209 do_check_false(a.userDisabled); |
|
210 do_check_false(a.appDisabled); |
|
211 do_check_true(a.isActive); |
|
212 do_check_true(isThemeInAddonsList(profileDir, a.id)); |
|
213 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
214 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
215 |
|
216 d.userDisabled = false; |
|
217 |
|
218 do_check_false(d.userDisabled); |
|
219 do_check_false(d.appDisabled); |
|
220 do_check_false(d.isActive); |
|
221 do_check_false(isThemeInAddonsList(profileDir, d.id)); |
|
222 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
223 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
224 |
|
225 do_check_true(a.userDisabled); |
|
226 do_check_false(a.appDisabled); |
|
227 do_check_true(a.isActive); |
|
228 do_check_true(isThemeInAddonsList(profileDir, a.id)); |
|
229 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
230 do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
231 |
|
232 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0"); |
|
233 |
|
234 restartManager(); |
|
235 |
|
236 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); |
|
237 |
|
238 AddonManager.getAddonsByIDs(["default@tests.mozilla.org", |
|
239 "alternate@tests.mozilla.org"], function([d, a]) { |
|
240 do_check_neq(d, null); |
|
241 do_check_false(d.userDisabled); |
|
242 do_check_false(d.appDisabled); |
|
243 do_check_true(d.isActive); |
|
244 do_check_true(isThemeInAddonsList(profileDir, d.id)); |
|
245 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
246 do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
247 |
|
248 do_check_neq(a, null); |
|
249 do_check_true(a.userDisabled); |
|
250 do_check_false(a.appDisabled); |
|
251 do_check_false(a.isActive); |
|
252 do_check_false(isThemeInAddonsList(profileDir, a.id)); |
|
253 do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); |
|
254 do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); |
|
255 |
|
256 end_test(); |
|
257 }); |
|
258 })); |
|
259 } |