<!DOCTYPE html>
<html>
<body>
<p>Tests for setting a negative tabindex on shadow host. Elements inside such a shadow tree should not be in the sequential navigation order.<br>
To manually test, press tab key four times. It should traverse focusable elements in the increasing numerical order.</p>
<div id="test-content">
<div id="first" tabindex="1" onfocus="log(this)">1. First sequentially focusable element outside shadow trees</div>
<div id="host-with-negative-tabindex" tabindex="-1" onfocus="log(this)">Shadow host with a negative tabindex</div>
<div id="host-with-no-tabindex" onfocus="log(this)">4.2. Shadow host with no tabindex</div>
<div id="host-with-positive-tabindex" tabindex="2" onfocus="log(this)">2. Shadow host with a positive tabindex</div>
<div tabindex="0" onfocus="log(this)">5. Last sequentially focusable element outside shadow trees</div>
</div>
<pre></pre>
<script>

document.getElementById('host-with-negative-tabindex').attachShadow({mode: 'closed'}).innerHTML = `
    <div tabindex="0" onfocus="log(this)">Should not be focused as it is inside a shadow host with a negative tabindex</div>
`;

document.getElementById('host-with-no-tabindex').attachShadow({mode: 'closed'}).innerHTML = `
    <div tabindex="0" onfocus="log(this)">4.1. Focusable element inside a shadow host with no tabindex</div>
`;

document.getElementById('host-with-positive-tabindex').attachShadow({mode: 'closed'}).innerHTML = `
    <slot></slot>
    <div tabindex="0" onfocus="log(this)">3. Focusable element inside a shadow host with a positive tabindex</div>
`;

function log(element) {
    document.querySelector('pre').textContent += element.textContent + '\n';
}

if (window.testRunner)
    testRunner.dumpAsText();

document.getElementById('first').focus();

if (window.eventSender) {
    eventSender.keyDown('\t');
    eventSender.keyDown('\t');
    eventSender.keyDown('\t');
    eventSender.keyDown('\t');

    eventSender.keyDown('\t', ['shiftKey']);
    eventSender.keyDown('\t', ['shiftKey']);
    eventSender.keyDown('\t', ['shiftKey']);
    eventSender.keyDown('\t', ['shiftKey']);
    document.getElementById('test-content').style.display = 'none';
}

</script>
</body>
</html>
