Bug 1945643 - Update to mozilla-nimbus-schemas 2025.1.1 r=chumphreys
[gecko.git] / dom / media / webvtt / test / mochitest / test_webvtt_resistfingerprinting.html
blob27f9cff273fdbe2907bcfe9854f2868a23f33bc7
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");
24 let iteration = "0";
25 async function startTest() {
26 await SpecialPowers.pushPrefEnv({
27 "set": [
28 ["privacy.resistFingerprinting", true]
30 });
32 iteration = await fetch("basicvtt-server.sjs?request=newIteration")
33 .then(response => response.text());
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);
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
54 if (num > 3) {
55 ok(false, "Too many VTT files are loaded");
56 return true;
58 return false;
59 }).catch(error => {
60 ok(false, "Failed to fetch count: " + error);
61 return true;
62 });
63 if (shouldEnd) {
64 break;
66 await new Promise(resolve => setTimeout(resolve, 1000));
69 await SpecialPowers.popPrefEnv();
70 SimpleTest.finish();
73 onload = startTest;
74 </script>
75 </body>
76 </html>