<!DOCTYPE html>
<meta charset="utf-8">
<title>HTML Test: focus - the sequential focus navigation order with shadow dom and all tabindex=0 except host (tabindex=1)</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#sequential-focus-navigation">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="resources/shadow-utils.js"></script>
<body>
<script>
// Structure:
// <div #aboveHost tabindex=0>
// <div #host tabindex=1>
//    #shadowRoot
//      <div #aboveSlot tabindex=0>
//      <slot #slotAbove tabindex=0>
//        (slotted) <div #slottedAbove tabindex=0>
//      <slot #slotBelow tabindex=0>
//        (slotted) <div #slottedBelow tabindex=0>
//      <div #belowSlot tabindex=0>
// <div #belowHost tabindex=0>

promise_test(() => {
  let elementsInFlatTreeOrder;
  let [aboveHost, host, aboveSlot, slotAbove, slottedAbove, slotBelow, slottedBelow, belowSlot, belowHost] =
    elementsInFlatTreeOrder = prepareDOM(document.body, false);
  setTabIndex(elementsInFlatTreeOrder, 0);
  host.tabIndex = 1;
  resetFocus();
  // Focus should move first to #host because it has tabindex=1, and then to the contents of its scope
  // (e.g. the contents of its shadow tree) in flat tree order, and then outside to the document scope
  // again (aboveHost & belowHost).
  return assertFocusOrder([host, aboveSlot, slottedAbove, slottedBelow, belowSlot, aboveHost, belowHost]);
}, "Order when all tabindex=0 except for host, which has tabindex=1");
</script>
</body>
