tor-browser

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

test_fastSeek-forwards.html (2831B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1022913
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 1022913</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11  <script type="text/javascript" src="manifest.js"></script>
     12 </head>
     13 <body>
     14 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1022913">Mozilla Bug 1022913</a>
     15 <p id="display"></p>
     16 <div id="content" style="display: none">
     17 
     18 </div>
     19 <pre id="test">
     20 </pre>
     21  <script type="application/javascript">
     22 
     23    // Test that if we're doing a fastSeek() forwards that we don't end up
     24    // seeking backwards. This can happen if the keyframe before the seek
     25    // target is before the current playback position. We'd prefer to seek to
     26    // the keyframe after the seek target in this case, but we don't implement
     27    // this yet (bug 1026330).
     28    var manager = new MediaTestManager;
     29 
     30    var onSecondSeekComplete = function(event) {
     31      var v = event.target;
     32      v.removeEventListener("seeked", onSecondSeekComplete);
     33      ok(v.currentTime >= v.firstSeekTarget, v.name + " seek never go backwards. time=" + v.currentTime + " firstSeekTarget=" + v.firstSeekTarget + " secondSeekTarget=" + v.secondSeekTarget);
     34      manager.finished(v.token);
     35      removeNodeAndSource(v);
     36    };
     37 
     38    var onFirstSeekComplete = function(event) {
     39      var v = event.target;
     40      v.removeEventListener("seeked", onFirstSeekComplete);
     41      // Seek to 75% of the way between the start and the first keyframe
     42      // using fastSeek. We then test that the currentTime doesn't drop back
     43      // to the previous keyframe, currentTime should go forwards.
     44      v.addEventListener("seeked", onSecondSeekComplete);
     45      v.secondSeekTarget = v.keyframes[1] * 0.75;
     46      v.fastSeek(v.secondSeekTarget);
     47    }
     48 
     49    var onLoadedMetadata = function(event) {
     50      // Seek to the mid-point between the start and the first keyframe.
     51      var v = event.target;
     52      v.removeEventListener("loadedmetadata", onLoadedMetadata);
     53      v.addEventListener("seeked", onFirstSeekComplete);
     54      v.firstSeekTarget = v.keyframes[1] * 0.5;
     55      v.currentTime = v.firstSeekTarget;
     56    }
     57 
     58    function startTest(test, token) {
     59      manager.started(token);
     60      let v = document.createElement("video");
     61      v.src = test.name;
     62      v.name = test.name;
     63      v.preload = "metadata";
     64      v.token = token;
     65      v.target = 0;
     66      v.keyframes = test.keyframes;
     67      v.keyframeIndex = 0;
     68      ok(v.keyframes.length >= 2, v.name + " - video should have at least two sync points");
     69      v.addEventListener("loadedmetadata", onLoadedMetadata);
     70      document.body.appendChild(v);
     71    }
     72 
     73    manager.runTests(gFastSeekTests, startTest);
     74 
     75  </script>
     76 </body>
     77 </html>