tor-browser

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

test_webvtt_resistfingerprinting.html (2465B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset='utf-8'>
      5  <title>WebVTT: ResistFingerprinting</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      8 </head>
      9 <body>
     10 <div id="content">
     11 </div>
     12 <template id="video">
     13  <video width="600" height="400" controls onloadeddata="handleOnLoadedData()">
     14    <source src="gizmo.mp4" type="video/mp4">
     15    <track label="VTT1" kind="subtitles" srclang="en" src="basicvtt-server.sjs?request=vtt&id=test_webvtt_resistfingerprinting.html" />
     16    <track label="VTT2" kind="subtitles" srclang="es" src="basicvtt-server.sjs?request=vtt&id=test_webvtt_resistfingerprinting.html" />
     17    <track label="VTT3" kind="subtitles" srclang="tr" src="basicvtt-server.sjs?request=vtt&id=test_webvtt_resistfingerprinting.html" default />
     18  </video>
     19 </template>
     20 <script class="testbody" type="text/javascript">
     21 SimpleTest.waitForExplicitFinish();
     22 SimpleTest.requestFlakyTimeout("Need to wait for all VTT files to be loaded");
     23 
     24 let iteration = "0";
     25 async function startTest() {
     26  await SpecialPowers.pushPrefEnv({
     27    "set": [
     28      ["privacy.resistFingerprinting", true]
     29    ]
     30  });
     31 
     32  iteration = await fetch("basicvtt-server.sjs?request=newIteration")
     33    .then(response => response.text());
     34 
     35  const video = document.getElementById("video").content.cloneNode(true);
     36  video.querySelectorAll("track").forEach(track => {
     37    track.src = track.src + iteration;
     38  });
     39  document.getElementById("content").appendChild(video);
     40 }
     41 
     42 async function handleOnLoadedData() {
     43  // Wait for 5 minutes at most
     44  for (let i = 0; i < 5 * 60; i++) {
     45    const shouldEnd = await fetch("basicvtt-server.sjs?request=count&id=test_webvtt_resistfingerprinting.html" + iteration)
     46      .then(response => response.text())
     47      .then(text => {
     48        info("Number of VTT files loaded: " + text);
     49        const num = +text;
     50        if (num === 3) {
     51          ok(true, "All VTT files are loaded");
     52          return true
     53        }
     54        if (num > 3) {
     55          ok(false, "Too many VTT files are loaded");
     56          return true;
     57        }
     58        return false;
     59      }).catch(error => {
     60        ok(false, "Failed to fetch count: " + error);
     61        return true;
     62      });
     63    if (shouldEnd) {
     64      break;
     65    }
     66    await new Promise(resolve => setTimeout(resolve, 1000));
     67  }
     68 
     69  await SpecialPowers.popPrefEnv();
     70  SimpleTest.finish();
     71 }
     72 
     73 onload = startTest;
     74 </script>
     75 </body>
     76 </html>