<html xmlns="http://www.w3.org/1999/xhtml">
    <!-- This test needs to be xhtml so that the br element is an accepted child of frameset element -->
    <div>Test that moving a br element to a named flow does not crash when the br element should not have a renderer created.</div>
    <div>To manually test, move the mouse to the upper left corner of the document and try to make a selection to the bottom of the document. It should not crash.</div>
    <frameset style="display: none">
        <br style="-webkit-flow-into: contents"></br>
    </frameset>
    <script>
        <![CDATA[
            if (window.testRunner)
                window.testRunner.dumpAsText();

            function keyDownMouseClick(x2, y2) {
                if (window.eventSender) {
                    eventSender.mouseMoveTo(10, 10);
                    eventSender.mouseDown();
                    eventSender.mouseMoveTo(x2, y2);
                    eventSender.mouseUp();
                }
            }

            document.addEventListener("DOMContentLoaded", keyDownMouseClick(100, 500), false);
        ]]>
    </script>
</html>
