<!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/mediacapture-image/resources/imagecapture-helpers.js"></script> <body> <canvas id='canvas' width=10 height=10/> </body> <script> let canvas = document.getElementById('canvas'); let context = canvas.getContext('2d'); context.fillStyle = 'red'; context.fillRect(0, 0, 10, 10); // This test verifies that ImageCapture.takePhoto() rejects if any passed // option is unsupported or outside its allowed range. function makePromiseTest(getOption) { image_capture_test(async (t, imageCaptureTest) => { imageCaptureTest.mockImageCapture().state().redEyeReduction = 0; let stream = canvas.captureStream(); let capturer = new ImageCapture(stream.getVideoTracks()[0]); await capturer.getPhotoCapabilities(); const options = getOption(imageCaptureTest.mockImageCapture().state()); try { await capturer.takePhoto(options); assert_unreached('expected takePhoto to reject'); } catch (error) { assert_equals(error.name, 'NotSupportedError'); } }); } const optionsGenerators = [ capabilities => ({ redEyeReduction: true }), capabilities => ({ imageHeight: capabilities.height.max + 1 }), capabilities => ({ imageHeight: capabilities.height.min - 1 }), capabilities => ({ imageWidth: capabilities.width.max + 1 }), capabilities => ({ imageWidth: capabilities.width.min - 1 }), capabilities => ({ fillLightMode: 'off' }), ]; for (key in optionsGenerators) { generate_tests( makePromiseTest, [[ 'ImageCapture.takePhoto(options) rejects with bad options, #' + key, optionsGenerators[key] ]]); } </script>