Source code

Revision control

Copy as Markdown

Other Tools

<!DOCTYPE html>
<html>
<link rel="stylesheet" href="styles.css" />
<title>Test that seek() on the local video is reflected on the remote device</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/media.js"></script>
<script>
setup({ explicit_timeout: true });
</script>
<body>
<div id="pick-device">
<p>
Click the button below to prompt for a remote playback device and select
one!
</p>
<p>
Wait a few seconds for the video to initialize, play and seek.
</p>
<p>
<button id="prompt-button">Pick device</button>
</p>
</div>
<video src="/media/green-at-15.mp4" id="video"></video>
<div id="evaluate" style="display: none">
<p>
Did the playback on the remote device pause and show the following
timestamp? (can vary by some frames)
</p>
<p id="timestamp" style="font-weight: bold"></p>
<p>
<button id="yes">Yes</button>
</p>
<p>
<button id="no">No</button>
</p>
</div>
</body>
<script>
let v = document.getElementById("video");
async_test(t => {
let button = document.getElementById("prompt-button");
button.onclick = t.step_func(() => {
promise_test(() => {
return v.remote.prompt().then(() => {
v.play();
});
}, "Prompt resolves");
});
let timestampLabel = document.getElementById("timestamp");
v.ontimeupdate = () => {
let seconds = Math.floor(v.currentTime) + "";
let frames = Math.ceil((v.currentTime - seconds) * 30) + "";
timestampLabel.innerText =
seconds.padStart(2, "0") + ":" + frames.padStart(2, "0");
if (v.currentTime >= 2 && v.currentTime < 18) {
v.currentTime = 18;
}
if (v.currentTime >= 20) {
v.pause();
document.getElementById("evaluate").style.display = "block";
}
};
let evaluate = success =>
assert_true(success, "Video paused and has correct play position.");
document.getElementById("yes").onclick = t.step_func_done(() =>
evaluate(true)
);
document.getElementById("no").onclick = t.step_func_done(() =>
evaluate(false)
);
}, "Test that seek() on the local video is reflected on the remote device.");
</script>
</html>