Chromium Code Reviews| Index: LayoutTests/fast/events/pointerevents/touch-pointer-events.html |
| diff --git a/LayoutTests/fast/events/pointerevents/touch-pointer-events.html b/LayoutTests/fast/events/pointerevents/touch-pointer-events.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..c18690c3874ca7e39bd24a17ff777fae742c9ee9 |
| --- /dev/null |
| +++ b/LayoutTests/fast/events/pointerevents/touch-pointer-events.html |
| @@ -0,0 +1,187 @@ |
| +<!DOCTYPE HTML> |
| +<script src="../../../resources/js-test.js"></script> |
| +<style> |
| +div { |
| + margin: 10px; |
| + padding: 50px; |
| + float: left; |
| +} |
| +#console { |
| + padding: 0px; |
| + float: none; |
| +} |
| +</style> |
| + |
| +<div id="grey" style="background-color:grey"> |
| + <div id="lightgreen" style="background-color:lightgreen"> |
| + <div id="green" style="background-color:green;"> |
| + </div> |
| + </div> |
| +</div> |
| + |
| +<div id="console"></div> |
| + |
| +<script> |
| +description("Verifies that tapping on an element fires appropriate pointer events."); |
| + |
| +var preventDefault; |
| +var logAllEvents; |
| +var receivedPEsAtTarget = []; |
| + |
| +function getPhaseString(event) { |
| + return event.eventPhase == Event.NONE ? "none" : |
| + event.eventPhase == Event.CAPTURING_PHASE ? "capturing" : |
| + event.eventPhase == Event.AT_TARGET ? "target" : |
| + event.eventPhase == Event.BUBBLING_PHASE ? "bubbling" : |
| + "error"; |
| +} |
| + |
| +function init() { |
| + ["grey", "lightgreen", "green"].forEach(function(id) { |
| + var targetDiv = document.getElementById(id); |
| + |
| + ["touchstart", "touchend", "touchmove"].forEach(function(eventName) { |
| + targetDiv.addEventListener(eventName, function(event) { |
| + if (logAllEvents) |
| + debug(id + " received " + event.type + " at phase=" + getPhaseString(event)); |
| + }); |
| + }); |
| + |
| + ["pointerdown", "pointerup", "pointermove"].forEach(function(eventName) { |
| + targetDiv.addEventListener(eventName, function(event) { |
| + if (event.eventPhase == Event.AT_TARGET) |
| + receivedPEsAtTarget.push(event); |
| + if (logAllEvents || event.eventPhase == Event.AT_TARGET) |
| + debug(id + " received " + event.type + " at phase=" + getPhaseString(event)); |
| + if (preventDefault) |
| + event.preventDefault(); |
| + }); |
| + }); |
| + |
| + }); |
| +} |
| + |
| +function testEventSequences(x, y) { |
| + eventSender.addTouchPoint(x, y); |
| + eventSender.touchStart(); |
| + |
| + eventSender.updateTouchPoint(0, x+20, y+20); |
| + eventSender.touchMove(); |
| + |
| + eventSender.releaseTouchPoint(0); |
| + eventSender.touchEnd(); |
| +} |
| + |
| +function testPEParamsSingleTouch(x, y) { |
| + receivedPEsAtTarget = []; |
| + |
| + eventSender.addTouchPoint(x, y); |
| + eventSender.touchStart(); |
| + shouldBeTrue("receivedPEsAtTarget[0].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[0].button", 0); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[0].buttons", 1); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[0].clientX", x); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[0].clientY", y); |
| + |
| + eventSender.updateTouchPoint(0, x+20, y+20); |
| + eventSender.touchMove(); |
| + shouldBeTrue("receivedPEsAtTarget[1].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[1].button", 0); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[1].buttons", 1); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[1].clientX", x+20); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[1].clientY", y+20); |
| + |
| + eventSender.releaseTouchPoint(0); |
| + eventSender.touchEnd(); |
| + shouldBeTrue("receivedPEsAtTarget[2].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[2].button", 0); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[2].buttons", 0); |
| + |
| + shouldBeEqualToNumber("receivedPEsAtTarget.length", 3); |
| +} |
| + |
| +function testPEParamsMultiTouch(x, y) { |
| + receivedPEsAtTarget = []; |
| + |
| + eventSender.addTouchPoint(x, y); |
| + eventSender.touchStart(); |
| + shouldBeTrue("receivedPEsAtTarget[0].isPrimary"); |
| + var idFirst = receivedPEsAtTarget[0].pointerId; |
| + debug("receivedPEsAtTarget[0].pointerId=" + idFirst) |
| + |
| + eventSender.addTouchPoint(x+10, y+10); |
| + eventSender.touchStart(); |
| + shouldBeFalse("receivedPEsAtTarget[1].isPrimary"); |
| + var idSecond = receivedPEsAtTarget[1].pointerId; |
| + debug("receivedPEsAtTarget[1].pointerId=" + idSecond) |
| + |
| + eventSender.updateTouchPoint(1, x+20, y+20); |
| + eventSender.touchMove(); |
| + shouldBeFalse("receivedPEsAtTarget[2].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[2].pointerId", idSecond); |
| + |
| + eventSender.releaseTouchPoint(0); |
| + eventSender.touchEnd(); |
| + shouldBeTrue("receivedPEsAtTarget[3].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[3].pointerId", idFirst); |
| + |
| + eventSender.updateTouchPoint(0, x+10, y+10); |
| + eventSender.touchMove(); |
| + shouldBeFalse("receivedPEsAtTarget[4].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[4].pointerId", idSecond); |
| + |
| + eventSender.addTouchPoint(x, y); |
| + eventSender.touchStart(); |
| + shouldBeFalse("receivedPEsAtTarget[5].isPrimary"); |
| + var idThird = receivedPEsAtTarget[5].pointerId; |
| + debug("receivedPEsAtTarget[5].pointerId=" + idThird) |
| + |
| + eventSender.releaseTouchPoint(0); |
| + eventSender.touchEnd(); |
| + shouldBeFalse("receivedPEsAtTarget[6].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[6].pointerId", idSecond); |
| + |
| + eventSender.releaseTouchPoint(0); |
| + eventSender.touchEnd(); |
| + shouldBeFalse("receivedPEsAtTarget[7].isPrimary"); |
| + shouldBeEqualToNumber("receivedPEsAtTarget[7].pointerId", idThird); |
| + |
|
Rick Byers
2015/06/16 17:25:39
we should probably also verify that (after releasi
mustaq
2015/06/16 20:18:42
Done.
|
| + shouldBeEqualToNumber("receivedPEsAtTarget.length", 8); |
| +} |
| + |
| +function runTests() { |
| + var rect = document.getElementById("green").getBoundingClientRect(); |
| + var x = rect.left + 10; |
| + var y = rect.top + 10; |
| + |
| + logAllEvents = true; |
| + preventDefault = false; |
| + |
| + debug("--- test PE+TE event sequences without preventDefault ---"); |
| + testEventSequences(x, y); |
| + debug(""); |
| + |
| + preventDefault = true; |
| + |
| + debug("--- test PE+TE event sequences with PE preventDefault ---"); |
| + testEventSequences(x, y); |
| + debug(""); |
| + |
| + logAllEvents = false; |
| + |
| + debug("--- test PE params for single-touch ---"); |
| + testPEParamsSingleTouch(x, y); |
| + debug(""); |
| + |
| + debug("--- test PE isPrimary values ---"); |
| + testPEParamsMultiTouch(x, y); |
| + debug(""); |
| +} |
| + |
| +init(); |
| +if (window.eventSender) |
| + runTests(); |
| +else |
| + debug("This test requires eventSender"); |
| + |
| +</script> |