<!DOCTYPE html>
<html lang=en class="reftest-wait">
<meta charset="utf-8">
<title>Selectors Level 4: focus-within with shadow DOM</title>
<link rel="author" title="Keyong Li" href="mailto:kli79@bloomberg.net">
<link rel="help" href="https://drafts.csswg.org/selectors-4/#focus-within-pseudo">
<link rel="match" href="focus-within-shadow-001-ref.html">
<meta name="flags" content="dom">
<meta name="assert" content="Test that :focus-within propagates through nested shadow DOMs containing a focused element.">
<style>
#target:focus-within {
  border: solid 15px green;
}
</style>
<body>
<p>Test passes if there is a green rectangle below.</p>
<div id="target">
  <div>
    <div>
      <div>
        <div id="shadow-host"><strong>Skip this test, shadow DOM is not supported.</strong></div>
      </div>
    </div>
  </div>
</div>

<template id="shadow-template">
<div id="nested-shadow-host"><strong>Skip this test, nested shadow hosts are not supported.</strong></div>
</template>

<template id="nested-shadow-template">
<style>
/* Suppress things that cannot be reproduced in the reference file */
:focus {
  outline: none;
}
</style>
<div id="focusme" tabindex="1"></div>
</template>

<script>
var shadow = document.getElementById('shadow-host').attachShadow({mode: 'open'});
var template = document.getElementById('shadow-template');
var instance = document.importNode(template.content, true);
shadow.appendChild(instance);

shadow = shadow.getElementById('nested-shadow-host').attachShadow({mode: 'open'});
template = document.getElementById('nested-shadow-template');
instance = document.importNode(template.content, true);
shadow.appendChild(instance);

var focusme = shadow.getElementById('focusme');
focusme.focus();
document.documentElement.classList.remove('reftest-wait');
</script>
</body>
</html>
