blob: 97f99bf4bd82f4351f8452cc74cb004b36e74808 [file] [log] [blame]
<!DOCTYPE html>
<html>
<pre id="console"></pre>
<p>This test ensures shadow root won't expose to JS layer.<p>
<div id='div1'>BEFORE</div>
<div id='container'>CONTAINER</div>
<div id='div4'>AFTER</di>
<script src="../editing.js"></script>
<script src="../../resources/js-test.js"></script>
<script>
if (window.testRunner)
testRunner.dumpAsText();
var container = document.getElementById('container');
var shadowRoot = container.createShadowRoot();
var div2 = document.createElement('div');
div2.appendChild(document.createTextNode('IN SHADOW TREE 1'));
var div3 = document.createElement('div');
div3.appendChild(document.createTextNode('IN SHADOW TREE 2'));
shadowRoot.appendChild(div2);
shadowRoot.appendChild(div3);
function midX(element) {
return element.offsetLeft + element.offsetWidth / 2;
}
function midY(element) {
return element.offsetTop + element.offsetHeight / 2;
}
function assertNotInShadow(element) {
if (element == div2 || element == div2.firstChild)
return false;
if (element == div3 || element == div3.firstChild)
return false;
return true;
}
if (window.eventSender) {
// Try select from outside of a shadow subtree to inside of a shadow subtree.
eventSender.mouseMoveTo(midX(div1), midY(div1));
eventSender.mouseDown();
eventSender.mouseMoveTo(midX(div2), midY(div2));
eventSender.mouseUp();
var selection = window.getSelection();
shouldBe('assertNotInShadow(selection.anchorNode)', 'true');
shouldBe('assertNotInShadow(selection.focusNode)', 'true');
selection.removeAllRanges();
// Try select from inside of a shadow subtree to outside of a shadow subtree.
eventSender.mouseMoveTo(midX(div3), midY(div3));
eventSender.mouseDown();
eventSender.mouseMoveTo(midX(div4), midY(div4));
eventSender.mouseUp();
selection = window.getSelection();
shouldBe('assertNotInShadow(selection.anchorNode)', 'true');
shouldBe('assertNotInShadow(selection.focusNode)', 'true');
selection.removeAllRanges();
// Try select inside shadow subtrees.
eventSender.mouseMoveTo(midX(div2), midY(div2));
eventSender.mouseDown();
eventSender.mouseMoveTo(midX(div3), midY(div3));
eventSender.mouseUp();
selection = window.getSelection();
shouldBe('assertNotInShadow(selection.anchorNode)', 'true');
shouldBe('assertNotInShadow(selection.focusNode)', 'true');
selection.removeAllRanges();
}
var successfullyParsed = true;
</script>
</html>