blob: b4760b02038f407a4cff7ec9c060598614030129 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../../../resources/js-test-pre.js"></script>
<div id="touchtarget" style="width: 100px; height: 100px; background-color: blue"></div>
<p id="description"></p>
<div id="console"></div>
<script>
var div = document.getElementById("touchtarget");
var lastEvent = null;
var touchEventsReceived = 0;
var EXPECTED_TOUCH_EVENTS_TOTAL = 3;
function touchEventCallback() {
if (window.eventSender) {
lastEvent = event;
verifyTouch(touchEventsReceived++);
} else
debug(event.type);
if (window.testRunner && touchEventsReceived == EXPECTED_TOUCH_EVENTS_TOTAL) {
window.internals.settings.setTouchEventEmulationEnabled(false);
finishJSTest();
}
}
function mouseMoveCallback(e) {
if (!lastEvent)
debug("Unexpected mousemove event received before touchstart");
}
div.addEventListener("touchstart", touchEventCallback, false);
div.addEventListener("touchmove", touchEventCallback, false);
div.addEventListener("touchend", touchEventCallback, false);
div.addEventListener("mousemove", mouseMoveCallback, false);
function verifyTouchEvent(type, totalTouchCount, changedTouchCount, targetTouchCount)
{
shouldBeEqualToString("lastEvent.type", type);
shouldBe("lastEvent.touches.length", totalTouchCount.toString());
shouldBe("lastEvent.changedTouches.length", changedTouchCount.toString());
shouldBe("lastEvent.targetTouches.length", targetTouchCount.toString());
shouldBe("lastEvent.pageX", "0");
shouldBe("lastEvent.pageY", "0");
}
function verifyTouchPoint(list, point, x, y, id)
{
shouldBe("lastEvent." + list + "[" + point + "].pageX", x.toString());
shouldBe("lastEvent." + list + "[" + point + "].pageY", y.toString());
shouldBe("lastEvent." + list + "[" + point + "].clientX", x.toString());
shouldBe("lastEvent." + list + "[" + point + "].clientY", y.toString());
shouldBe("lastEvent." + list + "[" + point + "].identifier", id.toString());
}
function verifyTouch(which) {
switch (which) {
case 0:
verifyTouchEvent("touchstart", 1, 1, 1);
shouldBe("lastEvent.shiftKey", "true");
shouldBe("lastEvent.altKey", "true");
shouldBe("lastEvent.ctrlKey", "false");
shouldBe("lastEvent.metaKey", "false");
shouldBeEqualToString("lastEvent.touches[0].target.id", "touchtarget");
verifyTouchPoint("touches", 0, 10, 10, 0);
verifyTouchPoint("changedTouches", 0, 10, 10, 0);
verifyTouchPoint("targetTouches", 0, 10, 10, 0);
break;
case 1:
verifyTouchEvent("touchmove", 1, 1, 1);
verifyTouchPoint("touches", 0, 20, 30, 0);
break;
case 2:
verifyTouchEvent("touchend", 0, 1, 0);
verifyTouchPoint("changedTouches", 0, 20, 30, 0);
shouldBe("lastEvent.shiftKey", "false");
shouldBe("lastEvent.altKey", "true");
shouldBe("lastEvent.ctrlKey", "true");
shouldBe("lastEvent.metaKey", "false");
break;
default:
testFailed("Wrong number of touch events! (" + which + ")");
}
}
function mouseEventSequence()
{
eventSender.mouseMoveTo(10, 10);
eventSender.mouseDown(0, ["shiftKey", "altKey"]);
eventSender.mouseMoveTo(20, 30);
eventSender.mouseUp(0, ["altKey", "ctrlKey"]);
}
if (window.eventSender && window.internals && window.internals.settings) {
description("This tests single touch event emulation using mouse events.");
window.eventSender.dragMode = false;
window.jsTestIsAsync = true;
window.internals.settings.setTouchEventEmulationEnabled(true);
shouldBe("'ontouchstart' in window", "true");
shouldBe("'ontouchend' in document", "true");
mouseEventSequence();
} else
debug("This test requires DumpRenderTree. Tap on the blue rect to log.");
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>