tor-browser

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

test_background_video_cancel_suspend_taint.html (2135B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Test Background Video Suspend Cancels (Element Taint)</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 * @param {HTMLMediaElement} video Video element under test.
     15 * @returns {Promise} Promise that is resolved when video decode resumes.
     16 */
     17 function testSuspendTimerCanceledWhenTainted(video) {
     18  function ended() {
     19    video.removeEventListener("mozcancelvideosuspendtimer", canceled);
     20    ok(false, `${video.token} ended before suspend cancels`);
     21    this.ended_resolve();
     22  }
     23 
     24  function canceled() {
     25    video.removeEventListener("ended", ended);
     26    ok(true, `${video.token} suspend cancels`);
     27    this.canceled_resolve();
     28  }
     29 
     30  let p = Promise.race([
     31    new Promise((resolve) => {
     32      video.ended_resolve = resolve;
     33      video.addEventListener('ended', ended, { 'once': true });
     34    }),
     35    new Promise((resolve) => {
     36      video.canceled_resolve = resolve;
     37      video.addEventListener('mozcancelvideosuspendtimer', canceled, { 'once': true });
     38    })
     39  ]);
     40 
     41  Log(video.token, "Mark tainted");
     42 
     43  let c = document.createElement('canvas');
     44  let g = c.getContext('2d');
     45  g.drawImage(video, 0, 0, c.width, c.height);
     46  ok(video.hasSuspendTaint(), 'video used with drawImage is tainted.');
     47 
     48  return p;
     49 }
     50 
     51 startTest({
     52  desc: 'Test Background Video Suspend Cancels (Element Taint)',
     53  prefs: [
     54    [ "media.test.video-suspend", true ],
     55    [ "media.suspend-background-video.enabled", true ],
     56    [ "media.suspend-background-video.delay-ms", 10000 ]
     57  ],
     58  tests: gDecodeSuspendTests,
     59  runTest: (test, token) => {
     60    let v = appendVideoToDoc(test.name, token);
     61    manager.started(token);
     62 
     63    waitUntilVisible(v)
     64      .then(() => waitUntilPlaying(v))
     65      .then(() => testSuspendTimerStartedWhenHidden(v))
     66      .then(() => testSuspendTimerCanceledWhenTainted(v))
     67      .then(() => { manager.finished(token); });
     68  }
     69 });
     70 </script>