<DOCTYPE html> | |
<title>Test media controls video keyboard navigation with preventDefault()</title> | |
<script src="../../resources/testharness.js"></script> | |
<script src="../../resources/testharnessreport.js"></script> | |
<script src="../media-controls.js"></script> | |
<script> | |
test(_ => { | |
assert_true('eventSender' in window); | |
}, 'eventSender required'); | |
async_test(function(t) { | |
var video = document.createElement('video'); | |
video.src = "../content/test.ogv"; | |
video.controls = true; | |
assert_equals(video.volume, 1); | |
assert_equals(video.currentTime, 0); | |
video.addEventListener('keydown', e => { e.preventDefault() }); | |
video.addEventListener('keypress', e => { e.preventDefault() }); | |
video.addEventListener('keyup', e => { e.preventDefault() }); | |
video.oncanplaythrough = t.step_func_done(function() { | |
// Focus the video. | |
video.focus(); | |
// 'Enter' does not play the video. | |
eventSender.keyDown("Enter"); | |
assert_true(video.paused); | |
// 'Down' does not reduce volume. | |
eventSender.keyDown("ArrowDown"); | |
assert_equals(video.volume, 1); | |
// 'Space' also does not pauses/plays the video. | |
eventSender.keyDown(" "); | |
assert_true(video.paused); | |
var cur = video.currentTime; | |
// 'Right' does not scrub the timeline forward. | |
eventSender.keyDown("ArrowRight"); | |
assert_equals(video.currentTime, cur); | |
// 'End' does not set the timeline to end. | |
eventSender.keyDown("End"); | |
assert_equals(video.currentTime, cur); | |
}); | |
document.body.appendChild(video); | |
}); | |
</script> |