tor-browser

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

payment-handler.https.html (2030B)


      1 <!DOCTYPE html>
      2 <title>Test Payment Handler 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 promise_test(async () => {
     14  const frame = attachFencedFrameContext();
     15  const error_name = await frame.execute(async () => {
     16    navigator.serviceWorker.register(
     17      "empty-worker.js", { scope: location.href });
     18    const registration = await navigator.serviceWorker.ready;
     19    try {
     20      registration.paymentManager;
     21    } catch (e) {
     22      return e.name;
     23    }
     24  });
     25  assert_equals(error_name, "NotAllowedError",
     26                "paymentManager is not allowed in fenced frames");
     27 }, 'paymentManager should fail inside a fenced frame');
     28 
     29 promise_test(async () => {
     30  const frame = attachFencedFrameContext();
     31  const error_name = await frame.execute(async () => {
     32    const getController = () => {
     33      if (navigator.serviceWorker.controller) {
     34        return navigator.serviceWorker.controller;
     35      }
     36      return new Promise(resolve => {
     37        navigator.serviceWorker.addEventListener('controllerchange', () => {
     38          resolve(navigator.serviceWorker.controller);
     39        });
     40      });
     41    };
     42 
     43    navigator.serviceWorker.register(
     44      "payment-handler-sw.js", { scope: location.href });
     45    const ctrl = await getController();
     46 
     47    return new Promise(resolve => {
     48      ctrl.postMessage("test");
     49      navigator.serviceWorker.onmessage = e => {
     50        const error = e.data;
     51        resolve(error.name);
     52      };
     53    });
     54  });
     55  assert_equals(error_name, "NotAllowedError",
     56                "paymentManager is not allowed from the service worker " +
     57                "in fenced frames");
     58 }, 'paymentManager should fail from the service worker inside a fenced frame');
     59 </script>
     60 </body>