<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Bug 39284 test case</title>
        <script>
            if (window.testRunner) {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }
        </script>
        <style type="text/css">
            <!--
            #container {
                display:block;
                border:1px solid black;
                width:100px;
                height:100px;
                overflow:hidden;
                padding:0px;
                background-color:blue;
            }
            #container:hover {
                overflow:auto;
            }
            ::-webkit-scrollbar {
                    width: 20px;
                    height: 20px;
            }
            ::-webkit-scrollbar-button:start:decrement,
            ::-webkit-scrollbar-button:end:increment  {
                height: 0px;
                display: block;
            }

            ::-webkit-scrollbar-track-piece  {
                background-color: black;
            }

            ::-webkit-scrollbar-thumb:vertical {
                background-color: white;
            }
            -->
        </style>
    </head>
    <body style="margin:0px;">
        <div id="container">
            <div style="height:200px; width:50px; background-color:red;">
            </div>
            <div style="height:200px; width:50px; background-color:green;">
            </div>
        </div>
        <script>
            var t = document.getElementById("container");
            t.scrollTop = t.scrollHeight;
            if (window.eventSender) {
                eventSender.mouseMoveTo(50, 50);
                eventSender.mouseMoveTo(250, 250);
                eventSender.mouseMoveTo(50, 50);
            }
            if (window.testRunner)
                testRunner.notifyDone();
        </script>
    </body>
</html>
