tor-browser

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

bug1675097.https.html (1527B)


      1 <!DOCTYPE html>
      2 <title>Controlled iframe with initial about:blank becomes sandboxed</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
      6 <body>
      7 <script>
      8 
      9 // This test creates an iframe controlled by a service worker, which in turn has
     10 // another iframe in it. The inner iframe's fetch is intercepted by the service
     11 // worker, which notifies the outer iframe, which then adds the sandbox
     12 // attribute to the inner iframe. The outer iframe then signals the service
     13 // worker that it should evaluate self.clients.matchAll() and finally respond to
     14 // the inner iframe's fetch.
     15 // Evaluating self.clients.matchAll() causes the creation of the initial
     16 // about:blank document for the inner iframe, and if the sandboxing flags used
     17 // for that document are not the original flags for the inner iframe (i.e. none)
     18 // then the document will have an opaque origin, a case that we need to handle
     19 // properly.
     20 promise_test(async t => {
     21    const URL = 'resources/bug1675097-sw.js';
     22    const SCOPE = 'resources/';
     23 
     24    const registration = await service_worker_unregister_and_register(t, URL, SCOPE);
     25    t.add_cleanup(() => registration.unregister());
     26 
     27    await wait_for_state(t, registration.installing, 'activated');
     28 
     29    const outer = await with_iframe(SCOPE + 'bug1675097-iframe.html');
     30    t.add_cleanup(() => outer.remove());
     31 }, 'Regression test for bug 1675097');
     32 
     33 </script>
     34 </body>