<!DOCTYPE html>
<html>
<body>
<p>This tests selecting content starting in a shadow tree out to an editable element.<br>
To manually test, select "hello world" below by a mouse drag from "h" to "d". WebKit should only select "hello".</p>
<div id="container" contenteditable>world</div>
<script>

const host = document.createElement('div');
container.prepend(host);
const shadowRoot = host.attachShadow({mode: 'closed'});
shadowRoot.textContent = 'hello ';

if (window.eventSender) {
    eventSender.dragMode = false;
    eventSender.mouseMoveTo(container.offsetLeft + 1, container.offsetTop + 5);
    eventSender.mouseDown();
    eventSender.mouseMoveTo(container.offsetLeft + container.offsetWidth - 5, container.offsetTop + container.offsetHeight - 5);
    eventSender.mouseUp();
    if (getSelection().startContainer.getRootNode() != document)
        document.write("The start container's root node was not the document");
    if (getSelection().startContainer != getSelection().endContainer)
        document.write("The end container was different from the start container");
    if (getSelection().getRangeAt(0).startContainer.getRootNode() != document)
        document.write("The range's start container's root node was not the document");
    if (getSelection().getRangeAt(0).endContainer != getSelection().getRangeAt(0).startContainer)
        document.write("The range's end container was different from its start container");
}

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