test_workerUnregister.html (2398B)
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 982728 - Test ServiceWorkerGlobalScope.unregister</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 <div id="container"></div> 14 <script class="testbody" type="text/javascript"> 15 16 function simpleRegister() { 17 return navigator.serviceWorker.register("worker_unregister.js", { scope: "unregister/" }).then(function(swr) { 18 if (swr.installing) { 19 return new Promise(function(resolve, reject) { 20 swr.installing.onstatechange = function(e) { 21 if (swr.waiting) { 22 swr.waiting.onstatechange = function(event) { 23 if (swr.active) { 24 resolve(); 25 } else if (swr.waiting && swr.waiting.state == "redundant") { 26 reject("Should not go into redundant"); 27 } 28 } 29 } else { 30 if (swr.active) { 31 resolve(); 32 } else { 33 reject("No waiting and no active!"); 34 } 35 } 36 } 37 }); 38 } else { 39 return Promise.reject("Installing should be non-null"); 40 } 41 }); 42 } 43 44 function waitForMessages(sw) { 45 var p = new Promise(function(resolve, reject) { 46 window.onmessage = function(e) { 47 if (e.data === "DONE") { 48 ok(true, "The worker has unregistered itself"); 49 } else if (e.data === "ERROR") { 50 ok(false, "The worker has unregistered itself"); 51 } else if (e.data === "FINISH") { 52 resolve(); 53 } 54 } 55 }); 56 57 var frame = document.createElement("iframe"); 58 frame.setAttribute("src", "unregister/unregister.html"); 59 document.body.appendChild(frame); 60 61 return p; 62 } 63 64 function runTest() { 65 simpleRegister().then(waitForMessages).catch(function(e) { 66 ok(false, "Something went wrong."); 67 }).then(function() { 68 SimpleTest.finish(); 69 }); 70 } 71 72 SimpleTest.waitForExplicitFinish(); 73 SpecialPowers.pushPrefEnv({"set": [ 74 ["dom.serviceWorkers.exemptFromPerDomainMax", true], 75 ["dom.serviceWorkers.enabled", true], 76 ["dom.serviceWorkers.testing.enabled", true] 77 ]}, runTest); 78 </script> 79 </pre> 80 </body> 81 </html>