tor-browser

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

test_trackelementevent.html (2270B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test for Bug 882677 - Implement the 'sourcing out of band text tracks' algorithm</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script type="text/javascript" src="manifest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      8 </head>
      9 <body>
     10 <video id="v" src="seek.webm" preload="auto">
     11 <script type="text/javascript">
     12 /**
     13 * This test is used to ensure that we can load resource from vtt files correctly
     14 * and will dispatch `error` event for invalid vtt files.
     15 */
     16 var video = document.getElementById("v");
     17 
     18 async function runTest() {
     19  let tracks = createTextTrackElements();
     20  appendTracksToVideo(tracks);
     21  await waitUntilsTrackLoadedOrGetError(tracks);
     22  SimpleTest.finish()
     23 }
     24 
     25 SimpleTest.waitForExplicitFinish();
     26 onload = runTest;
     27 
     28 /**
     29 * The following are test helper functions.
     30 */
     31 function createTextTrackElements() {
     32  // Only first track has valid vtt resource, other tracks should get the error
     33  // event because of invalid vtt resources.
     34  let trackOne = document.createElement("track");
     35  trackOne.src = "basic.vtt";
     36  trackOne.kind = "subtitles";
     37  trackOne.expectedLoaded = true;
     38 
     39  let trackTwo = document.createElement("track");
     40  trackTwo.src = "bad-signature.vtt";
     41  trackTwo.kind = "captions";
     42  trackTwo.expectedLoaded = false;
     43 
     44  let trackThree = document.createElement("track");
     45  trackThree.src = "bad.vtt";
     46  trackThree.kind = "chapters";
     47  trackThree.expectedLoaded = false;
     48 
     49  return [trackOne, trackTwo, trackThree];
     50 }
     51 
     52 function appendTracksToVideo(tracks) {
     53  for (let track of tracks) {
     54    video.appendChild(track);
     55  }
     56 }
     57 
     58 async function waitUntilsTrackLoadedOrGetError(tracks) {
     59  let promises = [];
     60  for (let track of tracks) {
     61    // explictly enable those track in order to start loading.
     62    track.track.mode = "hidden";
     63    if (track.expectedLoaded) {
     64      info(`adding 'load' event to wait list.`);
     65      promises.push(once(track, "load"));
     66    } else {
     67      info(`adding 'error' event to wait list.`);
     68      promises.push(once(track, "error"));
     69    }
     70  }
     71  info(`wait until tracks finish loading or get error.`);
     72  await Promise.all(promises);
     73  ok(true, "all tracks finish loading or get error.");
     74 }
     75 </script>
     76 </body>
     77 </html>