tor-browser

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

badging.https.html (2822B)


      1 <!DOCTYPE html>
      2 <title>Test Badging API</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/resources/testdriver.js"></script>
      6 <script src="/resources/testdriver-vendor.js"></script>
      7 <script src="/common/utils.js"></script>
      8 <script src="/common/dispatcher/dispatcher.js"></script>
      9 <script src="resources/utils.js"></script>
     10 
     11 <body>
     12 <script>
     13 const createRemoteFunctionForServiceWorkerTest = () => {
     14  return async (method, service_worker_url) => {
     15    const getController = () => {
     16      if (navigator.serviceWorker.controller) {
     17        return navigator.serviceWorker.controller;
     18      }
     19      return new Promise(resolve => {
     20        navigator.serviceWorker.addEventListener('controllerchange', () => {
     21          resolve(navigator.serviceWorker.controller);
     22        });
     23      });
     24    };
     25 
     26    await navigator.serviceWorker.register(
     27      service_worker_url, { scope: location.href });
     28    const ctrl = await getController();
     29 
     30    return new Promise(resolve => {
     31      ctrl.postMessage(method);
     32      navigator.serviceWorker.onmessage = e => {
     33        resolve(e.data.name);
     34      }
     35    });
     36  }
     37 }
     38 
     39 promise_test(async () => {
     40  const frame = attachFencedFrameContext();
     41  const error_name = await frame.execute(() => {
     42    return navigator.setAppBadge(1).catch(e => e.name);
     43  });
     44  assert_equals(error_name,
     45                "NotAllowedError",
     46                "The Badge API should cause exception in a fencedfarme");
     47 }, 'setAppBadge should fail inside a fenced frame');
     48 
     49 promise_test(async () => {
     50  const frame = attachFencedFrameContext();
     51  const error_name = await frame.execute(() => {
     52    return navigator.clearAppBadge().catch(e => e.name);
     53  });
     54  assert_equals(error_name,
     55                "NotAllowedError",
     56                "The Badge API should cause exception in a fencedfarme");
     57 }, 'clearAppBadge should fail inside a fenced frame');
     58 
     59 promise_test(async () => {
     60  const frame = attachFencedFrameContext();
     61  const error_name = await frame.execute(
     62    createRemoteFunctionForServiceWorkerTest(),
     63    ['setAppBadge', 'badging-sw.js']);
     64  assert_equals(error_name, "NotAllowedError",
     65                "The Badge API should cause exception from a service worker " +
     66                "in a fencedfarme");
     67 }, 'setAppBadge should fail from a service worker inside a fenced frame');
     68 
     69 promise_test(async () => {
     70  const frame = attachFencedFrameContext();
     71  const error_name = await frame.execute(
     72    createRemoteFunctionForServiceWorkerTest(),
     73    ['clearAppBadge', 'badging-sw.js']);
     74  assert_equals(error_name, "NotAllowedError",
     75                "The Badge API should cause exception from a service worker " +
     76                "in a fencedfarme");
     77 }, 'clearAppBadge should fail from a service worker inside a fenced frame');
     78 </script>
     79 </body>