<html>
<style>
div#styled::-webkit-scrollbar {
  width:17px;
  height:17px;
}

div#styled::-webkit-scrollbar-button {
  display:block;
  width: 17px;
  height: 17px;
}

div#styled::-webkit-scrollbar-button:vertical {
  background-color:lightblue;
  border:2px solid black;
}

div#styled::-webkit-scrollbar-button:horizontal {
  background-color:#208020;
  border:2px solid black;
}

div#styled::-webkit-scrollbar-thumb {
  min-width:20px;
  min-height:20px;
  background-color: navy;
  border:2px solid #cccccc;
}

div#styled::-webkit-scrollbar-thumb:horizontal {
  background-color: #004000;
}

div#styled::-webkit-scrollbar-button:disabled {
  display:none
}

div#styled::-webkit-scrollbar-track {
  background-color: #2060a0;
}

div#styled::-webkit-scrollbar-track:horizontal {
  background-color: #40a040;
}
</style>
<body style="margin:0">
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
</script>
<div id="overflow" style="border:2px solid black;overflow:auto;height:200px;width:200px; left: 0px; top: 100px; position: absolute;">
<div style="background-color:green;width:1000px;height:1000px;"></div>
<div style="background-color:red;width:1000px;height:1000px;"></div>
</div>
<div id="styled" style="width:200px; height:200px; overflow-y:scroll; overflow-x:scroll; position: absolute; left: 450px; top: 100px;">
Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>
<span style="white-space:nowrap">Hello world this is a long string and will not wrap.</span>
Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>
</div>
<p>Test
for <a href="https://bugs.webkit.org/show_bug.cgi?id=29348">bug
29348</a>: This tests that using the mouse wheel while having the
pointer in a horizontal scrollbar makes it scroll horizontally, also
with styled scrollbars. On success, the vertical offset for both divs
should be 80, and the horizonta 40.<p/>
<div id="console"></div>
<script>
function failed() {
    document.getElementById('console').innerHTML = "FAILED";
    window.testRunner.notifyDone();
}

if (window.eventSender) {
    var overflow = document.getElementById('overflow');

    // Scroll inside the div
    var x = overflow.offsetLeft + overflow.offsetWidth - 50;
    var y = overflow.offsetTop + overflow.offsetHeight - 50;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseScrollBy(0, -1);

    if (overflow.scrollTop != 40 || overflow.scrollLeft != 0)
        failed();

    // Scroll on top of the horizontal scrollbar
    var x = overflow.offsetLeft + overflow.offsetWidth - 50;
    var y = overflow.offsetTop + overflow.offsetHeight - 6;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseScrollBy(0, -1);

    if (overflow.scrollTop != 40 || overflow.scrollLeft != 40)
        failed();

    // Scroll on top of the vertical scrollbar
    var x = overflow.offsetLeft + overflow.offsetWidth - 6;
    var y = overflow.offsetTop + overflow.offsetHeight - 50;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseScrollBy(0, -1);

    if (overflow.scrollTop != 80 || overflow.scrollLeft != 40)
        failed();

    var styled = document.getElementById('styled');

    // Scroll inside the div
    var x = styled.offsetLeft + styled.offsetWidth - 50;
    var y = styled.offsetTop + styled.offsetHeight - 50;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseScrollBy(0, -1);

    if (styled.scrollTop != 40 || styled.scrollLeft != 0)
        failed();

    // Scroll on top of the horizontal scrollbar
    var x = styled.offsetLeft + styled.offsetWidth - 50;
    var y = styled.offsetTop + styled.offsetHeight - 6;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseScrollBy(0, -1);

    if (styled.scrollTop != 40 || styled.scrollLeft != 40)
        failed();

    // Scroll on top of the vertical scrollbar
    var x = styled.offsetLeft + styled.offsetWidth - 6;
    var y = styled.offsetTop + styled.offsetHeight - 50;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseScrollBy(0, -1);

    if (styled.scrollTop != 80 || styled.scrollLeft != 40)
        failed();

    setTimeout(finished, 500);
}

function finished()
{
    var msg = "Scroll offset for 'overflow' is " + document.getElementById('overflow').scrollTop + " and " + document.getElementById('overflow').scrollLeft;
    msg += "<br/>";
    msg += "Scroll offset for 'styled' is " + document.getElementById('styled').scrollTop + " and " + document.getElementById('styled').scrollLeft;

    document.getElementById('console').innerHTML = msg;

    // Just to cleanup the test results page
    document.getElementById('styled').style.display = 'none';

    window.testRunner.notifyDone();
}

</script>
</body>
</html>
