<!DOCTYPE html>
<html>
<body>
<script src="resources/polyfill.js"></script>
<script src="../../../resources/js-test-pre.js"></script>

<p>When a AuthorShadowRoot is added, UserAgentShadowRoot should exists as the oldest Shadow Root.</p>
<div id='container'>
    <form>
        <select id='select'><option>hoge</option></select>
        <output id='output'></output>
        <keygen id='keygen'></keygen>
        <fieldset id='fieldset'>
            <input type="text">
            <legend>hogehoge</legend>
        </fieldset>
    </form>
</div>
<pre id='console'></pre>

<script>
var elems = [
    "select", "keygen", "fieldset"
];

var shadowRoot;
var oldestShadowRoot;
var youngerShadowRoot;
function test()
{
    if (window.testRunner)
        testRunner.dumpAsText();
    if (window.internals)
        window.internals.settings.setAuthorShadowDOMForAnyElementEnabled(true);

    for (var i = 0; i < elems.length; ++i) {
        var host = document.getElementById(elems[i]);
        shadowRoot = host.webkitCreateShadowRoot();
        shadowRoot.innerHTML = "<shadow></shadow>";

        oldestShadowRoot = internals.oldestShadowRoot(host);
        youngerShadowRoot = internals.youngerShadowRoot(oldestShadowRoot);
        shouldNotBe('oldestShadowRoot', 'shadowRoot');
        shouldBe('youngerShadowRoot', 'shadowRoot');
    }

    container.innerHTML = "";
}

test();
var successfullyParsed = true;
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
