<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="resources/shadow-dom.js"></script>
</head>
<body>
<script>
description("Tests to ensure that ShadowRoot.getElementById can get an element in ShadowRoot by its id. Can only run within DRT");

function prepareDomTree(parent)
{
    parent.appendChild(
        createDOM('div', {'id': 'divA'},
                  createShadowRoot(
                      createDOM('input', {'id': 'inputB'}),
                      createDOM('div', {'id': 'divC'},
                                createShadowRoot(
                                    createDOM('input', {'id': 'inputD'})),
                                createShadowRoot(
                                    createDOM('input', {'id': 'inputE'})),
                                createShadowRoot(
                                    createDOM('input', {'id': 'inputF'}))))));
}

function test()
{
    if (window.testRunner)
        testRunner.dumpAsText();

    prepareDomTree(document.body);
    shouldBeEqualToString("getNodeInShadowTreeStack('divA/inputB').id", 'inputB');
    shouldBeEqualToString("getNodeInShadowTreeStack('divA/divC').id", 'divC');
    shouldBeEqualToString("getNodeInShadowTreeStack('divA/divC/inputD').id", 'inputD');
    shouldBeEqualToString("getNodeInShadowTreeStack('divA/divC//inputE').id", 'inputE');
    shouldBeEqualToString("getNodeInShadowTreeStack('divA/divC///inputF').id", 'inputF');
}

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