<style type="text/css">
#content { -webkit-flow-into: article; }
.region{
    -webkit-flow-from: article;
    width:200px;
    height:500px;
    float:left;
    margin: 50px;
}
#target { width: 50px; height: 50px; background-color: red; margin: 10px; }
#target:hover { background-color: green; }
</style>
<p>
    Test for <i><a href="https://bugs.webkit.org/show_bug.cgi?id=76456">https://bugs.webkit.org/show_bug.cgi?id=76456</a>
    Inconsistent text selection behavior in regions</i>.
</p>
<p>
    The red square should turn green when hovered.
</p>
<div id="region1" class="region"></div>
<div id="region2" class="region"></div>

<div id="content" style="outline: solid black">
    <div>
        <div style="height: 800px; background-color: purple;"></div>
        <div style="float: right; background-color: lightyellow; margin: 5px;">
            <div id="target"></div>
        </div>
    </div>
</div>
<div id="result" style="clear:both">FAIL: Test did not run.</div>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();

    var result = document.getElementById("result");
    var hitElement = document.elementFromPoint(520, 465);
    if (hitElement === document.getElementById("target"))
        result.innerText = "PASS";
    else
        result.innerText = "FAIL: Hit " + hitElement;
</script>
