<!DOCTYPE html>
<html>
<body>
<p>This tests selecting content starting in an editable element to a shadow tree.<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>hello </div>
<script>

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

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>
