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

<div id="container"></div>
<pre id="console"></pre>

<script>
description("Tests to ensure ShadowRoot.getElementById works after complex DOM manipulation.");

function createDiv(id)
{
    var div = document.createElement('div');
    div.id = id;
    return div;
}

var A = createDiv('A');
var B = createDiv('B');
var C = createDiv('C');
var D = createDiv('D');
var shadowRootA = A.webkitCreateShadowRoot();
var shadowRootB = B.webkitCreateShadowRoot();
var shadowRootC = C.webkitCreateShadowRoot();

shadowRootA.appendChild(B);
shadowRootB.appendChild(C);
shadowRootC.appendChild(D);

container.appendChild(A);
shouldBe('document.getElementById("A")', 'A');
shouldBe('shadowRootA.getElementById("B")', 'B');
shouldBe('shadowRootB.getElementById("C")', 'C');
shouldBe('shadowRootC.getElementById("D")', 'D');

debug('');
debug('Remove C from shadowRootB');
shadowRootB.removeChild(C);

shouldBe('document.getElementById("A")', 'A');
shouldBe('shadowRootA.getElementById("B")', 'B');
shouldBe('shadowRootB.getElementById("C")', 'null');
shouldBe('shadowRootC.getElementById("D")', 'D');

debug('');
debug('Append C to ShadowRootB, and remove A from document');
shadowRootB.appendChild(C);
container.removeChild(A);

shouldBe('document.getElementById("A")', 'null');
shouldBe('shadowRootA.getElementById("B")', 'B');
shouldBe('shadowRootB.getElementById("C")', 'C');
shouldBe('shadowRootC.getElementById("D")', 'D');

debug('');
debug('Remove C from shadowRootB');
shadowRootB.removeChild(C);

shouldBe('document.getElementById("A")', 'null');
shouldBe('shadowRootA.getElementById("B")', 'B');
shouldBe('shadowRootB.getElementById("C")', 'null');
shouldBe('shadowRootC.getElementById("D")', 'D');

debug('');
debug('Remove D from shadowRootC');
shadowRootC.removeChild(D);

shouldBe('document.getElementById("A")', 'null');
shouldBe('shadowRootA.getElementById("B")', 'B');
shouldBe('shadowRootB.getElementById("C")', 'null');
shouldBe('shadowRootC.getElementById("D")', 'null');

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