1692e5dbf12901edacf14812a6fae25462920af42Steve Blockvar div = document.createElement("div"); 2692e5dbf12901edacf14812a6fae25462920af42Steve Blockdiv.id = "touchtarget"; 3692e5dbf12901edacf14812a6fae25462920af42Steve Blockdiv.style.width = "100px"; 4692e5dbf12901edacf14812a6fae25462920af42Steve Blockdiv.style.height = "100px"; 5692e5dbf12901edacf14812a6fae25462920af42Steve Blockdiv.style.backgroundColor = "blue"; 6692e5dbf12901edacf14812a6fae25462920af42Steve Block 7692e5dbf12901edacf14812a6fae25462920af42Steve Blockvar lastEvent = null; 8692e5dbf12901edacf14812a6fae25462920af42Steve Blockvar touchEventsReceived = 0; 9692e5dbf12901edacf14812a6fae25462920af42Steve Blockvar EXPECTED_TOUCH_EVENTS_TOTAL = 5; 10692e5dbf12901edacf14812a6fae25462920af42Steve Block 11692e5dbf12901edacf14812a6fae25462920af42Steve Blockfunction touchEventCallback() { 12692e5dbf12901edacf14812a6fae25462920af42Steve Block if (window.eventSender) { 13692e5dbf12901edacf14812a6fae25462920af42Steve Block lastEvent = event; 14692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouch(touchEventsReceived++); 15692e5dbf12901edacf14812a6fae25462920af42Steve Block } else { 16692e5dbf12901edacf14812a6fae25462920af42Steve Block debug(event.type); 17692e5dbf12901edacf14812a6fae25462920af42Steve Block } 18692e5dbf12901edacf14812a6fae25462920af42Steve Block 19692e5dbf12901edacf14812a6fae25462920af42Steve Block if (window.layoutTestController && touchEventsReceived == EXPECTED_TOUCH_EVENTS_TOTAL) { 20692e5dbf12901edacf14812a6fae25462920af42Steve Block // If we've got here, we can safely say we were successfully parsed :) We need to 21692e5dbf12901edacf14812a6fae25462920af42Steve Block // call the isSucccessfullyParsed function to output the correct TEST COMPLETE 22692e5dbf12901edacf14812a6fae25462920af42Steve Block // footer message. 23692e5dbf12901edacf14812a6fae25462920af42Steve Block successfullyParsed = true; 24692e5dbf12901edacf14812a6fae25462920af42Steve Block isSuccessfullyParsed(); 25692e5dbf12901edacf14812a6fae25462920af42Steve Block layoutTestController.notifyDone(); 26692e5dbf12901edacf14812a6fae25462920af42Steve Block } 27692e5dbf12901edacf14812a6fae25462920af42Steve Block} 28692e5dbf12901edacf14812a6fae25462920af42Steve Block 29692e5dbf12901edacf14812a6fae25462920af42Steve Blockdiv.addEventListener("touchstart", touchEventCallback, false); 30692e5dbf12901edacf14812a6fae25462920af42Steve Blockdiv.addEventListener("touchmove", touchEventCallback, false); 31692e5dbf12901edacf14812a6fae25462920af42Steve Blockdiv.addEventListener("touchend", touchEventCallback, false); 32692e5dbf12901edacf14812a6fae25462920af42Steve Blockdocument.body.insertBefore(div, document.body.firstChild); 33692e5dbf12901edacf14812a6fae25462920af42Steve Block 34692e5dbf12901edacf14812a6fae25462920af42Steve Blockfunction verifyTouchEvent(type, totalTouchCount, changedTouchCount, targetTouchCount) 35692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 36692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBeEqualToString("lastEvent.type", type); 37692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.touches.length", totalTouchCount.toString()); 38692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.changedTouches.length", changedTouchCount.toString()); 39692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.targetTouches.length", targetTouchCount.toString()); 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block shouldBe("lastEvent.pageX", "0"); 41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block shouldBe("lastEvent.pageY", "0"); 42692e5dbf12901edacf14812a6fae25462920af42Steve Block} 43692e5dbf12901edacf14812a6fae25462920af42Steve Block 44692e5dbf12901edacf14812a6fae25462920af42Steve Blockfunction verifyTouchPoint(list, point, x, y, id) 45692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 46692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent." + list + "[" + point + "].pageX", x.toString()); 47692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent." + list + "[" + point + "].pageY", y.toString()); 48692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent." + list + "[" + point + "].clientX", x.toString()); 49692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent." + list + "[" + point + "].clientY", y.toString()); 50692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent." + list + "[" + point + "].identifier", id.toString()); 51692e5dbf12901edacf14812a6fae25462920af42Steve Block} 52692e5dbf12901edacf14812a6fae25462920af42Steve Block 53692e5dbf12901edacf14812a6fae25462920af42Steve Blockfunction verifyTouch(which) { 54692e5dbf12901edacf14812a6fae25462920af42Steve Block switch (which) { 55692e5dbf12901edacf14812a6fae25462920af42Steve Block case 0: 56692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouchEvent("touchstart", 1, 1, 1); 57692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.shiftKey", "false"); 58692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBeEqualToString("lastEvent.touches[0].target.id", "touchtarget"); 59692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouchPoint("touches", 0, 10, 10, 0); 60692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouchPoint("changedTouches", 0, 10, 10, 0); 61692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouchPoint("targetTouches", 0, 10, 10, 0); 62692e5dbf12901edacf14812a6fae25462920af42Steve Block break; 63692e5dbf12901edacf14812a6fae25462920af42Steve Block case 1: 64692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouchEvent("touchmove", 1, 1, 1); 6521939df44de1705786c545cd1bf519d47250322dBen Murdoch verifyTouchPoint("touches", 0, 50, 50, 0); 66692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.shiftKey", "true"); 67692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.altKey", "true"); 68692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.ctrlKey", "false"); 69692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.metaKey", "false"); 70692e5dbf12901edacf14812a6fae25462920af42Steve Block break; 71692e5dbf12901edacf14812a6fae25462920af42Steve Block case 2: 72692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouchEvent("touchend", 0, 1, 0); 7321939df44de1705786c545cd1bf519d47250322dBen Murdoch verifyTouchPoint("changedTouches", 0, 50, 50, 0); 74692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.shiftKey", "false"); 75692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBe("lastEvent.altKey", "false"); 76692e5dbf12901edacf14812a6fae25462920af42Steve Block break; 77692e5dbf12901edacf14812a6fae25462920af42Steve Block case 3: 78692e5dbf12901edacf14812a6fae25462920af42Steve Block verifyTouchEvent("touchstart", 1, 1, 1); 79692e5dbf12901edacf14812a6fae25462920af42Steve Block shouldBeEqualToString("lastEvent.targetTouches[0].target.tagName", "DIV"); 80692e5dbf12901edacf14812a6fae25462920af42Steve Block break; 81692e5dbf12901edacf14812a6fae25462920af42Steve Block case 4: 82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block verifyTouchEvent("touchmove", 1, 1, 1); 83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block shouldBeEqualToString("lastEvent.touches[0].target.tagName", "DIV"); 84692e5dbf12901edacf14812a6fae25462920af42Steve Block break; 85692e5dbf12901edacf14812a6fae25462920af42Steve Block 86692e5dbf12901edacf14812a6fae25462920af42Steve Block default: testFailed("Wrong number of touch events! (" + which + ")"); 87692e5dbf12901edacf14812a6fae25462920af42Steve Block } 88692e5dbf12901edacf14812a6fae25462920af42Steve Block} 89692e5dbf12901edacf14812a6fae25462920af42Steve Block 90692e5dbf12901edacf14812a6fae25462920af42Steve Blockfunction singleTouchSequence() 91692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 92692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.addTouchPoint(10, 10); 93692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.touchStart(); 94692e5dbf12901edacf14812a6fae25462920af42Steve Block 9521939df44de1705786c545cd1bf519d47250322dBen Murdoch eventSender.updateTouchPoint(0, 50, 50); 96692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.setTouchModifier("shift", true); 97692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.setTouchModifier("alt", true); 98692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.touchMove(); 99692e5dbf12901edacf14812a6fae25462920af42Steve Block 100692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.setTouchModifier("shift", false); 101692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.setTouchModifier("alt", false); 102692e5dbf12901edacf14812a6fae25462920af42Steve Block 103692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.releaseTouchPoint(0); 104692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.touchEnd(); 105692e5dbf12901edacf14812a6fae25462920af42Steve Block} 106692e5dbf12901edacf14812a6fae25462920af42Steve Block 107692e5dbf12901edacf14812a6fae25462920af42Steve Blockfunction touchTargets() 108692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 10921939df44de1705786c545cd1bf519d47250322dBen Murdoch eventSender.addTouchPoint(20, 20); 110692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.touchStart(); 111692e5dbf12901edacf14812a6fae25462920af42Steve Block 112692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.updateTouchPoint(0, 1000, 1000); 113692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.touchMove(); 114692e5dbf12901edacf14812a6fae25462920af42Steve Block} 115692e5dbf12901edacf14812a6fae25462920af42Steve Block 116692e5dbf12901edacf14812a6fae25462920af42Steve Blockif (window.layoutTestController) 117692e5dbf12901edacf14812a6fae25462920af42Steve Block layoutTestController.waitUntilDone(); 118692e5dbf12901edacf14812a6fae25462920af42Steve Block 119692e5dbf12901edacf14812a6fae25462920af42Steve Blockif (window.eventSender) { 120692e5dbf12901edacf14812a6fae25462920af42Steve Block description("This tests basic single touch event support."); 121692e5dbf12901edacf14812a6fae25462920af42Steve Block 122692e5dbf12901edacf14812a6fae25462920af42Steve Block lastEvent = null; 123692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.clearTouchPoints(); 124692e5dbf12901edacf14812a6fae25462920af42Steve Block singleTouchSequence(); 125692e5dbf12901edacf14812a6fae25462920af42Steve Block 126692e5dbf12901edacf14812a6fae25462920af42Steve Block lastEvent = null; 127692e5dbf12901edacf14812a6fae25462920af42Steve Block eventSender.clearTouchPoints(); 128692e5dbf12901edacf14812a6fae25462920af42Steve Block touchTargets(); 129692e5dbf12901edacf14812a6fae25462920af42Steve Block 130692e5dbf12901edacf14812a6fae25462920af42Steve Block} else { 131692e5dbf12901edacf14812a6fae25462920af42Steve Block debug("This test requires DumpRenderTree. Tap on the blue rect to log.") 132692e5dbf12901edacf14812a6fae25462920af42Steve Block} 133692e5dbf12901edacf14812a6fae25462920af42Steve Block 134692e5dbf12901edacf14812a6fae25462920af42Steve Block 135