blob: bc91d479f308407b952bba5027e0ae9474ae6d71 [file] [edit]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>getDisplayMedia track support of max constraints</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="resources/getDisplayMedia-utils.js"></script>
</head>
<body>
<video id=video autoplay playsinline></video>
<script>
async function validateSize(test, stream, width, height, name)
{
video.srcObject = stream;
await video.play();
const videoFrame = await new Promise((resolve, reject) => video.requestVideoFrameCallback(() => {
resolve(new VideoFrame(video));
setTimeout(() => reject("videoFrame timeout"), 5000);
}));
test.add_cleanup(() => videoFrame.close());
assert_equals(videoFrame.codedWidth, width, name + " width");
assert_equals(videoFrame.codedHeight, height, name + " height");
}
promise_test(async (test) => {
const stream = await callGetDisplayMedia({ video: { height: { max: 2000 }, width : { max : 3000 } } });
test.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const streamClone = stream.clone();
test.add_cleanup(() => streamClone.getTracks().forEach(track => track.stop()));
await validateSize(test, stream, 1920, 1080, "video original")
await validateSize(test, streamClone, 1920, 1080, "video clone")
const promise = new Promise((resolve, reject) => {
streamClone.getVideoTracks()[0].onconfigurationchange = resolve
setTimeout(() => reject("onconfigurationchange timeout"), 5000);
});
if (window.testRunner)
testRunner.triggerMockCaptureConfigurationChange(false, false, true);
await promise;
await validateSize(test, stream, 3000, 1687, "new video original")
await validateSize(test, streamClone, 3000, 1687, "new video clone")
const settings = stream.getVideoTracks()[0].getSettings();
const cloneSettings = streamClone.getVideoTracks()[0].getSettings();
assert_equals(cloneSettings.width, settings.width, "width");
assert_equals(cloneSettings.height, settings.height, "height");
}, "getDisplayMedia stream clone should copy its video constraints");
</script>
</body>
</html>