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>