<!DOCTYPE html>
<meta charset="utf-8">
<title>Selectors Level 4: focus</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/selectors-4/#focus-pseudo">
<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule-one">
<meta name="assert" content="Checks ':focus' pseudo-class after 'display: none'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="wrapper">
  <input id="input">
</div>
<script>
  "use strict";

  const wrapper = document.getElementById("wrapper");
  const input = document.getElementById("input");

  async_test((t) => {
    input.focus();
    window.requestAnimationFrame(() => {
      t.step(() => assert_true(input.matches(":focus"),
                               "Check input matches ':focus' after being focused"));

      input.style.display = "none";
      window.requestAnimationFrame(() => {
        t.step(() => assert_false(input.matches(":focus"),
                                  "Check input doesn't match ':focus' after getting 'display: none'"));
        input.style.display = "inline";
        t.done();
      });
    });
  }, "Test ':focus' after 'display:none' on input");

  async_test((t) => {
    input.focus();
    window.requestAnimationFrame(() => {
      t.step(() => assert_true(input.matches(":focus"),
                               "Check input matches ':focus' after being focused"));

      wrapper.style.display = "none";
      window.requestAnimationFrame(() => {
        t.step(() => assert_false(input.matches(":focus"),
                                  "Check input doesn't match ':focus' after parent got 'display: none'"));
        wrapper.style.display = "block";
        t.done();
      });
    });
  }, "Test ':focus' after 'display:none' on input's parent");
</script>
