|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <head> |
|
4 <title>Test for SpecialPowers extension</title> |
|
5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> |
|
7 </head> |
|
8 <body onload="starttest();"> |
|
9 |
|
10 <pre id="test"> |
|
11 <script class="testbody" type="text/javascript"> |
|
12 function starttest() { |
|
13 try { |
|
14 SpecialPowers.setBoolPref("test.bool", 1); |
|
15 } catch(e) { |
|
16 SpecialPowers.setBoolPref("test.bool", true); |
|
17 } |
|
18 try { |
|
19 SpecialPowers.setIntPref("test.int", true); |
|
20 } catch(e) { |
|
21 SpecialPowers.setIntPref("test.int", 1); |
|
22 } |
|
23 SpecialPowers.setCharPref("test.char", 'test'); |
|
24 |
|
25 setTimeout(test1, 0, 0); |
|
26 } |
|
27 |
|
28 SimpleTest.waitForExplicitFinish(); |
|
29 |
|
30 function test1(aCount) { |
|
31 if (aCount >= 20) { |
|
32 ok(false, "Too many times attempting to set pref, aborting"); |
|
33 SimpleTest.finish(); |
|
34 return; |
|
35 } |
|
36 |
|
37 try { |
|
38 is(SpecialPowers.getBoolPref('test.bool'), true, 'test.bool should be true'); |
|
39 } catch(e) { |
|
40 setTimeout(test1, 0, ++aCount); |
|
41 return; |
|
42 } |
|
43 |
|
44 try { |
|
45 is(SpecialPowers.getIntPref('test.int'), 1, 'test.int should be 1'); |
|
46 } catch(e) { |
|
47 setTimeout(test1, 0, ++aCount); |
|
48 return; |
|
49 } |
|
50 |
|
51 try { |
|
52 is(SpecialPowers.getCharPref('test.char'), 'test', 'test.char should be test'); |
|
53 } catch(e) { |
|
54 setTimeout(test1, 0, ++aCount); |
|
55 return; |
|
56 } |
|
57 |
|
58 test2(); |
|
59 } |
|
60 |
|
61 function test2() { |
|
62 // test non-changing values |
|
63 SpecialPowers.pushPrefEnv({"set": [["test.bool", true], ["test.int", 1], ["test.char", "test"]]}, test3); |
|
64 } |
|
65 |
|
66 function test3() { |
|
67 // test changing char pref |
|
68 is(SpecialPowers.getBoolPref('test.bool'), true, 'test.bool should be true'); |
|
69 is(SpecialPowers.getIntPref('test.int'), 1, 'test.int should be 1'); |
|
70 is(SpecialPowers.getCharPref('test.char'), 'test', 'test.char should be test'); |
|
71 SpecialPowers.pushPrefEnv({"set": [["test.bool", true], ["test.int", 1], ["test.char", "test2"]]}, test4); |
|
72 } |
|
73 |
|
74 function test4() { |
|
75 // test changing all values and adding test.char2 pref |
|
76 is(SpecialPowers.getCharPref('test.char'), 'test2', 'test.char should be test2'); |
|
77 SpecialPowers.pushPrefEnv({"set": [["test.bool", false], ["test.int", 10], ["test.char", "test2"], ["test.char2", "test"]]}, test5); |
|
78 } |
|
79 |
|
80 function test5() { |
|
81 // test flushPrefEnv |
|
82 is(SpecialPowers.getBoolPref('test.bool'), false, 'test.bool should be false'); |
|
83 is(SpecialPowers.getIntPref('test.int'), 10, 'test.int should be 10'); |
|
84 is(SpecialPowers.getCharPref('test.char'), 'test2', 'test.char should be test2'); |
|
85 is(SpecialPowers.getCharPref('test.char2'), 'test', 'test.char2 should be test'); |
|
86 SpecialPowers.flushPrefEnv(test6); |
|
87 } |
|
88 |
|
89 function test6() { |
|
90 // test clearing prefs |
|
91 is(SpecialPowers.getBoolPref('test.bool'), true, 'test.bool should be true'); |
|
92 is(typeof SpecialPowers.getBoolPref('test.bool'), typeof true, 'test.bool should be boolean'); |
|
93 is(SpecialPowers.getIntPref('test.int'), 1, 'test.int should be 1'); |
|
94 is(typeof SpecialPowers.getIntPref('test.int'), typeof 1, 'test.int should be integer'); |
|
95 is(SpecialPowers.getCharPref('test.char'), 'test', 'test.char should be test'); |
|
96 is(typeof SpecialPowers.getCharPref('test.char'), typeof 'test', 'test.char should be String'); |
|
97 try { |
|
98 SpecialPowers.getCharPref('test.char2'); |
|
99 ok(false, 'This ok should not be reached!'); |
|
100 } catch(e) { |
|
101 ok(true, 'getCharPref("test.char2") should throw'); |
|
102 } |
|
103 SpecialPowers.pushPrefEnv({"clear": [["test.bool"], ["test.int"], ["test.char"], ["test.char2"]]}, test6b); |
|
104 } |
|
105 |
|
106 function test6b() { |
|
107 // test if clearing another time doesn't cause issues |
|
108 SpecialPowers.pushPrefEnv({"clear": [["test.bool"], ["test.int"], ["test.char"], ["test.char2"]]}, test7); |
|
109 } |
|
110 |
|
111 function test7() { |
|
112 try { |
|
113 SpecialPowers.getBoolPref('test.bool'); |
|
114 ok(false, 'This ok should not be reached!'); |
|
115 } catch(e) { |
|
116 ok(true, 'getBoolPref("test.bool") should throw'); |
|
117 } |
|
118 |
|
119 try { |
|
120 SpecialPowers.getIntPref('test.int'); |
|
121 ok(false, 'This ok should not be reached!'); |
|
122 } catch(e) { |
|
123 ok(true, 'getIntPref("test.int") should throw'); |
|
124 } |
|
125 |
|
126 try { |
|
127 SpecialPowers.getCharPref('test.char'); |
|
128 ok(false, 'This ok should not be reached!'); |
|
129 } catch(e) { |
|
130 ok(true, 'getCharPref("test.char") should throw'); |
|
131 } |
|
132 |
|
133 try { |
|
134 SpecialPowers.getCharPref('test.char2'); |
|
135 ok(false, 'This ok should not be reached!'); |
|
136 } catch(e) { |
|
137 ok(true, 'getCharPref("test.char2") should throw'); |
|
138 } |
|
139 |
|
140 SpecialPowers.flushPrefEnv(test8); |
|
141 } |
|
142 |
|
143 function test8() { |
|
144 is(SpecialPowers.getBoolPref('test.bool'), true, 'test.bool should be true'); |
|
145 is(typeof SpecialPowers.getBoolPref('test.bool'), typeof true, 'test.bool should be boolean'); |
|
146 is(SpecialPowers.getIntPref('test.int'), 1, 'test.int should be 1'); |
|
147 is(typeof SpecialPowers.getIntPref('test.int'), typeof 1, 'test.int should be integer'); |
|
148 is(SpecialPowers.getCharPref('test.char'), 'test', 'test.char should be test'); |
|
149 is(typeof SpecialPowers.getCharPref('test.char'), typeof 'test', 'test.char should be String'); |
|
150 try { |
|
151 SpecialPowers.getCharPref('test.char2'); |
|
152 ok(false, 'This ok should not be reached!'); |
|
153 } catch(e) { |
|
154 ok(true, 'getCharPref("test.char2") should throw'); |
|
155 } |
|
156 SpecialPowers.clearUserPref("test.bool"); |
|
157 SpecialPowers.clearUserPref("test.int"); |
|
158 SpecialPowers.clearUserPref("test.char"); |
|
159 setTimeout(test9, 0, 0); |
|
160 } |
|
161 |
|
162 function test9(aCount) { |
|
163 if (aCount >= 20) { |
|
164 ok(false, "Too many times attempting to set pref, aborting"); |
|
165 SimpleTest.finish(); |
|
166 return; |
|
167 } |
|
168 |
|
169 try { |
|
170 SpecialPowers.getBoolPref('test.bool'); |
|
171 setTimeout(test9, 0, ++aCount); |
|
172 } catch(e) { |
|
173 test10(0); |
|
174 } |
|
175 } |
|
176 |
|
177 function test10(aCount) { |
|
178 if (aCount >= 20) { |
|
179 ok(false, "Too many times attempting to set pref, aborting"); |
|
180 SimpleTest.finish(); |
|
181 return; |
|
182 } |
|
183 |
|
184 try { |
|
185 SpecialPowers.getIntPref('test.int'); |
|
186 setTimeout(test10, 0, ++aCount); |
|
187 } catch(e) { |
|
188 test11(0); |
|
189 } |
|
190 } |
|
191 |
|
192 function test11(aCount) { |
|
193 if (aCount >= 20) { |
|
194 ok(false, "Too many times attempting to set pref, aborting"); |
|
195 SimpleTest.finish(); |
|
196 return; |
|
197 } |
|
198 |
|
199 try { |
|
200 SpecialPowers.getCharPref('test.char'); |
|
201 setTimeout(test11, 0, ++aCount); |
|
202 } catch(e) { |
|
203 SimpleTest.finish(); |
|
204 } |
|
205 } |
|
206 // todo - test non-changing values, test complex values, test mixing of pushprefEnv 'set' and 'clear' |
|
207 // When bug 776424 gets fixed, getPref doesn't throw anymore, so this test would have to be changed accordingly |
|
208 </script> |
|
209 </pre> |
|
210 </body> |
|
211 </html> |