| 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) { |
| 17 assert_unreached('Registration should succeed, but failed: ' + reaso
n.name); |
| 18 })); |
| 10 | 19 |
| 11 debug(""); | 20 function onMessage() { |
| 12 evalAndLog("navigator.serviceWorker.register('indexeddb-worker.js')").then( | 21 var openRequest = indexedDB.open('db'); |
| 13 function(result) { | 22 openRequest.onsuccess = test.step_func(function() { |
| 14 serviceWorker = result; | 23 var db = openRequest.result; |
| 15 evalAndLog("serviceWorker.postMessage({port: messageChannel.port2}, [mes
sageChannel.port2])"); | 24 var tx = db.transaction('store'); |
| 16 }, | 25 var store = tx.objectStore('store'); |
| 17 function(reason) { | 26 var getRequest = store.get('key'); |
| 18 testFailed(reason.name); | 27 getRequest.onsuccess = test.step_func(function() { |
| 19 finishJSTest(); | 28 assert_equals(getRequest.result, 'value', |
| 20 }); | 29 'The get() result should match what the worker put
().'); |
| 21 | 30 test.done(); |
| 22 function onMessageHandler(e) { | 31 }); |
| 23 var prefix = "[ServiceWorker] "; | 32 }); |
| 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 |