blob: 58708612456fc669c5a445b76ad110fcbb0bb27d [file] [log] [blame]
<!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>
const fillLightModeNames = ['off', 'auto', 'flash'];
// This test verifies that ImageCapture can call takePhoto with a PhotoSettings
// argument, with a mock Mojo interface implementation.
image_capture_test(async (t, imageCaptureTest) => {
let canvas = document.getElementById('canvas');
let context = canvas.getContext('2d');
context.fillStyle = 'red';
context.fillRect(0, 0, 10, 10);
let stream = canvas.captureStream();
const optionsDict = { imageWidth : 1080,
imageHeight : 100,
redEyeReduction : true,
fillLightMode : 'flash'
};
let capturer = new ImageCapture(stream.getVideoTracks()[0]);
let blob = await capturer.takePhoto(optionsDict);
// JS Blob is almost-opaque, can only check |type| and |size|.
assert_equals(blob.type, 'image/cat');
assert_equals(blob.size, 2);
assert_equals(true, imageCaptureTest.mockImageCapture().options().hasWidth,
'hasWidth');
assert_equals(optionsDict.imageWidth,
imageCaptureTest.mockImageCapture().options().width,'width');
assert_equals(true, imageCaptureTest.mockImageCapture().options().hasHeight,
'hasHeight');
assert_equals(optionsDict.imageHeight,
imageCaptureTest.mockImageCapture().options().height,
'height');
// Depending on how mojo boolean packing in integers is arranged, this can
// be a number instead of a boolean, compare directly.
// TODO(mcasas): Revert to assert_equals() when yzshen@ has sorted it out.
assert_true(
optionsDict.redEyeReduction == imageCaptureTest.mockImageCapture().
options().redEyeReduction, 'redEyeReduction');
assert_equals(true,
imageCaptureTest.mockImageCapture().options().hasFillLightMode,
'hasFillLightMode');
assert_equals(optionsDict.fillLightMode,
fillLightModeNames[
imageCaptureTest.mockImageCapture().options().fillLightMode],
'fillLightMode');
}, 'exercises ImageCapture.takePhoto(PhotoSettings dictionary)');
</script>