test_eme_canvas_blocked.html (1666B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test Encrypted Media Extensions</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 <script type="text/javascript" src="eme.js"></script> 9 </head> 10 <body> 11 <pre id="test"> 12 <script class="testbody" type="text/javascript"> 13 var manager = new MediaTestManager(); 14 15 function startTest(test, token) { 16 manager.started(token); 17 18 let v = document.createElement("video"); 19 v.preload = "auto"; // Required due to "canplay" not firing for MSE unless we do this. 20 21 var p1 = new EMEPromise(); 22 v.addEventListener("loadeddata", function(ev) { 23 var video = ev.target; 24 var canvas = document.createElement("canvas"); 25 canvas.width = video.videoWidth; 26 canvas.height = video.videoHeight; 27 document.body.appendChild(canvas); 28 var ctx = canvas.getContext("2d"); 29 ctx.drawImage(video, 0, 0); 30 if (canvas.width || canvas.height) { 31 let pixels = ctx.getImageData(0, 0, canvas.width, canvas.height).data; 32 for (let byte of pixels) { 33 if (byte != 0) { 34 ok(false, "Should not draw EME video to canvas"); 35 // We don't need a log for each pixel, break after 1st failure. 36 break; 37 } 38 } 39 } 40 p1.resolve(); 41 }); 42 43 let p2 = SetupEME(v, test, token); 44 45 Promise.all([p1.promise, p2]) 46 .catch(reason => ok(false, reason)) 47 .then(() => { 48 CleanUpMedia(v); 49 manager.finished(token); 50 }); 51 } 52 53 SimpleTest.waitForExplicitFinish(); 54 manager.runTests(gEMETests, startTest); 55 </script> 56 </pre> 57 </body> 58 </html>