tor-browser

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

test_seamless_looping_seek_current_time.html (2083B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <title>Seamless looping current time after seek</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 <script type="application/javascript">
     10 
     11 /**
     12 * This test is used to ensure that the playback position won't be reset to ZERO
     13 * incorrectly when performing seek on a looping media.
     14 */
     15 add_task(async function testSeekVideoOnlyPlayback() {
     16  info(`create and play a media which contains only video track`);
     17  let video = createLoopingMedia("video", "gizmo-noaudio.webm");
     18  await video.play();
     19  await assertSeekingForwardShouldIncreaseCurrentTime(video);
     20  removeNodeAndSource(video);
     21 });
     22 
     23 add_task(async function testSeekAudioOnlyPlayback() {
     24  info(`create and play a media which contains only audio track`);
     25  let audio = createLoopingMedia("audio", "flac-s24.flac");
     26  await audio.play();
     27  await assertSeekingForwardShouldIncreaseCurrentTime(audio);
     28  removeNodeAndSource(audio);
     29 });
     30 
     31 add_task(async function testSeekBothTracksPlayback() {
     32  info(`create and play a media which contains both tracks`);
     33  let video = createLoopingMedia("video", "gizmo.mp4");
     34  await video.play();
     35  await assertSeekingForwardShouldIncreaseCurrentTime(video);
     36  removeNodeAndSource(video);
     37 });
     38 
     39 // Following are helper functions
     40 function createLoopingMedia(type, src) {
     41  let media = document.createElement(type);
     42  media.loop = true;
     43  media.src = src;
     44  document.body.appendChild(media);
     45  return media;
     46 }
     47 
     48 async function assertSeekingForwardShouldIncreaseCurrentTime(media) {
     49  const currentTimeBeforeSeek = media.currentTime;
     50  const target =  media.duration / 2;
     51  media.currentTime = target;
     52  await once(media, "seeked");
     53  const currentTimeAfterSeek = media.currentTime;
     54  ok(currentTimeAfterSeek > currentTimeBeforeSeek,
     55    `media current time should keep going forward (target=${target}, ` +
     56    `currentTime=${currentTimeBeforeSeek} -> ${currentTimeAfterSeek})`);
     57 }
     58 
     59 </script>
     60 <body>
     61 </body>
     62 </html>