test_serviceworker.html (2104B)
1 <!-- 2 Any copyright is dedicated to the Public Domain. 3 http://creativecommons.org/publicdomain/zero/1.0/ 4 --> 5 <!DOCTYPE HTML> 6 <html> 7 <head> 8 <title>Bug 1137245 - Allow IndexedDB usage in ServiceWorkers</title> 9 <script src="/tests/SimpleTest/SimpleTest.js"></script> 10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 11 </head> 12 <body> 13 <p id="display"></p> 14 <div id="content" style="display: none"></div> 15 <pre id="test"></pre> 16 <script src="utils.js"></script> 17 <script class="testbody" type="text/javascript"> 18 19 var regisration; 20 function simpleRegister() { 21 return navigator.serviceWorker.register("service_worker.js", { 22 scope: 'service_worker_client.html' 23 }).then(swr => waitForState(swr.installing, 'activated', swr)); 24 } 25 26 function unregister() { 27 return registration.unregister(); 28 } 29 30 function testIndexedDBAvailable(sw) { 31 registration = sw; 32 var p = new Promise(function(resolve, reject) { 33 window.onmessage = function(e) { 34 if (e.data === "READY") { 35 sw.active.postMessage("GO"); 36 return; 37 } 38 39 if (!("available" in e.data)) { 40 ok(false, "Something went wrong"); 41 reject(); 42 return; 43 } 44 45 ok(e.data.available, "IndexedDB available in service worker."); 46 resolve(); 47 } 48 }); 49 50 var content = document.getElementById("content"); 51 ok(content, "Parent exists."); 52 53 iframe = document.createElement("iframe"); 54 iframe.setAttribute('src', "service_worker_client.html"); 55 content.appendChild(iframe); 56 57 return p.then(() => content.removeChild(iframe)); 58 } 59 60 function runTest() { 61 simpleRegister() 62 .then(testIndexedDBAvailable) 63 .then(unregister) 64 .then(SimpleTest.finish) 65 .catch(function(e) { 66 ok(false, "Some test failed with error " + e); 67 SimpleTest.finish(); 68 }); 69 } 70 71 SimpleTest.waitForExplicitFinish(); 72 SpecialPowers.pushPrefEnv({"set": [ 73 ["dom.serviceWorkers.enabled", true], 74 ["dom.serviceWorkers.testing.enabled", true] 75 ]}, runTest); 76 </script> 77 </pre> 78 </body> 79 </html>