tor-browser

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

test_background_video_tainted_by_drawimage.html (1571B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Test Background Video Is Tainted By drawImage</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 function drawVideoToCanvas(v) {
     14  let w = v.width,
     15      h = v.height,
     16      c = document.createElement('canvas');
     17  c.width = w;
     18  c.height = h;
     19  document.body.appendChild(c);
     20 
     21  let gfx = c.getContext('2d');
     22  if (!gfx) {
     23    throw Error("Unable to obtain context '2d' from canvas");
     24  }
     25 
     26  gfx.drawImage(v, 0, 0, w, h);
     27 }
     28 
     29 startTest({
     30  desc: 'Test Background Video Is Tainted By drawImage',
     31  prefs: [
     32    [ "media.test.video-suspend", true ],
     33    [ "media.suspend-background-video.enabled", true ],
     34    [ "media.suspend-background-video.delay-ms", 1000 ]
     35  ],
     36  tests: gDecodeSuspendTests,
     37  runTest: (test, token) => {
     38    ok(true, `${test.name}`);
     39    let v = appendVideoToDoc(test.name, token);
     40    manager.started(token);
     41 
     42    waitUntilPlaying(v)
     43      .then(() => {
     44        drawVideoToCanvas(v);
     45        ok(v.hasSuspendTaint(), "Video is tainted after drawing to canvas");
     46        return checkVideoDoesntSuspend(v);
     47      })
     48      .then(() => {
     49        ok(true, 'Video ended before decode was suspended');
     50        manager.finished(token);
     51      })
     52      .catch((e) => {
     53        ok(false, 'Test failed: ' + e.toString());
     54        manager.finished(token);
     55      });
     56  }
     57 });
     58 </script>