tor-browser

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

test_seekToNextFrame.html (2390B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test seekToNextFrame of media files that should play OK</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      7  <script type="text/javascript" src="manifest.js"></script>
      8 </head>
      9 <body>
     10 <pre id="test">
     11 <script class="testbody" type="text/javascript">
     12 
     13 var manager = new MediaTestManager;
     14 
     15 function startTest(test, token) {
     16  var video = document.createElement('video');
     17  video.preload = "metadata";
     18  video.token = token;
     19  video.seenSeeking = false;
     20  video.seenEnded = false;
     21 
     22  var handler = {
     23    "ontimeout": function() {
     24      Log(token, "timed out: ended=" + video.seenEnded);
     25    }
     26  };
     27  manager.started(token, handler);
     28 
     29  video.src = test.name;
     30  video.name = test.name;
     31 
     32  function callSeekToNextFrame() {
     33    video.seekToNextFrame().then(
     34      () => {
     35        if (!video.seenSeeking) {
     36          ok(false, video.token + ": Should have already received seeking event.");
     37        }
     38        video.seenSeeking = false;
     39        if (!video.ended) {
     40          callSeekToNextFrame();
     41        }
     42      },
     43      () => {
     44        ok(false, video.token + ": seekToNextFrame() failed.");
     45      }
     46    );
     47  }
     48 
     49  var onLoadedmetadata = function() { return function() {
     50    callSeekToNextFrame();
     51  }}(test, video);
     52 
     53  var finish = function() {
     54    video.finished = true;
     55    video.removeEventListener("loadedmetadata", onLoadedmetadata);
     56    video.removeEventListener("seeking", onSeeking);
     57    removeNodeAndSource(video);
     58    manager.finished(video.token);
     59  }
     60 
     61  var onEnded = function(t, v) { return function() {
     62    v.seenEnded = true;
     63    finish();
     64  }}(test, video);
     65 
     66  var onSeeking = function(t, v) { return function() {
     67    if (v.seenSeeking) {
     68      ok(false, v.token + ": Should yet receive seeking event.");
     69    }
     70    v.seenSeeking = true;
     71  }}(test, video);
     72 
     73  video.addEventListener("loadedmetadata", onLoadedmetadata);
     74  video.addEventListener("seeking", onSeeking);
     75  video.addEventListener("ended", onEnded);
     76 
     77  document.body.appendChild(video);
     78 }
     79 
     80 SimpleTest.waitForExplicitFinish();
     81 SpecialPowers.pushPrefEnv(
     82  {
     83    "set": [
     84      ["media.seekToNextFrame.enabled", true ],
     85      ["media.dormant-on-pause-timeout-ms", -1]
     86    ]
     87  },
     88  function() {
     89    manager.runTests(gSeekToNextFrameTests, startTest);
     90  });
     91 
     92 </script>
     93 </pre>
     94 </body>
     95 </html>