toolkit/mozapps/extensions/test/xpcshell/test_pref_properties.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:6286cbc46256
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 // Tests the preference-related properties of AddonManager
5 // eg: AddonManager.checkCompatibility, AddonManager.updateEnabled, etc
6
7 var gManagerEventsListener = {
8 seenEvents: [],
9 init: function() {
10 let events = ["onCompatibilityModeChanged", "onCheckUpdateSecurityChanged",
11 "onUpdateModeChanged"];
12 events.forEach(function(aEvent) {
13 this[aEvent] = function() {
14 do_print("Saw event " + aEvent);
15 this.seenEvents.push(aEvent);
16 }
17 }, this);
18 AddonManager.addManagerListener(this);
19 // Try to add twice, to test that the second time silently fails.
20 AddonManager.addManagerListener(this);
21 },
22 shutdown: function() {
23 AddonManager.removeManagerListener(this);
24 },
25 expect: function(aEvents) {
26 this.expectedEvents = aEvents;
27 },
28 checkExpected: function() {
29 do_print("Checking expected events...");
30 while (this.expectedEvents.length > 0) {
31 let event = this.expectedEvents.pop();
32 do_print("Looking for expected event " + event);
33 let matchingEvents = this.seenEvents.filter(function(aSeenEvent) {
34 return aSeenEvent == event;
35 });
36 do_check_eq(matchingEvents.length, 1);
37 }
38 this.seenEvents = [];
39 }
40 }
41
42 function run_test() {
43 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
44
45 Services.prefs.setBoolPref("extensions.update.enabled", true);
46 Services.prefs.setBoolPref("extensions.update.autoUpdateDefault", true);
47 Services.prefs.setBoolPref("extensions.strictCompatibility", true);
48 Services.prefs.setBoolPref("extensions.checkUpdatesecurity", true);
49
50 startupManager();
51 gManagerEventsListener.init();
52
53
54 // AddonManager.updateEnabled
55 gManagerEventsListener.expect(["onUpdateModeChanged"]);
56 AddonManager.updateEnabled = false;
57 gManagerEventsListener.checkExpected();
58 do_check_false(AddonManager.updateEnabled);
59 do_check_false(Services.prefs.getBoolPref("extensions.update.enabled"));
60
61 gManagerEventsListener.expect([]);
62 AddonManager.updateEnabled = false;
63 gManagerEventsListener.checkExpected();
64 do_check_false(AddonManager.updateEnabled);
65 do_check_false(Services.prefs.getBoolPref("extensions.update.enabled"));
66
67 gManagerEventsListener.expect(["onUpdateModeChanged"]);
68 AddonManager.updateEnabled = true;
69 gManagerEventsListener.checkExpected();
70 do_check_true(AddonManager.updateEnabled);
71 do_check_true(Services.prefs.getBoolPref("extensions.update.enabled"));
72
73 gManagerEventsListener.expect([]);
74 AddonManager.updateEnabled = true;
75 gManagerEventsListener.checkExpected();
76 do_check_true(AddonManager.updateEnabled);
77 do_check_true(Services.prefs.getBoolPref("extensions.update.enabled"));
78
79 // AddonManager.autoUpdateDefault
80 gManagerEventsListener.expect(["onUpdateModeChanged"]);
81 AddonManager.autoUpdateDefault = false;
82 gManagerEventsListener.checkExpected();
83 do_check_false(AddonManager.autoUpdateDefault);
84 do_check_false(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
85
86 gManagerEventsListener.expect([]);
87 AddonManager.autoUpdateDefault = false;
88 gManagerEventsListener.checkExpected();
89 do_check_false(AddonManager.autoUpdateDefault);
90 do_check_false(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
91
92 gManagerEventsListener.expect(["onUpdateModeChanged"]);
93 AddonManager.autoUpdateDefault = true;
94 gManagerEventsListener.checkExpected();
95 do_check_true(AddonManager.autoUpdateDefault);
96 do_check_true(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
97
98 gManagerEventsListener.expect([]);
99 AddonManager.autoUpdateDefault = true;
100 gManagerEventsListener.checkExpected();
101 do_check_true(AddonManager.autoUpdateDefault);
102 do_check_true(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
103
104 // AddonManager.strictCompatibility
105 gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
106 AddonManager.strictCompatibility = false;
107 gManagerEventsListener.checkExpected();
108 do_check_false(AddonManager.strictCompatibility);
109 do_check_false(Services.prefs.getBoolPref("extensions.strictCompatibility"));
110
111 gManagerEventsListener.expect([]);
112 AddonManager.strictCompatibility = false;
113 gManagerEventsListener.checkExpected();
114 do_check_false(AddonManager.strictCompatibility);
115 do_check_false(Services.prefs.getBoolPref("extensions.strictCompatibility"));
116
117 gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
118 AddonManager.strictCompatibility = true;
119 gManagerEventsListener.checkExpected();
120 do_check_true(AddonManager.strictCompatibility);
121 do_check_true(Services.prefs.getBoolPref("extensions.strictCompatibility"));
122
123 gManagerEventsListener.expect([]);
124 AddonManager.strictCompatibility = true;
125 gManagerEventsListener.checkExpected();
126 do_check_true(AddonManager.strictCompatibility);
127 do_check_true(Services.prefs.getBoolPref("extensions.strictCompatibility"));
128
129
130 // AddonManager.checkCompatibility
131 if (isNightlyChannel()) {
132 var version = "nightly";
133 } else {
134 version = Services.appinfo.version.replace(/^([^\.]+\.[0-9]+[a-z]*).*/gi, "$1");
135 }
136 const COMPATIBILITY_PREF = "extensions.checkCompatibility." + version;
137
138 gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
139 AddonManager.checkCompatibility = false;
140 gManagerEventsListener.checkExpected();
141 do_check_false(AddonManager.checkCompatibility);
142 do_check_false(Services.prefs.getBoolPref(COMPATIBILITY_PREF));
143
144 gManagerEventsListener.expect([]);
145 AddonManager.checkCompatibility = false;
146 gManagerEventsListener.checkExpected();
147 do_check_false(AddonManager.checkCompatibility);
148 do_check_false(Services.prefs.getBoolPref(COMPATIBILITY_PREF));
149
150 gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
151 AddonManager.checkCompatibility = true;
152 gManagerEventsListener.checkExpected();
153 do_check_true(AddonManager.checkCompatibility);
154 do_check_false(Services.prefs.prefHasUserValue(COMPATIBILITY_PREF));
155
156 gManagerEventsListener.expect([]);
157 AddonManager.checkCompatibility = true;
158 gManagerEventsListener.checkExpected();
159 do_check_true(AddonManager.checkCompatibility);
160 do_check_false(Services.prefs.prefHasUserValue(COMPATIBILITY_PREF));
161
162
163 // AddonManager.checkUpdateSecurity
164 gManagerEventsListener.expect(["onCheckUpdateSecurityChanged"]);
165 AddonManager.checkUpdateSecurity = false;
166 gManagerEventsListener.checkExpected();
167 do_check_false(AddonManager.checkUpdateSecurity);
168 if (AddonManager.checkUpdateSecurityDefault)
169 do_check_false(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
170 else
171 do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
172
173 gManagerEventsListener.expect([]);
174 AddonManager.checkUpdateSecurity = false;
175 gManagerEventsListener.checkExpected();
176 do_check_false(AddonManager.checkUpdateSecurity);
177 if (AddonManager.checkUpdateSecurityDefault)
178 do_check_false(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
179 else
180 do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
181
182 gManagerEventsListener.expect(["onCheckUpdateSecurityChanged"]);
183 AddonManager.checkUpdateSecurity = true;
184 gManagerEventsListener.checkExpected();
185 do_check_true(AddonManager.checkUpdateSecurity);
186 if (!AddonManager.checkUpdateSecurityDefault)
187 do_check_true(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
188 else
189 do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
190
191 gManagerEventsListener.expect([]);
192 AddonManager.checkUpdateSecurity = true;
193 gManagerEventsListener.checkExpected();
194 do_check_true(AddonManager.checkUpdateSecurity);
195 if (!AddonManager.checkUpdateSecurityDefault)
196 do_check_true(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
197 else
198 do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
199
200 gManagerEventsListener.shutdown();
201
202 // AddonManager.hotfixID
203 let hotfixID = "hotfix@tests.mozilla.org";
204 Services.prefs.setCharPref("extensions.hotfix.id", hotfixID);
205 do_check_eq(AddonManager.hotfixID, hotfixID);
206 // Change the pref and make sure the property is updated
207 hotfixID = "hotfix2@tests.mozilla.org";
208 Services.prefs.setCharPref("extensions.hotfix.id", hotfixID);
209 do_check_eq(AddonManager.hotfixID, hotfixID);
210 // Test an invalid pref value
211 hotfixID = 99;
212 Services.prefs.deleteBranch("extensions.hotfix.id");
213 Services.prefs.setIntPref("extensions.hotfix.id", hotfixID);
214 do_check_eq(AddonManager.hotfixID, null);
215 Services.prefs.clearUserPref("extensions.hotfix.id");
216
217 // After removing the listener, ensure we get no further events.
218 gManagerEventsListener.expect([]);
219 AddonManager.updateEnabled = false;
220 gManagerEventsListener.checkExpected();
221 }

mercurial