Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(492)

Unified Diff: third_party/WebKit/LayoutTests/media/controls/controls-video-keynav.html

Issue 2700663002: Adds keyboard functionality for videos. (Closed)
Patch Set: Merge branch 'real_master' into keypress Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/media/controls/controls-video-keynav.html
diff --git a/third_party/WebKit/LayoutTests/media/controls/controls-video-keynav.html b/third_party/WebKit/LayoutTests/media/controls/controls-video-keynav.html
new file mode 100644
index 0000000000000000000000000000000000000000..4c69aef15617de11a7a3f9af24e39a6da7f722b9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/media/controls/controls-video-keynav.html
@@ -0,0 +1,67 @@
+<DOCTYPE html>
+<title>Test media controls video keyboard navigation</title>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../media-file.js"></script>
+<script src="../media-controls.js"></script>
+<video controls></video>
+<script>
+test(_ => {
+ assert_true('eventSender' in window);
+}, 'eventSender required');
+
+async_test(function(t) {
+ var video = document.querySelector("video");
+ video.src = findMediaFile("video", "../content/test");
+ assert_equals(video.volume, 1);
+ assert_equals(video.currentTime, 0);
+
+ video.oncanplaythrough = t.step_func_done(function() {
+ // Focus the video.
+ video.focus();
+
+ // 'Enter' plays the video.
+ eventSender.keyDown("Enter");
+ assert_false(video.paused);
+
+ // 'Down' reduces volume.
+ eventSender.keyDown("ArrowDown");
+ assert_less_than(video.volume, 1);
+
+ // 'Up' increases volume.
+ eventSender.keyDown("ArrowUp");
+ assert_equals(video.volume, 1);
+
+ // 'Enter' again pauses the video.
+ eventSender.keyDown("Enter");
+ assert_true(video.paused);
+
+ // 'Space' also pauses/plays the video.
+ eventSender.keyDown(" ");
+ assert_false(video.paused);
+
+ eventSender.keyDown(" ");
+ assert_true(video.paused);
+
+ var cur = video.currentTime;
+
+ // 'Right' scrubs the timeline forward.
+ // Used to move the timeline off the first frame which is neccessary to
+ // test 'Home', otherwise 'Home' is a no-op.
+ eventSender.keyDown("ArrowRight");
+ assert_greater_than(video.currentTime, cur);
+
+ // 'Home' sets the timeline to 0.
+ eventSender.keyDown("Home");
+ assert_equals(video.currentTime, 0);
+
+ // 'End' sets the timeline to end.
+ eventSender.keyDown("End");
+ assert_equals(video.currentTime, video.duration);
+
+ // 'Left' scrubs the timeline back.
+ eventSender.keyDown("ArrowLeft");
+ assert_less_than(video.currentTime, video.duration);
+ });
+});
+</script>

Powered by Google App Engine
This is Rietveld 408576698