tor-browser

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

media-autoplay.https.html (1497B)


      1 <!DOCTYPE html>
      2 <title>Same-origin prerendering can trigger autoplay</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="/common/dispatcher/dispatcher.js"></script>
      8 <script src="../resources/utils.js"></script>
      9 <script src="resources/utils.js"></script>
     10 
     11 <body>
     12 <script>
     13 setup(() => assertSpeculationRulesIsSupported());
     14 
     15 promise_test(async t => {
     16  const {exec, activate} = await create_prerendered_page(t);
     17  await exec(() => {
     18    const video = document.createElement('video');
     19    video.src = '/media/A4.mp4';
     20    video.autoplay = true;
     21    video.muted = true;
     22    window.video = video;
     23    document.body.appendChild(video);
     24  });
     25 
     26  await new Promise(resolve => t.step_timeout(resolve, 500));
     27 
     28  const before_activation = await exec(() => ({
     29    readyState: video.readyState,
     30    paused: video.paused,
     31    currentTime: video.currentTime
     32  }));
     33 
     34  await activate();
     35  await new Promise(resolve => t.step_timeout(resolve, 500));
     36  const after_activation = await exec(() => ({
     37    readyState: video.readyState,
     38    paused: video.paused,
     39    currentTime: video.currentTime
     40  }));
     41 
     42  assert_equals(before_activation.paused, false);
     43  assert_equals(before_activation.currentTime, 0);
     44  assert_equals(after_activation.paused, false);
     45  assert_greater_than(before_activation.currentTime, 0);
     46 }, "media autoplay should defer playaback");
     47 </script>