tor-browser

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

test_register.html (3074B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 Bug 1038811: 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 1038811</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=1038811">Mozilla Bug 1038811</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 debug() {
     27  //  console.log(str + "\n");
     28  }
     29 
     30  var mockSocket = new MockWebSocket();
     31 
     32  var channelID = null;
     33 
     34  mockSocket.onRegister = function(request) {
     35    channelID = request.channelID;
     36    this.serverSendMsg(JSON.stringify({
     37      messageType: "register",
     38      uaid: "c69e2014-9e15-438d-b253-d79cc2df60a8",
     39      channelID,
     40      status: 200,
     41      pushEndpoint: "https://example.com/endpoint/1",
     42    }));
     43  };
     44 
     45  var registration;
     46  add_task(async function start() {
     47    await setupPrefsAndMockSocket(mockSocket);
     48    await setPushPermission(true);
     49 
     50    var url = "worker.js?caller=test_register.html";
     51    registration = await navigator.serviceWorker.register(url, {scope: "."});
     52    await waitForActive(registration);
     53  });
     54 
     55  var controlledFrame;
     56  add_task(async function createControlledIFrame() {
     57    controlledFrame = await injectControlledFrame();
     58  });
     59 
     60  add_task(async function checkPermissionState() {
     61    var state = await registration.pushManager.permissionState();
     62    is(state, "granted", "permissionState() should resolve to granted.");
     63  });
     64 
     65  var pushSubscription;
     66  add_task(async function subscribe() {
     67    pushSubscription = await registration.pushManager.subscribe();
     68    is(pushSubscription.options.applicationServerKey, null,
     69       "Subscription should not have an app server key");
     70  });
     71 
     72  add_task(async function resubscribe() {
     73    var data = await sendRequestToWorker({
     74      type: "resubscribe",
     75      endpoint: pushSubscription.endpoint,
     76    });
     77    pushSubscription = await registration.pushManager.getSubscription();
     78    is(data.endpoint, pushSubscription.endpoint,
     79       "Subscription endpoints should match after resubscribing in worker");
     80  });
     81 
     82  add_task(async function waitForPushNotification() {
     83    var finishedPromise = controlledFrame.waitOnWorkerMessage("finished");
     84 
     85    // Send a blank message.
     86    mockSocket.serverSendMsg(JSON.stringify({
     87      messageType: "notification",
     88      version: "vDummy",
     89      channelID,
     90    }));
     91 
     92    await finishedPromise;
     93  });
     94 
     95  add_task(async function unsubscribe() {
     96    controlledFrame.remove();
     97    await pushSubscription.unsubscribe();
     98  });
     99 
    100  add_task(async function unregister() {
    101    var result = await registration.unregister();
    102    ok(result, "Unregister should return true.");
    103  });
    104 
    105 </script>
    106 </body>
    107 </html>