takePhoto.https.html (1947B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/mediacapture-image/resources/imagecapture-helpers.js"></script> 5 <body> 6 <canvas id='canvas' width=10 height=10></canvas> 7 </body> 8 <script> 9 10 // This test verifies that ImageCapture can takePhoto()s, with a mock Mojo 11 // interface implementation. 12 13 image_capture_test(async t => { 14 let canvas = document.getElementById('canvas'); 15 let context = canvas.getContext('2d'); 16 context.fillStyle = 'red'; 17 context.fillRect(0, 0, 10, 10); 18 let stream = canvas.captureStream(); 19 20 let capturer = new ImageCapture(stream.getVideoTracks()[0]); 21 let blob = await capturer.takePhoto(); 22 23 // JS Blob is almost-opaque, can only check |type| and |size|. 24 assert_equals(blob.type, 'image/cat'); 25 assert_equals(blob.size, 2); 26 27 }, 'exercises ImageCapture.takePhoto()'); 28 29 image_capture_test(async t => { 30 let canvas = document.getElementById('canvas'); 31 let context = canvas.getContext('2d'); 32 context.fillStyle = 'red'; 33 context.fillRect(0, 0, 10, 10); 34 let stream = canvas.captureStream(); 35 36 let capturer = new ImageCapture(stream.getVideoTracks()[0]); 37 let blob = await capturer.takePhoto(null); 38 39 // JS Blob is almost-opaque, can only check |type| and |size|. 40 assert_equals(blob.type, 'image/cat'); 41 assert_equals(blob.size, 2); 42 43 }, 'exercises ImageCapture.takePhoto(null)'); 44 45 promise_test(t => { 46 let canvas = document.getElementById('canvas'); 47 let context = canvas.getContext('2d'); 48 context.fillStyle = 'red'; 49 context.fillRect(0, 0, 10, 10); 50 let stream = canvas.captureStream(); 51 let videoTrack = stream.getVideoTracks()[0]; 52 videoTrack.stop(); 53 54 let capturer = new ImageCapture(videoTrack); 55 assert_equals(videoTrack.readyState, 'ended'); 56 57 return promise_rejects_dom(t, 'InvalidStateError', capturer.takePhoto()) 58 59 }, 'takePhoto() of an ended Track should throw "InvalidStateError"'); 60 61 </script>