test_subscription_change.html (2196B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 Bug 1205109: Make `pushsubscriptionchange` extendable. 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 1205109</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=1205109">Mozilla Bug 1205109</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 var registration; 27 add_task(async function start() { 28 await setupPrefsAndMockSocket(new MockWebSocket()); 29 await setPushPermission(true); 30 31 var url = "worker.js?caller=test_subscription_change.html"; 32 registration = await navigator.serviceWorker.register(url, {scope: "."}); 33 await waitForActive(registration); 34 }); 35 36 var controlledFrame; 37 add_task(async function createControlledIFrame() { 38 controlledFrame = await injectControlledFrame(); 39 }); 40 41 add_task(async function togglePermission() { 42 var subscription = await registration.pushManager.subscribe(); 43 ok(subscription, "Should create a push subscription"); 44 45 await setPushPermission(false); 46 var permissionState = await registration.pushManager.permissionState(); 47 is(permissionState, "denied", "Should deny push permission"); 48 49 subscription = await registration.pushManager.getSubscription(); 50 is(subscription, null, "Should not return subscription when permission is revoked"); 51 52 var changePromise = controlledFrame.waitOnWorkerMessage("changed"); 53 await setPushPermission(true); 54 await changePromise; 55 56 subscription = await registration.pushManager.getSubscription(); 57 is(subscription, null, "Should drop subscription after reinstating permission"); 58 }); 59 60 add_task(async function unsubscribe() { 61 controlledFrame.remove(); 62 await registration.unregister(); 63 }); 64 65 </script> 66 </body> 67 </html>