Chromium Code Reviews| 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 |