blob: b1e709dda45fca362c0460ca670ea60c0f7f765d [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/media/capture/mojo/image_capture.mojom.js"></script>
<script src="resources/mock-imagecapture.js"></script>
<body>
<canvas id='canvas' width=10 height=10/>
</body>
<script>
const fillLightModeNames = ['off', 'auto', 'flash'];
// This test verifies that ImageCapture can call setOptions()s, with a mock Mojo
// interface implementation.
promise_test(async function() {
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]);
await capturer.setOptions(optionsDict);
assert_equals(true, mockImageCapture.options().hasWidth, 'has_width');
assert_equals(optionsDict.imageWidth, mockImageCapture.options().width,
'width');
assert_equals(true, mockImageCapture.options().hasHeight, 'has_height');
assert_equals(optionsDict.imageHeight, 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 == mockImageCapture.options().redEyeReduction,
'redEyeReduction');
assert_equals(true, mockImageCapture.options().hasFillLightMode,
'hasFillLightMode');
assert_equals(optionsDict.fillLightMode,
fillLightModeNames[mockImageCapture.options().fillLightMode],
'fillLightMode');
}, 'exercises ImageCapture.setOptions(options)');
</script>