blob: 8158a841578cc5d64ea67e0a1f882d0eaefd2cdf [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Testing video rotation in media recorder</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<video id="recordedVideo" autoplay playsInline width="320" height="240"></video>
<script>
promise_test(async (test) => {
const stream = await navigator.mediaDevices.getUserMedia({video: true });
let expectedWidth = 640;
let expectedHeight = 480;
if (window.internals) {
window.internals.setCameraMediaStreamTrackOrientation(stream.getVideoTracks()[0], 90);
testRunner.setMockCameraOrientation(90);
expectedWidth = 480;
expectedHeight = 640;
}
const recorder = new MediaRecorder(stream);
const promise = new Promise((resolve, reject) => {
recorder.ondataavailable = (e) => resolve(e.data);
setTimeout(() => reject("datavailable event timed out"), 5000);
});
recorder.start();
setTimeout(() => recorder.stop(), 1000);
const blob = await promise;
const url = URL.createObjectURL(blob);
recordedVideo.src = url;
await recordedVideo.play();
URL.revokeObjectURL(url);
assert_equals(recordedVideo.videoWidth, expectedWidth, "recorded video width");
assert_equals(recordedVideo.videoHeight, expectedHeight, "recorded video height");
}, "Record a rotated video");
</script>
</body>
</html>