<!DOCTYPE html>
<html>
<head>
    <title>CSS Scoping Module Level 1 - ::slotted pseudo element rule must apply to an element that got slotted via another slot</title>
    <link rel="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"/>
    <link rel="help" href="http://www.w3.org/TR/css-scoping-1/#slotted-pseudo">
    <link rel="match" href="reference/green-box.html"/>
</head>
<body>
    <style>
        outer-host {
            display: block;
            width: 100px;
            height: 100px;
            background: red;
        }
        outer-host > * {
            display: block;
            width: 100px;
            height: 25px;
        }
    </style>
    <p>Test passes if you see a single 100px by 100px green box below.</p> 
    <outer-host>
        <span slot="outer">FAIL1</span>
        <span slot="inner">FAIL2</span>
        <span slot="both">FAIL3</span>
    </outer-host>
    <template id="outer-host-template">
        <inner-host>
            <style>
                ::slotted([slot=outer]) { background: green; color: green; }
                ::slotted([slot=both]) { background: green; }
                span { display: block; width: 100px; height: 25px; }
            </style>
            <slot name="outer"></slot>
            <slot name="inner"></slot>
            <slot name="both"></slot>
            <span slot="inner">FAIL4</span>
        </inner-host>
    </template>
    <template id="inner-host-template">
        <style>
            ::slotted([slot=inner]) { background: green; color: green; }
            ::slotted([slot=both]) { color: green; }
        </style>
        <slot></slot>
        <slot name="inner"></slot>
    </template>
    <script>

        try {
            var outerHost = document.querySelector('outer-host');
            outerShadow = outerHost.attachShadow({mode: 'closed'});
            outerShadow.appendChild(document.getElementById('outer-host-template').content.cloneNode(true));

            var innerHost = outerShadow.querySelector('inner-host');
            innerShadow = innerHost.attachShadow({mode: 'closed'});
            innerShadow.appendChild(document.getElementById('inner-host-template').content.cloneNode(true));
        } catch (exception) {
            document.body.appendChild(document.createTextNode(exception));
        }

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