<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></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' 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);
    });
});
</script>

