<!DOCTYPE html>
<meta charset=utf-8>
<title>Selector: pseudo-classes (:focus)</title>
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org" id=link1>
<link rel=help href="https://html.spec.whatwg.org/multipage/#pseudo-classes" id=link2>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="utils.js"></script>
<body id=body tabindex=0>
  <div id="log"></div>
  <button id=button1 type=submit>button1</button>
  <input id=input1>
  <input id=input2 disabled>
  <input id=input3 autofocus>
  <textarea id=textarea1>textarea1</textarea>
  <input type=checkbox id=checkbox1 checked>
  <input type=radio id=radio1 checked>
  <div tabindex=0 id=div1>hello</div>
  <div contenteditable id=div2>content</div>
  <iframe src="focus-iframe.html" id=iframe onload="load()"></iframe>

  <script>
    testSelector(":focus", ["input3"], "input3 has the attribute autofocus");

    document.getElementById("input1").focus(); // set the focus on input1
    testSelector(":focus", ["input1"], "input1 has the focus");

    document.getElementById("div1").focus();
    testSelector(":focus", ["div1"], "tabindex attribute makes the element focusable");

    document.getElementById("div2").focus();
    testSelector(":focus", ["div2"], "editable elements are focusable");

    function load() {
      document.getElementById("iframe").contentDocument.getElementById("inputiframe").focus();
      testSelector(":focus", [], "':focus' doesn't match focused elements in iframe");
    }

    document.body.focus();
    testSelector(":focus", ["body"], "':focus' matches focussed body with tabindex");
  </script>
</body>
