<html>
<script src="../../resources/js-test-pre.js"></script>
<body style="min-height: 5000px"> 
<span id="elt">&nbsp;</span>

<script>
description('Checks that clicking on scrollbar works when tickmarks are added.');
onload = function()
{
    if (window.testRunner)
        testRunner.dumpAsText();
    var range = document.createRange();
    var elt = document.getElementById('elt');
    range.selectNodeContents(elt);
    if (window.internals) {
        window.internals.setUsesOverlayScrollbars(true);
        window.internals.addTextMatchMarker(range, true);
    }
    if (window.testRunner)
        testRunner.display();
    if (window.eventSender) {
        eventSender.mouseMoveTo(window.innerWidth - 1, window.innerHeight - 1);
        eventSender.mouseDown();
        eventSender.mouseUp();
    }
}

onscroll = function()
{
    testPassed('did scroll');
    finishJSTest();
}

var jsTestIsAsync = true;
</script>

<script src="../../resources/js-test-post.js"></script>

</body>
</html>
