<html>
<head>
    <title></title>
    <style>
        div.outer { width: 125px; height: 125px; float: left; background: red; margin-right: 10px; }
        div.overflow { width: 75px; height: 75px; resize: both; background: green; }
        div.inner { width: 100px; height: 100px; }
        div#t1 { overflow: auto; }
        div#t2 { overflow: scroll; }
        div#t3 { overflow-x: hidden; overflow-y: scroll; }
        div#t4 { overflow-x: scroll; overflow-y: hidden; }
    </style>
    <script>
        function resize(id)
        {
            var element = document.getElementById(id);
            var x = element.offsetLeft + element.offsetWidth - 7;
            var y = element.offsetTop + element.offsetHeight - 7;
            eventSender.mouseMoveTo(x, y);
            eventSender.mouseDown();
            eventSender.mouseMoveTo(x + 50, y + 50);
            eventSender.mouseUp();
        }

        function test()
        {
            if (!window.eventSender)
                return;
            resize("t1");
            resize("t2");
            resize("t3");
            resize("t4");
        }
    </script>
</head>
<body onload="test()">
    <p>
        Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=13353">http://bugs.webkit.org/show_bug.cgi?id=13353</a>
        REGRESSION (r20754-20766): Textarea does not resize when scrollbar is present</i>.
    </p>
    <p>
        To test interactively, verify that you can resize each of the boxes below. The automatic test
        resizes them to 125 by 125.
    </p>
    <div class="outer">
        <div class="overflow" id="t1">
            <div class="inner"></div>
        </div>
    </div>

    <div class="outer">
        <div class="overflow" id="t2">
            <div class="inner"></div>
        </div>
    </div>

    <div class="outer">
        <div class="overflow" id="t3">
            <div class="inner"></div>
        </div>
    </div>

    <div class="outer">
        <div class="overflow" id="t4">
            <div class="inner"></div>
        </div>
    </div>
</body>
</html>
