|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id={678695} |
|
5 --> |
|
6 <head> |
|
7 <title>Test for Bug {678695} Settings API</title> |
|
8 <script type="text/javascript" src="/MochiKit/MochiKit.js"></script> |
|
9 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> |
|
11 </head> |
|
12 <body> |
|
13 |
|
14 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={678695}">Mozilla Bug {678695}</a> |
|
15 <p id="display"></p> |
|
16 <div id="content" style="display: none"> |
|
17 |
|
18 </div> |
|
19 <pre id="test"> |
|
20 <script class="testbody" type="text/javascript"> |
|
21 |
|
22 "use strict"; |
|
23 |
|
24 if (SpecialPowers.isMainProcess()) { |
|
25 SpecialPowers.Cu.import("resource://gre/modules/SettingsChangeNotifier.jsm"); |
|
26 } |
|
27 |
|
28 SpecialPowers.addPermission("settings-read", true, document); |
|
29 SpecialPowers.addPermission("settings-write", true, document); |
|
30 |
|
31 function onUnwantedSuccess() { |
|
32 ok(false, "onUnwantedSuccess: shouldn't get here"); |
|
33 } |
|
34 |
|
35 function onFailure() { |
|
36 ok(false, "in on Failure!"); |
|
37 } |
|
38 |
|
39 const wifi = {"net3g.apn": "internet.mnc012.mcc345.gprs"}; |
|
40 const wifi2 = {"net3g.apn": "internet.mnc012.mcc345.test"}; |
|
41 var wifi3 = {"net3g.apn2": "internet.mnc012.mcc345.test3"}; |
|
42 var wifiEnabled = {"wifi.enabled": true}; |
|
43 var wifiDisabled = {"wifi.enabled": false}; |
|
44 var screenBright = {"screen.brightness": 0.7}; |
|
45 var screenBright2 = {"screen.brightness": 0.1}; |
|
46 var wifiNetworks0 = { "wifi.networks[0]": { ssid: "myfreenetwork", mac: "01:23:45:67:89:ab", passwd: "secret"}}; |
|
47 var wifiNetworks1 = { "wifi.networks[1]": { ssid: "myfreenetwork2", mac: "01:23:45:67:89:ab", passwd: "secret2"}}; |
|
48 |
|
49 var combination = { |
|
50 "wifi.enabled": false, |
|
51 "screen.brightness": 0.7, |
|
52 "wifi.networks[0]": { ssid: "myfreenetwork", mac: "01:23:45:67:89:ab", passwd: "secret" }, |
|
53 "test.test": true, |
|
54 "net3g.apn2": "internet.mnc012.mcc345.gprs" |
|
55 } |
|
56 |
|
57 function equals(o1, o2) { |
|
58 var k1 = Object.keys(o1).sort(); |
|
59 var k2 = Object.keys(o2).sort(); |
|
60 if (k1.length != k2.length) return false; |
|
61 return k1.zip(k2, function(keyPair) { |
|
62 if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){ |
|
63 return equals(o1[keyPair[0]], o2[keyPair[1]]) |
|
64 } else { |
|
65 return o1[keyPair[0]] == o2[keyPair[1]]; |
|
66 } |
|
67 }).all(); |
|
68 }; |
|
69 |
|
70 function observer1(setting) { |
|
71 is(setting.settingName, "screen.brightness", "Same settingName"); |
|
72 is(setting.settingValue, "0.7", "Same settingvalue"); |
|
73 }; |
|
74 |
|
75 function observer2(setting) { |
|
76 is(setting.settingName, "screen.brightness", "Same settingName"); |
|
77 is(setting.settingValue, "0.7", "Same settingvalue"); |
|
78 }; |
|
79 |
|
80 function observerWithNext(setting) { |
|
81 is(setting.settingName, "screen.brightness", "Same settingName"); |
|
82 is(setting.settingValue, "0.7", "Same settingvalue"); |
|
83 next(); |
|
84 }; |
|
85 |
|
86 function onsettingschangeWithNext(event) { |
|
87 is(event.settingName, "screen.brightness", "Same settingName"); |
|
88 is(event.settingValue, "0.7", "Same settingvalue"); |
|
89 next(); |
|
90 }; |
|
91 |
|
92 function check(o1, o2) { |
|
93 is(JSON.stringify(o1), JSON.stringify(o2), "same"); |
|
94 } |
|
95 |
|
96 var req, req2, req3, req4, req5, req6; |
|
97 var index = 0; |
|
98 |
|
99 var mozSettings = navigator.mozSettings; |
|
100 |
|
101 var steps = [ |
|
102 function () { |
|
103 ok(true, "Deleting database"); |
|
104 var lock = mozSettings.createLock(); |
|
105 req = lock.clear(); |
|
106 req.onsuccess = function () { |
|
107 ok(true, "Deleted the database"); |
|
108 next(); |
|
109 }; |
|
110 }, |
|
111 function () { |
|
112 ok(true, "Setting wifi"); |
|
113 var lock = mozSettings.createLock(); |
|
114 req = lock.set(wifi); |
|
115 req.onsuccess = function () { |
|
116 ok(true, "set done"); |
|
117 } |
|
118 req.onerror = onFailure; |
|
119 |
|
120 var lock2 = mozSettings.createLock(); |
|
121 req2 = lock2.get("net3g.apn"); |
|
122 req2.onsuccess = function () { |
|
123 is(Object.keys(req2.result).length, 1, "length 1"); |
|
124 check(wifi, req2.result); |
|
125 ok(true, "Get net3g.apn Done"); |
|
126 next(); |
|
127 }; |
|
128 req2.onerror = onFailure; |
|
129 }, |
|
130 function () { |
|
131 ok(true, "Change wifi1"); |
|
132 var lock = mozSettings.createLock(); |
|
133 req = lock.set(wifi2); |
|
134 req.onsuccess = function () { |
|
135 ok(true, "Set Done"); |
|
136 }; |
|
137 req.onerror = onFailure; |
|
138 ok(true, "Get changed net3g.apn"); |
|
139 req2 = lock.get("net3g.apn"); |
|
140 req2.onsuccess = function () { |
|
141 is(Object.keys(req2.result).length, 1, "length 1"); |
|
142 check(wifi2, req2.result); |
|
143 ok(true, "Get net3g.apn Done"); |
|
144 next(); |
|
145 }; |
|
146 req2.onerror = onFailure; |
|
147 }, |
|
148 function () { |
|
149 ok(true, "Set Combination"); |
|
150 var lock = mozSettings.createLock(); |
|
151 req3 = lock.set(combination); |
|
152 req3.onsuccess = function () { |
|
153 ok(true, "set done"); |
|
154 req4 = lock.get("net3g.apn2"); |
|
155 req4.onsuccess = function() { |
|
156 ok(true, "Done"); |
|
157 check(combination["net3g.apn2"], req4.result["net3g.apn2"]); |
|
158 next(); |
|
159 } |
|
160 } |
|
161 req3.onerror = onFailure; |
|
162 }, |
|
163 function() { |
|
164 var lock = mozSettings.createLock(); |
|
165 req4 = lock.get("net3g.apn2"); |
|
166 req4.onsuccess = function() { |
|
167 ok(true, "Done"); |
|
168 check(combination["net3g.apn2"], req4.result["net3g.apn2"]); |
|
169 next(); |
|
170 } |
|
171 req4.onerror = onFailure; |
|
172 }, |
|
173 function() { |
|
174 ok(true, "Get unknown key"); |
|
175 var lock = mozSettings.createLock(); |
|
176 req = lock.get("abc.def"); |
|
177 req.onsuccess = function() { |
|
178 is(req.result["abc.def"], undefined, "no result"); |
|
179 next(); |
|
180 }; |
|
181 req.onerror = onFailure; |
|
182 }, |
|
183 function() { |
|
184 ok(true, "adding onsettingchange"); |
|
185 navigator.mozSettings.onsettingchange = onsettingschangeWithNext; |
|
186 var lock = mozSettings.createLock(); |
|
187 req2 = lock.get("screen.brightness"); |
|
188 req2.onsuccess = function() { |
|
189 ok(true, "end adding onsettingchange"); |
|
190 next(); |
|
191 }; |
|
192 req2.onerror = onFailure; |
|
193 }, |
|
194 function() { |
|
195 ok(true, "Test onsettingchange"); |
|
196 var lock = mozSettings.createLock(); |
|
197 req = lock.set(screenBright); |
|
198 req.onsuccess = function () { |
|
199 ok(true, "set done, observer has to call next"); |
|
200 } |
|
201 req.onerror = onFailure; |
|
202 }, |
|
203 function() { |
|
204 ok(true, "delete onsettingschange"); |
|
205 var lock = mozSettings.createLock(); |
|
206 navigator.mozSettings.onsettingchange = null; |
|
207 req = lock.set(screenBright); |
|
208 req.onsuccess = function () { |
|
209 ok(true, "set done"); |
|
210 next(); |
|
211 } |
|
212 req.onerror = onFailure; |
|
213 }, |
|
214 function () { |
|
215 ok(true, "Waiting for all set callbacks"); |
|
216 var lock = mozSettings.createLock(); |
|
217 req = lock.get("screen.brightness"); |
|
218 req.onsuccess = function() { |
|
219 ok(true, "Done"); |
|
220 next(); |
|
221 } |
|
222 req.onerror = onFailure; |
|
223 }, |
|
224 function() { |
|
225 ok(true, "adding Observers 1"); |
|
226 navigator.mozSettings.addObserver("screen.brightness", observer1); |
|
227 navigator.mozSettings.addObserver("screen.brightness", observer1); |
|
228 navigator.mozSettings.addObserver("screen.brightness", observer2); |
|
229 navigator.mozSettings.addObserver("screen.brightness", observerWithNext); |
|
230 var lock = mozSettings.createLock(); |
|
231 req2 = lock.get("screen.brightness"); |
|
232 req2.onsuccess = function() { |
|
233 ok(true, "set observeSetting done!"); |
|
234 next(); |
|
235 }; |
|
236 req2.onerror = onFailure; |
|
237 }, |
|
238 function() { |
|
239 ok(true, "test observers"); |
|
240 var lock = mozSettings.createLock(); |
|
241 req = lock.set(screenBright); |
|
242 req.onsuccess = function () { |
|
243 ok(true, "set done"); |
|
244 } |
|
245 req.onerror = onFailure; |
|
246 }, |
|
247 function() { |
|
248 ok(true, "removing Event Listener"); |
|
249 var lock = mozSettings.createLock(); |
|
250 req = lock.set(screenBright); |
|
251 req.onsuccess = function () { |
|
252 ok(true, "set done"); |
|
253 navigator.mozSettings.removeObserver("screen.brightness", observer2); |
|
254 navigator.mozSettings.removeObserver("screen.brightness", observer1); |
|
255 } |
|
256 req.onerror = onFailure; |
|
257 }, |
|
258 function() { |
|
259 ok(true, "test Event Listener"); |
|
260 var lock = mozSettings.createLock(); |
|
261 req = lock.set(screenBright); |
|
262 req.onsuccess = function () { |
|
263 ok(true, "set done"); |
|
264 } |
|
265 req.onerror = onFailure; |
|
266 }, |
|
267 function() { |
|
268 ok(true, "removing Event Listener"); |
|
269 var lock = mozSettings.createLock(); |
|
270 navigator.mozSettings.removeObserver("screen.brightness", observerWithNext); |
|
271 req = lock.set(screenBright); |
|
272 req.onsuccess = function () { |
|
273 ok(true, "set done"); |
|
274 navigator.mozSettings.removeObserver("screen.brightness", observer2); |
|
275 navigator.mozSettings.removeObserver("screen.brightness", observer1); |
|
276 next(); |
|
277 } |
|
278 req.onerror = onFailure; |
|
279 }, |
|
280 function() { |
|
281 ok(true, "removing Event Listener"); |
|
282 var lock = mozSettings.createLock(); |
|
283 req = lock.get("screen.brightness"); |
|
284 req.onsuccess = function () { |
|
285 ok(true, "get done"); |
|
286 next(); |
|
287 } |
|
288 req.onerror = onFailure; |
|
289 }, |
|
290 function () { |
|
291 ok(true, "Nested test"); |
|
292 var lock = mozSettings.createLock(); |
|
293 req = lock.get("screen.brightness"); |
|
294 req.onsuccess = function () { |
|
295 req3 = lock.set({"screen.brightness": req.result["screen.brightness"] + 1}) |
|
296 req3.onsuccess = function () { |
|
297 req4 = lock.get("screen.brightness"); |
|
298 req4.onsuccess = function() { |
|
299 is(req4.result["screen.brightness"], 1.7, "same Value"); |
|
300 } |
|
301 req4.onerror = onFailure; |
|
302 } |
|
303 req3.onerror = onFailure; |
|
304 }; |
|
305 req.onerror = onFailure; |
|
306 |
|
307 req2 = lock.get("screen.brightness"); |
|
308 req2.onsuccess = function () { |
|
309 is(req2.result["screen.brightness"], 0.7, "same Value"); |
|
310 } |
|
311 req2.onerror = onFailure; |
|
312 |
|
313 var lock2 = mozSettings.createLock(); |
|
314 req5 = lock2.get("screen.brightness"); |
|
315 req5.onsuccess = function () { |
|
316 is(req5.result["screen.brightness"], 1.7, "same Value"); |
|
317 next(); |
|
318 } |
|
319 req5.onerror = onFailure; |
|
320 }, |
|
321 function () { |
|
322 ok(true, "Deleting database"); |
|
323 var lock = mozSettings.createLock(); |
|
324 req = lock.clear(); |
|
325 req.onsuccess = function () { |
|
326 ok(true, "Deleted the database"); |
|
327 }; |
|
328 req.onerror = onFailure; |
|
329 req2 = lock.set(wifi); |
|
330 req2.onsuccess = function () { |
|
331 ok(true, "set done"); |
|
332 } |
|
333 req2.onerror = onFailure; |
|
334 |
|
335 ok(true, "Get all settings"); |
|
336 var lock2 = mozSettings.createLock(); |
|
337 req = lock2.get("*"); |
|
338 req.onsuccess = function () { |
|
339 is(Object.keys(req.result).length, 1, "length 1"); |
|
340 check(wifi, req.result); |
|
341 ok(true, JSON.stringify(req.result)); |
|
342 ok(true, "Get all settings Done"); |
|
343 }; |
|
344 req.onerror = onFailure; |
|
345 |
|
346 req2 = lock2.get("net3g.apn"); |
|
347 req2.onsuccess = function () { |
|
348 is(Object.keys(req2.result).length, 1, "length 1"); |
|
349 check(wifi, req2.result); |
|
350 ok(true, "Get net3g.apn Done"); |
|
351 next(); |
|
352 }; |
|
353 req2.onerror = onFailure; |
|
354 }, |
|
355 function () { |
|
356 ok(true, "Change wifi1"); |
|
357 var lock = mozSettings.createLock(); |
|
358 req = lock.set(wifi2); |
|
359 req.onsuccess = function () { |
|
360 ok(true, "Set Done"); |
|
361 }; |
|
362 req.onerror = onFailure; |
|
363 |
|
364 ok(true, "Get changed net3g.apn"); |
|
365 req2 = lock.get("net3g.apn"); |
|
366 req2.onsuccess = function () { |
|
367 is(Object.keys(req2.result).length, 1, "length 1"); |
|
368 check(wifi2, req2.result); |
|
369 ok(true, "Get net3g.apn Done"); |
|
370 next(); |
|
371 }; |
|
372 req2.onerror = onFailure; |
|
373 }, |
|
374 function () { |
|
375 ok(true, "Test locking"); |
|
376 var lock = mozSettings.createLock(); |
|
377 var lock2 = mozSettings.createLock(); |
|
378 req = lock.set(wifiEnabled); |
|
379 req.onsuccess = function () { |
|
380 ok(true, "Test Locking Done"); |
|
381 }; |
|
382 req.onerror = onFailure; |
|
383 |
|
384 req2 = lock2.set(wifiDisabled); |
|
385 req2.onsuccess = function () { |
|
386 ok(true, "Set Done"); |
|
387 next(); |
|
388 }; |
|
389 req2.onerror = onFailure; |
|
390 }, |
|
391 function () { |
|
392 ok(true, "Test locking result"); |
|
393 var lock = mozSettings.createLock(); |
|
394 req = lock.get("wifi.enabled"); |
|
395 req.onsuccess = function() { |
|
396 check(req.result, wifiDisabled); |
|
397 ok(true, "Test1 locking result done"); |
|
398 next(); |
|
399 } |
|
400 req.onerror = onFailure; |
|
401 }, |
|
402 function () { |
|
403 ok(true, "Test locking heavy"); |
|
404 for (var i=0; i<30; i++) { |
|
405 // only new locks! |
|
406 var lock = mozSettings.createLock(); |
|
407 var obj = {}; |
|
408 obj["wifi.enabled" + i] = true; |
|
409 req = lock.set( obj ); |
|
410 req.onsuccess = function () { |
|
411 ok(true, "Set1 Done"); |
|
412 }; |
|
413 req.onerror = onFailure; |
|
414 }; |
|
415 { |
|
416 var lock2 = mozSettings.createLock(); |
|
417 req2 = lock2.get("*"); |
|
418 req2.onsuccess = function () { |
|
419 is(Object.keys(req2.result).length, 32, "length 12"); |
|
420 ok(true, JSON.stringify(req2.result)); |
|
421 ok(true, "Get all settings Done"); |
|
422 }; |
|
423 req2.onerror = onFailure; |
|
424 } |
|
425 var lock2 = mozSettings.createLock(); |
|
426 var obj = {}; |
|
427 obj["wifi.enabled" + 30] = true; |
|
428 req3 = lock2.set( obj ); |
|
429 req3.onsuccess = function () { |
|
430 ok(true, "Set12 Done"); |
|
431 }; |
|
432 req3.onerror = onFailure; |
|
433 |
|
434 var lock3 = mozSettings.createLock(); |
|
435 // with one lock |
|
436 for (var i = 0; i < 30; i++) { |
|
437 req4 = lock3.get("wifi.enabled" + i); |
|
438 var testObj = {}; |
|
439 testObj["wifi.enabled" + i] = true; |
|
440 req4.onsuccess = function () { |
|
441 check(this.request.result, this.testObj); |
|
442 ok(true, "Get1 Done"); |
|
443 }.bind({testObj: testObj, request: req4}); |
|
444 req4.onerror = onFailure; |
|
445 } |
|
446 |
|
447 ok(true, "start next2!"); |
|
448 var lock4 = mozSettings.createLock(); |
|
449 for (var i=0; i<30; i++) { |
|
450 var obj = {}; |
|
451 obj["wifi.enabled" + i] = false; |
|
452 req4 = lock4.set( obj ); |
|
453 req4.onsuccess = function () { |
|
454 ok(true, "Set2 Done"); |
|
455 }; |
|
456 req4.onerror = onFailure; |
|
457 } |
|
458 var lock5 = mozSettings.createLock(); |
|
459 for (var i=0; i<30; i++) { |
|
460 req5 = lock5.get("wifi.enabled" + i); |
|
461 var testObj = {}; |
|
462 testObj["wifi.enabled" + i] = false; |
|
463 req5.onsuccess = function () { |
|
464 check(this.request.result, this.testObj); |
|
465 ok(true, "Get2 Done"); |
|
466 }.bind({testObj: testObj, request: req5}); |
|
467 req5.onerror = onFailure; |
|
468 } |
|
469 |
|
470 var lock5 = mozSettings.createLock(); |
|
471 req6 = lock5.clear(); |
|
472 req6.onsuccess = function () { |
|
473 ok(true, "Deleted the database"); |
|
474 next(); |
|
475 }; |
|
476 req6.onerror = onFailure; |
|
477 }, |
|
478 function () { |
|
479 ok(true, "reverse Test locking"); |
|
480 var lock2 = mozSettings.createLock(); |
|
481 var lock = mozSettings.createLock(); |
|
482 |
|
483 req = lock.set(wifiEnabled); |
|
484 req.onsuccess = function () { |
|
485 ok(true, "Test Locking Done"); |
|
486 next(); |
|
487 }; |
|
488 req.onerror = onFailure; |
|
489 |
|
490 req2 = lock2.set(wifiDisabled); |
|
491 req2.onsuccess = function () { |
|
492 ok(true, "Set Done"); |
|
493 }; |
|
494 req2.onerror = onFailure; |
|
495 }, |
|
496 function () { |
|
497 ok(true, "Test locking result"); |
|
498 var lock = mozSettings.createLock(); |
|
499 |
|
500 req = lock.get("wifi.enabled"); |
|
501 req.onsuccess = function() { |
|
502 check(req.result, wifiEnabled); |
|
503 ok(true, "Test2 locking result done"); |
|
504 } |
|
505 req.onerror = onFailure; |
|
506 |
|
507 req2 = lock.clear(); |
|
508 req2.onsuccess = function () { |
|
509 ok(true, "Deleted the database"); |
|
510 }; |
|
511 req2.onerror = onFailure; |
|
512 |
|
513 req3 = lock.set(wifi); |
|
514 req3.onsuccess = function () { |
|
515 ok(true, "set done"); |
|
516 next(); |
|
517 } |
|
518 req3.onerror = onFailure; |
|
519 |
|
520 }, |
|
521 function () { |
|
522 ok(true, "Get all settings"); |
|
523 var lock = mozSettings.createLock(); |
|
524 req = lock.get("*"); |
|
525 req.onsuccess = function () { |
|
526 is(Object.keys(req.result).length, 1, "length 1"); |
|
527 check(wifi, req.result); |
|
528 ok(true, "Get all settings Done"); |
|
529 next(); |
|
530 }; |
|
531 req.onerror = onFailure; |
|
532 }, |
|
533 function () { |
|
534 ok(true, "Get net3g.apn"); |
|
535 var lock = mozSettings.createLock(); |
|
536 req = lock.get("net3g.apn"); |
|
537 req.onsuccess = function () { |
|
538 is(Object.keys(req.result).length, 1, "length 1"); |
|
539 check(wifi, req.result); |
|
540 ok(true, "Get net3g.apn Done"); |
|
541 next(); |
|
542 }; |
|
543 req.onerror = onFailure; |
|
544 }, |
|
545 function () { |
|
546 ok(true, "Change wifi2"); |
|
547 var lock = mozSettings.createLock(); |
|
548 req = lock.set(wifi2); |
|
549 req.onsuccess = function () { |
|
550 ok(true, "Set Done"); |
|
551 next(); |
|
552 }; |
|
553 req.onerror = onFailure; |
|
554 }, |
|
555 function () { |
|
556 ok(true, "Get net3g.apn"); |
|
557 var lock = mozSettings.createLock(); |
|
558 req = lock.get("net3g.apn"); |
|
559 req.onsuccess = function () { |
|
560 is(Object.keys(req.result).length, 1, "length 1"); |
|
561 check(wifi2, req.result); |
|
562 ok(true, "Get net3g.apn Done"); |
|
563 next(); |
|
564 }; |
|
565 req.onerror = onFailure; |
|
566 }, |
|
567 function () { |
|
568 ok(true, "Add wifi.enabled"); |
|
569 var lock = mozSettings.createLock(); |
|
570 req = lock.set(wifiEnabled); |
|
571 req.onsuccess = function () { |
|
572 ok(true, "Set Done"); |
|
573 next(); |
|
574 }; |
|
575 req.onerror = onFailure; |
|
576 }, |
|
577 function () { |
|
578 ok(true, "Get Wifi Enabled"); |
|
579 var lock = mozSettings.createLock(); |
|
580 req = lock.get("wifi.enabled"); |
|
581 req.onsuccess = function () { |
|
582 is(Object.keys(req.result).length, 1, "length 1"); |
|
583 check(wifiEnabled, req.result); |
|
584 ok(true, "Get wifi.enabledDone"); |
|
585 next(); |
|
586 }; |
|
587 req.onerror = onFailure; |
|
588 }, |
|
589 function () { |
|
590 ok(true, "Get all"); |
|
591 var lock = mozSettings.createLock(); |
|
592 req = lock.get("*"); |
|
593 req.onsuccess = function () { |
|
594 is(Object.keys(req.result).length, 2, "length 2"); |
|
595 check(wifiEnabled["wifi.enabled"], req.result["wifi.enabled"]); |
|
596 check(wifi2["net3g.apn"], req.result["net3g.apn"]); |
|
597 ok(true, "Get all Done"); |
|
598 next(); |
|
599 }; |
|
600 req.onerror = onFailure; |
|
601 }, |
|
602 function () { |
|
603 ok(true, "Add wifiNetworks"); |
|
604 var lock = mozSettings.createLock(); |
|
605 req = lock.set(wifiNetworks0); |
|
606 req.onsuccess = function () { |
|
607 ok(true, "Set Done"); |
|
608 }; |
|
609 req.onerror = onFailure; |
|
610 |
|
611 req2 = lock.set(wifiNetworks1); |
|
612 req2.onsuccess = function () { |
|
613 ok(true, "Set Done"); |
|
614 next(); |
|
615 }; |
|
616 req2.onerror = onFailure; |
|
617 }, |
|
618 function () { |
|
619 ok(true, "Get Wifi Networks"); |
|
620 var lock = mozSettings.createLock(); |
|
621 req = lock.get("wifi.networks[0]"); |
|
622 req.onsuccess = function () { |
|
623 is(Object.keys(req.result).length, 1, "length 1"); |
|
624 check(wifiNetworks0, req.result); |
|
625 ok(true, "Get wifi.networks[0]"); |
|
626 next(); |
|
627 }; |
|
628 req.onerror = onFailure; |
|
629 }, |
|
630 function() { |
|
631 ok(true, "Clear DB, multiple locks"); |
|
632 var lock4 = mozSettings.createLock(); |
|
633 var lock3 = mozSettings.createLock(); |
|
634 var lock2 = mozSettings.createLock(); |
|
635 var lock = mozSettings.createLock(); |
|
636 var lock6 = mozSettings.createLock(); |
|
637 var lock7 = mozSettings.createLock(); |
|
638 req = lock.clear(); |
|
639 req.onsuccess = function () { |
|
640 ok(true, "Deleted the database"); |
|
641 next(); |
|
642 }; |
|
643 req.onerror = onFailure; |
|
644 }, |
|
645 function () { |
|
646 ok(true, "Add wifiNetworks"); |
|
647 var lock = mozSettings.createLock(); |
|
648 req = lock.set(wifiNetworks0); |
|
649 req.onsuccess = function () { |
|
650 ok(true, "Set Done"); |
|
651 next(); |
|
652 }; |
|
653 req.onerror = onFailure; |
|
654 }, |
|
655 function () { |
|
656 ok(true, "Test set after lock closed"); |
|
657 var lockx = mozSettings.createLock(); |
|
658 var cb = function() { |
|
659 var reqx = null; |
|
660 try { |
|
661 reqx = lockx.set(wifiNetworks0); |
|
662 ok(false, "should have thrown"); |
|
663 } catch (ex) { |
|
664 ok(reqx == null, "request is still null"); |
|
665 ok(true, "Caught Exception"); |
|
666 next(); |
|
667 } |
|
668 } |
|
669 SimpleTest.executeSoon(cb); |
|
670 }, |
|
671 function() { |
|
672 ok(true, "Clear DB"); |
|
673 var lock = mozSettings.createLock(); |
|
674 req = lock.clear(); |
|
675 req.onsuccess = function () { |
|
676 ok(true, "Deleted the database"); |
|
677 next(); |
|
678 }; |
|
679 req.onerror = onFailure; |
|
680 }, |
|
681 function() { |
|
682 ok(true, "Set with multiple arguments"); |
|
683 var lock = mozSettings.createLock(); |
|
684 req = lock.set(combination); |
|
685 req.onsuccess = function () { |
|
686 ok(true, "Set Done"); |
|
687 next(); |
|
688 }; |
|
689 req.onerror = onFailure; |
|
690 }, |
|
691 function() { |
|
692 ok(true, "request argument from multiple set"); |
|
693 var lock = mozSettings.createLock(); |
|
694 req = lock.get("screen.brightness"); |
|
695 req.onsuccess = function () { |
|
696 check(req.result["screen.brightness"], 0.7, "get done"); |
|
697 next(); |
|
698 } |
|
699 req.onerror = onFailure; |
|
700 }, |
|
701 function() { |
|
702 ok(true, "Test closed attribute on a valid lock"); |
|
703 var lock = mozSettings.createLock(); |
|
704 is(lock.closed, false, "closed attribute is false on creation"); |
|
705 req = lock.get("screen.brightness"); |
|
706 req.onsuccess = function () { |
|
707 is(lock.closed, false, "closed attribute is false on success callback"); |
|
708 next(); |
|
709 } |
|
710 req.onerror = onFailure; |
|
711 }, |
|
712 function () { |
|
713 ok(true, "Test closed attribute on invalid lock"); |
|
714 var lockx = mozSettings.createLock(); |
|
715 var cb = function() { |
|
716 var reqx = null; |
|
717 try { |
|
718 reqx = lockx.set(wifiNetworks0); |
|
719 ok(false, "should have thrown"); |
|
720 } catch (ex) { |
|
721 is(lockx.closed, true, "closed attribute is true"); |
|
722 ok(true, "Caught Exception"); |
|
723 next(); |
|
724 } |
|
725 } |
|
726 SimpleTest.executeSoon(cb); |
|
727 }, |
|
728 function() { |
|
729 ok(true, "Clear DB"); |
|
730 var lock = mozSettings.createLock(); |
|
731 req = lock.clear(); |
|
732 req.onsuccess = function () { |
|
733 ok(true, "Deleted the database"); |
|
734 next(); |
|
735 }; |
|
736 req.onerror = onFailure; |
|
737 }, |
|
738 function() { |
|
739 ok(true, "Set object value"); |
|
740 var lock = mozSettings.createLock(); |
|
741 req = lock.set({"setting-obj": {foo: {bar: 23}}}); |
|
742 req.onsuccess = function() { |
|
743 req2 = lock.get("setting-obj"); |
|
744 req2.onsuccess = function(event) { |
|
745 var result = event.target.result["setting-obj"]; |
|
746 ok(result, "Got valid result"); |
|
747 ok(typeof result == "object", "Result is object"); |
|
748 ok("foo" in result && "bar" in result.foo, "Result has properties"); |
|
749 ok(result.foo.bar == 23, "Result properties are set"); |
|
750 next(); |
|
751 }; |
|
752 }; |
|
753 }, |
|
754 function() { |
|
755 ok(true, "Clear DB"); |
|
756 var lock = mozSettings.createLock(); |
|
757 req = lock.clear(); |
|
758 req.onsuccess = function () { |
|
759 ok(true, "Deleted the database"); |
|
760 next(); |
|
761 }; |
|
762 req.onerror = onFailure; |
|
763 }, |
|
764 function () { |
|
765 ok(true, "all done!\n"); |
|
766 SimpleTest.finish(); |
|
767 } |
|
768 ]; |
|
769 |
|
770 function next() { |
|
771 ok(true, "Begin!"); |
|
772 if (index >= steps.length) { |
|
773 ok(false, "Shouldn't get here!"); |
|
774 return; |
|
775 } |
|
776 try { |
|
777 steps[index](); |
|
778 } catch(ex) { |
|
779 ok(false, "Caught exception", ex); |
|
780 } |
|
781 index += 1; |
|
782 } |
|
783 |
|
784 SimpleTest.waitForExplicitFinish(); |
|
785 addLoadEvent(next); |
|
786 </script> |
|
787 </pre> |
|
788 </body> |
|
789 </html> |