OLD | NEW |
---|---|
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="/js-test-resources/js-test.js"></script> | 2 <title>Service Worker: Indexed DB</title> |
3 <script src="../resources/testharness.js"></script> | |
4 <script src="../resources/testharnessreport.js"></script> | |
3 <script> | 5 <script> |
6 var test = async_test('Verify Indexed DB operation in a Service Worker'); | |
7 test.step(function() { | |
4 | 8 |
5 description("Verify that IndexedDB is functional in a ServiceWorker"); | 9 navigator.serviceWorker.register('resources/indexeddb-worker.js').then( |
6 var jsTestIsAsync = true; | 10 test.step_func(function(worker) { |
11 var messageChannel = new MessageChannel(); | |
12 messageChannel.port1.onmessage = test.step_func(onMessage); | |
7 | 13 |
8 evalAndLog("messageChannel = new MessageChannel()"); | 14 worker.postMessage({port: messageChannel.port2}, [messageChannel.por t2]); |
9 evalAndLog("messageChannel.port1.onmessage = onMessageHandler"); | 15 }), |
16 test.step_func(function(reason) { | |
dominicc (has gone to gerrit)
2014/04/09 20:09:08
In general it seems surprising to have the test in
jsbell
2014/04/09 23:04:40
Agreed. As you can see, the old testRunner version
| |
17 assert_equals(reason.name, 'DisabledError'); | |
dominicc (has gone to gerrit)
2014/04/09 20:09:08
These asserts should have a description in the thi
jsbell
2014/04/09 23:04:40
Done. And good advice for consistent phrasing. It'
| |
18 test.done(); | |
19 })); | |
10 | 20 |
11 debug(""); | 21 function onMessage() { |
12 evalAndLog("navigator.serviceWorker.register('indexeddb-worker.js')").then( | 22 var open_request = indexedDB.open('db'); |
dominicc (has gone to gerrit)
2014/04/09 20:09:08
Use camelCase. Also for get_request.
jsbell
2014/04/09 23:04:40
Done.
| |
13 function(result) { | 23 open_request.onsuccess = test.step_func(function() { |
14 serviceWorker = result; | 24 var db = open_request.result; |
15 evalAndLog("serviceWorker.postMessage({port: messageChannel.port2}, [mes sageChannel.port2])"); | 25 var tx = db.transaction('store'); |
16 }, | 26 var store = tx.objectStore('store'); |
17 function(reason) { | 27 var get_request = store.get('key'); |
18 testFailed(reason.name); | 28 get_request.onsuccess = test.step_func(function(e) { |
dominicc (has gone to gerrit)
2014/04/09 20:09:08
Delete unused parameter e? Or rename to _.
jsbell
2014/04/09 23:04:40
Done.
| |
19 finishJSTest(); | 29 assert_equals(get_request.result, 'value'); |
20 }); | 30 test.done(); |
21 | 31 }); |
22 function onMessageHandler(e) { | 32 }); |
23 var prefix = "[ServiceWorker] "; | |
24 message = e.data; | |
25 switch (message.action) { | |
26 case 'log': | |
27 debug(prefix + message.text); | |
28 break; | |
29 case 'pass': | |
30 testPassed(prefix + message.text); | |
31 break; | |
32 case 'fail': | |
33 testFailed(prefix + message.text); | |
34 break; | |
35 case 'quit': | |
36 verifyDatabase(); | |
37 break; | |
38 } | 33 } |
39 } | 34 }); |
40 | |
41 function verifyDatabase() { | |
42 debug(""); | |
43 debug("Verifying the database from the page"); | |
44 debug(""); | |
45 evalAndLog("request = indexedDB.open('db')"); | |
46 request.onsuccess = function() { | |
47 evalAndLog("db = request.result"); | |
48 evalAndLog("tx = db.transaction('store')"); | |
49 evalAndLog("store = tx.objectStore('store')"); | |
50 evalAndLog("request = store.get('key')"); | |
51 request.onsuccess = function() { | |
52 shouldBe("request.result", "'value'"); | |
53 finishJSTest(); | |
54 }; | |
55 }; | |
56 } | |
57 </script> | 35 </script> |
OLD | NEW |