tor-browser

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

test_background_video_cancel_suspend_visible.html (2081B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Test Background Video Suspend Cancels (Visibility)</title>
      4 <script src="/tests/SimpleTest/SimpleTest.js"></script>
      5 <script src="manifest.js"></script>
      6 <script src="background_video.js"></script>
      7 <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
      8 <script type="text/javascript">
      9 "use strict";
     10 
     11 var manager = new MediaTestManager;
     12 
     13 /**
     14 * Check that making the element visible before suspend timer delay causes the
     15 * the suspend timer to be canceled.
     16 *
     17 * @param {HTMLMediaElement} video Video element under test.
     18 * @returns {Promise} Promise that is resolved when video decode resumes.
     19 */
     20 function testSuspendTimerCanceledWhenShown(video) {
     21  function ended() {
     22    video.removeEventListener("mozcancelvideosuspendtimer", canceled);
     23    ok(false, `${video.token} ended before suspend cancels`);
     24    this.ended_resolve();
     25  }
     26 
     27  function canceled() {
     28    video.removeEventListener("ended", ended);
     29    ok(true, `${video.token} suspend cancels`);
     30    this.canceled_resolve();
     31  }
     32 
     33  let p = Promise.race([
     34    new Promise((resolve) => {
     35      video.ended_resolve = resolve;
     36      video.addEventListener('ended', ended, { 'once': true });
     37    }),
     38    new Promise((resolve) => {
     39      video.canceled_resolve = resolve;
     40      video.addEventListener('mozcancelvideosuspendtimer', canceled, { 'once': true });
     41    })
     42  ]);
     43 
     44  Log(video.token, "Set visible");
     45  video.setVisible(true);
     46 
     47  return p;
     48 }
     49 
     50 startTest({
     51  desc: 'Test Background Video Suspend Cancels (Visibility)',
     52  prefs: [
     53    [ "media.test.video-suspend", true ],
     54    [ "media.suspend-background-video.enabled", true ],
     55    [ "media.suspend-background-video.delay-ms", 10000 ]
     56  ],
     57  tests: gDecodeSuspendTests,
     58  runTest: (test, token) => {
     59    let v = appendVideoToDoc(test.name, token);
     60    manager.started(token);
     61 
     62    waitUntilPlaying(v)
     63      .then(() => testSuspendTimerStartedWhenHidden(v))
     64      .then(() => testSuspendTimerCanceledWhenShown(v))
     65      .then(() => {
     66        ok(true, `${v.token} finished`);
     67        manager.finished(token);
     68      });
     69  }
     70 });