tor-browser

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

restriction-storage-persist.https.html (1632B)


      1 <!DOCTYPE html>
      2 <title>Access to storage.persist() is deferred</title>
      3 <meta name="timeout" content="long">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/common/utils.js"></script>
      7 <script src="../resources/utils.js"></script>
      8 <script src="resources/utils.js"></script>
      9 
     10 <body>
     11 <script>
     12 setup(() => assertSpeculationRulesIsSupported());
     13 promise_test(async t => {
     14  const uid = token();
     15  const bc = new PrerenderChannel('test-channel', uid);
     16 
     17  const gotMessage = new Promise(resolve => {
     18    bc.addEventListener('message', e => {
     19      resolve(e.data);
     20    }, {
     21      once: true
     22    });
     23  });
     24  const url = `resources/storage-persist.https.html?uid=${uid}`;
     25  window.open(url, '_blank', 'noopener');
     26 
     27  const result = await gotMessage;
     28  const expected = [
     29    {
     30      event: 'started waiting navigator.storage.persist',
     31      prerendering: true
     32    },
     33    {
     34      event: 'prerendering change',
     35      prerendering: false
     36    },
     37    {
     38      event: 'finished waiting navigator.storage.persist',
     39      prerendering: false
     40    },
     41  ];
     42  assert_equals(result.length, expected.length);
     43  for (let i = 0; i < result.length; i++) {
     44    assert_equals(result[i].event, expected[i].event, `event[${i}]`);
     45    assert_equals(result[i].prerendering, expected[i].prerendering,
     46      `prerendering[${i}]`);
     47  }
     48  bc.close();
     49 
     50  // Send a close signal to PrerenderEventCollector on the prerendered page.
     51  new PrerenderChannel('close', uid).postMessage('');
     52 }, `the access to the storage.persist() should be deferred until the prerendered
     53    page is activated`);
     54 </script>