chromium/third_party/blink/web_tests/fast/events/touch/gesture/gesture-tap-frame-scrolled.html

<!DOCTYPE HTML>
<script src="../../../../resources/js-test.js"></script>
<style>
html, body {
 margin: 0;
}
body {
  height: 1000px;
}
#target {
  width: 50px;
  height: 50px;
  margin: 5px 0px 0px 5px;
}
</style>
<iframe frameborder=0 id="target" src="resources/event-delegator.html"></iframe>
<div id=console></div>
<script>
var event;
var windowScrollOffset = {
    x: 0,
    y: 3
};
var frameScrollOffset = {
    x: 2,
    y: 7
};
window.scrollTo(windowScrollOffset.x, windowScrollOffset.y);
var frameRect = target.getBoundingClientRect();
var pointInFrame = {
    x: frameRect.width / 2,
    y: frameRect.height / 2
};
var pointInWindow = {
    x: frameRect.left + pointInFrame.x,
    y: frameRect.top + pointInFrame.y
};

var eventReceived = {};

function onEventInFrame(e) {
    debug("Received " + e.type + " in child frame");
    event = e;
    eventReceived[e.type] = true;
    shouldBe("event.screenX", "pointInWindow.x");
    shouldBe("event.screenY", "pointInWindow.y");
    shouldBe("event.clientX", "pointInFrame.x");
    shouldBe("event.clientY", "pointInFrame.y");
    shouldBe("event.pageX", "pointInFrame.x + frameScrollOffset.x");
    shouldBe("event.pageY", "pointInFrame.y + frameScrollOffset.y");
}

description("Verifies that a tap occurring in a scrolled iframe has the correct co-ordinates");

if (window.eventSender) {
    jsTestIsAsync = true;
    target.onload = function() {
        target.contentWindow.scrollTo(frameScrollOffset.x, frameScrollOffset.y);

        debug("Sending GestureTapDown to " + pointInWindow.x + "," + pointInWindow.y);
        eventSender.gestureTapDown(pointInWindow.x, pointInWindow.y);

        debug("Sending GestureShowPress");
        eventSender.gestureShowPress(pointInWindow.x, pointInWindow.y);

        debug("Sending GestureTap");
        eventSender.gestureTap(pointInWindow.x, pointInWindow.y);

        shouldBeTrue("eventReceived.mousemove");
        shouldBeTrue("eventReceived.mousedown");
        shouldBeTrue("eventReceived.mouseup");
        shouldBeTrue("eventReceived.click");
        setTimeout(finishJSTest, 0);
    }
} else {
    debug("This test requires eventSender");
}
</script>