<!doctype HTML>
<meta charset="utf8">
<title>Content Visibility: tab order navigation ignores hidden subtrees</title>
<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility">
<meta name="assert" content="tab order navigation ignores hidden subtrees.">

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>

<style>
.hidden {
  content-visibility: hidden;
}
</style>

<input id=one type=text></input>
<div class=hidden>
  <input id=two type=text></input>
  <input id=three type=text></input>
  <input id=four type=text></input>
</div>
<input id=five type=text></input>

<script>
async_test((t) => {
  const tab = "\t";
  async function step1() {
    await test_driver.send_keys(document.body, tab);
    t.step(() => {
      assert_equals(document.activeElement, document.getElementById("one"));
    });
    requestAnimationFrame(step2);
  }

  async function step2() {
    await test_driver.send_keys(document.body, tab);
    t.step(() => {
      assert_equals(document.activeElement, document.getElementById("five"));
    });
    t.done();
  }

  window.onload = () => { requestAnimationFrame(step1); };
}, "Tab order navigation skips hidden subtrees");
</script>
