<!DOCTYPE html>
<meta charset="utf-8">
<title>HTML Test: focus - the sequential focus navigation order with shadow dom and all tabindex=0 except for one of the slot</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=0>
//    #shadowRoot
//      <div #aboveSlot tabindex=0>
//      <slot #slotAbove tabindex=0>
//        (slotted) <div #slottedAbove tabindex=0>
//      <slot #slotBelow tabindex=1>
//        (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);
  slotBelow.tabIndex = 1;
  resetFocus();
  // Focus should move first according to flat tree order to #aboveHost and #host, then into #host's focus scope.
  // It will then move to #slottedBelow because #slotBelow has tabindex=1 (though we actually won't focus on the slot),
  // and then back to #host's focus scope again, finally getting out to the document focus scope.
  return assertFocusOrder([aboveHost, host, slottedBelow, aboveSlot, slottedAbove, belowSlot, belowHost]);
}, "Order when all tabindex=0, except for one slot that has tabindex=1");
</script>
</body>
