summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/remote-playback/remote-video-control-seek-manual.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/remote-playback/remote-video-control-seek-manual.html')
-rw-r--r--testing/web-platform/tests/remote-playback/remote-video-control-seek-manual.html78
1 files changed, 78 insertions, 0 deletions
diff --git a/testing/web-platform/tests/remote-playback/remote-video-control-seek-manual.html b/testing/web-platform/tests/remote-playback/remote-video-control-seek-manual.html
new file mode 100644
index 0000000000..56156d9871
--- /dev/null
+++ b/testing/web-platform/tests/remote-playback/remote-video-control-seek-manual.html
@@ -0,0 +1,78 @@
+<!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>