test_unregister.html (2513B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 Bug 1170817: Push tests. 5 6 Any copyright is dedicated to the Public Domain. 7 http://creativecommons.org/licenses/publicdomain/ 8 9 --> 10 <head> 11 <title>Test for Bug 1170817</title> 12 <script src="/tests/SimpleTest/SimpleTest.js"></script> 13 <script type="text/javascript" src="/tests/dom/push/test/test_utils.js"></script> 14 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 15 <meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 16 </head> 17 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1170817">Mozilla Bug 1170817</a> 18 <p id="display"></p> 19 <div id="content" style="display: none"> 20 21 </div> 22 <pre id="test"> 23 </pre> 24 25 <script class="testbody" type="text/javascript"> 26 function generateURL() { 27 return "worker.js?caller=test_unregister.html"; 28 } 29 30 var registration; 31 add_task(async function start() { 32 await setupPrefsAndMockSocket(new MockWebSocket()); 33 await setPushPermission(true); 34 35 registration = await navigator.serviceWorker.register( 36 generateURL(), {scope: "."}); 37 await waitForActive(registration); 38 }); 39 40 var pushSubscription; 41 add_task(async function setupPushNotification() { 42 pushSubscription = await registration.pushManager.subscribe(); 43 ok(pushSubscription, "successful registered for push notification"); 44 }); 45 46 add_task(async function unregisterPushNotification() { 47 var result = await pushSubscription.unsubscribe(); 48 ok(result, "unsubscribe() on existing subscription should return true."); 49 }); 50 51 add_task(async function unregisterAgain() { 52 var result = await pushSubscription.unsubscribe(); 53 ok(!result, "unsubscribe() on previously unsubscribed subscription should return false."); 54 }); 55 56 add_task(async function subscribeAgain() { 57 pushSubscription = await registration.pushManager.subscribe(); 58 ok(pushSubscription, "Should create a new push subscription"); 59 60 var result = await registration.unregister(); 61 ok(result, "Should unregister the service worker"); 62 63 registration = await navigator.serviceWorker.register( 64 generateURL(), {scope: "."}); 65 await waitForActive(registration); 66 pushSubscription = await registration.pushManager.getSubscription(); 67 ok(!pushSubscription, 68 "Unregistering a service worker should drop its subscription"); 69 }); 70 71 add_task(async function unregister() { 72 var result = await registration.unregister(); 73 ok(result, "Unregister should return true."); 74 }); 75 76 </script> 77 </body> 78 </html>