tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>