<html>
    <head>
        <title>Test for WebKit bug 26723: clientX,Y , screenX , Y always (0, 0) in dragstart event</title>
        <style type="text/css">
            #draggable {
                background-color: #ccc;
                border: 1px solid #333;
                width: 200px;
                text-align: center;
                margin: 10px;
                -webkit-user-drag: element;
                -webkit-user-select: none;
            }

            .fail {
                color: red;
            }

            .success {
                color: green;
            }
        </style>

        <script type="text/javascript">
        
        Function.prototype.bind = function(thisObject) {
            var func = this;
            var args = Array.prototype.slice.call(arguments, 1);
            return function() { return func.apply(thisObject, args.concat(Array.prototype.slice.call(arguments, 0))) };
        }
        
        function shouldBe(resultElement, name, expected, actual) {
            var msg = document.createElement('p');
            if (expected == actual) {
                msg.innerHTML = "<span class='success'>SUCCESS</span> Expected " + expected + " for " + name + " and got it.";
            } else {
                msg.innerHTML = "<span class='fail'>FAIL</span> Expected " + expected + " for " + name + " but got " + actual + ".";
            }
            resultElement.appendChild(msg);
        }

        var Test = { 

            dragStartHandler: function(dragStart, dragDistance) {
                var resultElement = document.getElementById("result");
                shouldBe(resultElement, "clientX", Math.floor(dragStart.x), event.clientX);
                shouldBe(resultElement, "clientY", Math.floor(dragStart.y), event.clientY);
                shouldBe(resultElement, "pageX", Math.floor(dragStart.x), event.pageX);
                shouldBe(resultElement, "pageY", Math.floor(dragStart.y), event.pageY);
            },

            runTest: function() {
                if (!window.eventSender)
                    return;

                if (window.testRunner)
                    testRunner.dumpAsText();
                
                var element = document.getElementById("draggable");
                var dragStart = { x: Math.round(element.offsetLeft) + Math.round(element.offsetWidth) / 2, y:  Math.round(element.offsetTop) + 1.0 };
                var dragDistance = 10.0;
                element.ondragstart = this.dragStartHandler.bind(this, dragStart, dragDistance);
                
                eventSender.mouseMoveTo(dragStart.x, dragStart.y);
                eventSender.mouseDown();
                eventSender.mouseMoveTo(dragStart.x + dragDistance, dragStart.y + dragDistance);
                eventSender.mouseUp();
             }
             
        }
        </script>
    </head>
    <body onload="Test.runTest()">
        <h3>Test for <a href='https://bugs.webkit.org/show_bug.cgi?id=26723'>WebKit bug 26723</a>: clientX,Y , screenX , Y always (0, 0) in dragstart event</h3>

        <div id="draggable" class="test">

            DRAG ME!

        </div>
        <div id="result"></div>
    </body>
</html>
