<!doctype html>
<title>CanvasCapture applyConstraints</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
promise_test(async t => {
let canvas = document.createElement('canvas');
canvas.width = canvas.height = 64;
let stream = canvas.captureStream();
let track = stream.getVideoTracks()[0];
t.add_cleanup(() => track.stop());
let settings = track.getSettings();
assert_equals(settings.width, canvas.width);
assert_equals(settings.height, canvas.height);
assert_equals(settings.resizeMode, 'none');
await track.applyConstraints({width: 63, height: 63});
settings = track.getSettings();
assert_equals(settings.width, 63);
assert_equals(settings.height, 63);
assert_equals(settings.resizeMode, 'crop-and-scale');
await track.applyConstraints({resizeMode: {exact: 'none'}});
settings = track.getSettings();
assert_equals(settings.width, canvas.width);
assert_equals(settings.height, canvas.height);
assert_equals(settings.resizeMode, 'none');
try {
await track.applyConstraints(
{width: {exact: 63}, resizeMode: {exact: 'none'}});
t.step(()=>assert_unreached('applyConstraints should not have succeeded'));
} catch(e) {
assert_equals(e.name, 'OverconstrainedError');
assert_equals(e.constraint, 'width');
}
}, "Canvas capture resizeMode");
</script>
</body>
</html>