<!DOCTYPE html>
<meta charset="utf-8">
<title>HTML Test: focus - key events</title>
<link rel="author" title="Intel" href="http://www.intel.com/">
<link rel="help" href="https://html.spec.whatwg.org/multipage/#focus">
<meta assert="flag" content="interact">
<meta assert="assert" content="Check if the key events received by document are targeted at the element when no element is focused">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<h2>Steps:</h2>
<ol>
  <li>Press any key in [0-9a-zA-Z].</li>
</ol>
<h2>Expect results:</h2>
<p>PASS</p>
<div id="log"></div>
<script>

//These tests can be automated once we have an uniform way to use webdriver.
var t1 = async_test("The keydown event must be targeted at the body element"),
    t2 = async_test("The keypress event must be targeted at the body element"),
    t3 = async_test("The keyup event must be targeted at the body element");

setup({timeout: 10000});

document.onkeydown = t1.step_func_done(function(evt){
  assert_equals(evt.target, document.body, "The keydown events must be targeted at the document's body.");
});

document.onkeypress = t2.step_func_done(function(evt){
  assert_equals(evt.target, document.body, "The keypress events must be targeted at the document's body.");
});

document.onkeyup = t3.step_func_done(function(evt){
  assert_equals(evt.target, document.body, "The keyup events must be targeted at the document's body.");
});

</script>
