<html>
Test passes if it does not crash.
<style>
body
{
    margin: 0;
}
::-webkit-scrollbar {
    -webkit-logical-height: 65536;
    -webkit-border-image: url(does_not_exist) 0 2 0 2;
}

.inner:not(table) {
    padding: 400px;
}
</style>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

function showScroller()
{
    var scroller = document.createElement('div');
    scroller.className = 'scroller';

    var contents = document.createElement('div')
    contents.className = 'inner';
    scroller.appendChild(contents);

    document.getElementById('container').appendChild(scroller);
}
  
function hideScroller()
{
    var scroller = document.getElementById('container').querySelectorAll('.scroller')[0];
    scroller.parentNode.removeChild(scroller);
}
  
function doTest()
{
    if (window.eventSender) {
        eventSender.mouseMoveTo(50, 40);
        eventSender.mouseMoveTo(50, 55);
        eventSender.mouseMoveTo(50, 0);
    }
}

window.addEventListener('load', doTest, false);
</script>
<div id="container" onmouseover="showScroller()" onmouseout="hideScroller()">
<p>PASS</p>
</div>
</html>