Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
5 // This verifies that the themes switch as expected
7 const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin";
9 const profileDir = gProfD.clone();
10 profileDir.append("extensions");
12 function run_test() {
13 do_test_pending();
14 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
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);
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);
41 startupManager();
43 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
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));
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));
63 run_test_1(d, a);
64 });
65 }
67 function end_test() {
68 do_execute_soon(do_test_finished);
69 }
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;
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));
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));
90 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
92 d.userDisabled = false;
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));
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));
108 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
110 do_execute_soon(run_test_2);
111 }
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");
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));
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));
136 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
138 a.userDisabled = false;
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));
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));
154 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
156 d.userDisabled = false;
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));
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));
172 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
174 a.userDisabled = false;
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));
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));
190 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
192 do_execute_soon(check_test_2);
193 });
194 }
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");
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));
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));
216 d.userDisabled = false;
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));
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));
232 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0");
234 restartManager();
236 do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0");
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));
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));
256 end_test();
257 });
258 }));
259 }