<html>
<head>
<script>
function runTest() {
    if (window.testRunner)
        testRunner.dumpAsText();

    var oSelection = window.getSelection();
    var de = document.documentElement;
    document.removeChild(document.documentElement);
    oSelection.modify("move","backward","documentboundary");

    var html = document.createElement('html');
    var body = document.createElement('body');
    body.innerHTML="<p>Test for bug <a href=\"https://bugs.webkit.org/show_bug.cgi?id=63908\">https://bugs.webkit.org/show_bug.cgi?id=63908</a></p><p>This test shouldn\'t crash</p>";
    html.appendChild(body);
    document.appendChild(html);
}
</script>
</head>
<body>
<script>
runTest();
</script>
</body>
</html>
