<!DOCTYPE html>
<html>
<head>
    <title>CSS Scoping Module Level 1 - :host, :host-context, and default @namespace</title>
    <link rel="author" title="Rune Lillesveen" href="mailto:rune@opera.com"/>
    <link rel="help" href="https://www.w3.org/TR/css-scoping-1/#host-selector">
    <link rel="help" href="https://www.w3.org/TR/css3-selectors/#typenmsp">
    <link rel="help" href="https://www.w3.org/TR/css3-selectors/#univnmsp">
    <link rel="match" href="reference/green-box.html"/>
</head>
<body>
    <style>
        .host {
            display: block;
            width: 100px;
            height: 10px;
            background: red;
        }
        #host-3, #host-5, #host-10 {
            background: green;
        }
    </style>
    <p>Test passes if you see a single 100px by 100px green box below.</p>
    <div id="host-1" class="host">FAIL</div>
    <div id="host-2" class="host">FAIL</div>
    <div id="host-3" class="host">FAIL</div>
    <div id="host-4" class="host">FAIL</div>
    <div id="host-5" class="host">FAIL</div>
    <div id="host-6" class="host">FAIL</div>
    <div id="host-7" class="host">FAIL</div>
    <div id="host-8" class="host">FAIL</div>
    <div id="host-9" class="host">FAIL</div>
    <div id="host-10" class="host">FAIL</div>
    <script>
        try {
            var shadowHost = document.querySelector('#host-1');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://www.w3.org/1999/xhtml); :host { background: green !important; } </style>';

            shadowHost = document.querySelector('#host-2');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://dummy); :host { background: green !important; } </style>';

            shadowHost = document.querySelector('#host-3');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://dummy); :host(*) { background: red !important; } </style>';

            shadowHost = document.querySelector('#host-4');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://dummy); :host(*|*) { background: green !important; } </style>';

            shadowHost = document.querySelector('#host-5');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://dummy); :host-context(*) { background: red !important; } </style>';

            shadowHost = document.querySelector('#host-6');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://dummy); :host-context(*|*) { background: green !important; } </style>';

            shadowHost = document.querySelector('#host-7');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://www.w3.org/1999/xhtml); :host(*) { background: green !important; } </style>';

            shadowHost = document.querySelector('#host-8');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://www.w3.org/1999/xhtml); :host-context(*) { background: green !important; } </style>';

            shadowHost = document.querySelector('#host-9');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://www.w3.org/1999/xhtml); :host(div) { background: green !important; } </style>';

            shadowHost = document.querySelector('#host-10');
            shadowRoot = shadowHost.attachShadow({mode: 'open'});
            shadowRoot.innerHTML = '<style>@namespace url(http://dummy); :host-context(html) { background: red !important; } </style>';

        } catch (exception) {
            document.body.appendChild(document.createTextNode(exception));
        }

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