tor-browser

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

no-leak-on-detached-use.https.html (1275B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 </head>
      7 <body>
      8 <script>
      9 function waitForMessage(data) {
     10  return new Promise(
     11      resolve => {
     12        window.addEventListener('message', e => {
     13          if (e.data == data) {
     14            resolve();
     15          }
     16        }, {once: true});
     17      });
     18 }
     19 
     20 promise_test(async t => {
     21  const w = window.open('resources/window-postmessage-open-close.html');
     22  await waitForMessage('opened');
     23 
     24  const nav = w.navigator;
     25  let result = nav.getBattery();
     26  assert_equals(typeof result, 'object');
     27  assert_equals(result.constructor, w.Promise);
     28 
     29  w.close();
     30  await waitForMessage('closed');
     31  result = nav.getBattery();
     32  assert_equals(result, undefined);
     33 }, 'navigator.getBattery() does not operate on a closed window');
     34 
     35 promise_test(async t => {
     36  const iframe = document.createElement('iframe');
     37  iframe.srcdoc = '<html></html>';
     38  document.body.appendChild(iframe);
     39 
     40  const frameNav = iframe.contentWindow.navigator;
     41  document.body.removeChild(iframe);
     42 
     43  const battery = await frameNav.getBattery();
     44  assert_equals(battery, undefined);
     45 }, 'navigator.getBattery() on a detached frame does not leak or crash');
     46 </script>
     47 </body>
     48 </html>