touch-target.js revision dcc8cf2e65d1aa555cce12431a16547e66b469ee
1var div1 = document.createElement("div");
2div1.id = "targetA";
3div1.style.width = "100px";
4div1.style.height = "100px";
5div1.style.backgroundColor = "blue";
6
7var div2 = document.createElement("div");
8div2.id = "targetB";
9div2.style.width = "100px";
10div2.style.height = "100px";
11div2.style.backgroundColor = "green";
12
13var touchStartCount = 0;
14var touchMoveCount = 0;
15
16document.getElementById('targetsDiv').appendChild(div1);
17document.getElementById('targetsDiv').appendChild(document.createElement('br'));
18document.getElementById('targetsDiv').appendChild(div2);
19
20function touchStartHandler()
21{
22    shouldBeEqualToString('event.type', 'touchstart');
23    switch (touchStartCount) {
24        case 0:
25            shouldBeEqualToString('event.touches[0].target.id', div1.id);
26            shouldBeEqualToString('event.touches[1].target.id', div2.id);
27            break;
28        case 1:
29            shouldBeEqualToString('event.touches[0].target.id', div2.id);
30            shouldBeEqualToString('event.touches[1].target.id', div1.id);
31            break;
32    }
33
34    touchStartCount++;
35}
36
37function touchMoveHandler()
38{
39    shouldBeEqualToString('event.type', 'touchmove');
40    switch (touchMoveCount) {
41        case 0:
42        case 1:
43            shouldBeEqualToString('event.touches[0].target.id', div1.id);
44            shouldBeEqualToString('event.touches[1].target.id', div2.id);
45            break;
46        case 2:
47            shouldBeEqualToString('event.touches[0].target.id', div2.id);
48            shouldBeEqualToString('event.touches[1].target.id', div1.id);
49            break;
50    }
51
52    if (++touchMoveCount == 3)
53    {
54        successfullyParsed = true;
55        layoutTestController.notifyDone();
56        isSuccessfullyParsed();
57    }
58}
59
60div1.addEventListener("touchstart", touchStartHandler, false);
61div1.addEventListener("touchmove", touchMoveHandler, false);
62
63div2.addEventListener("touchstart", touchStartHandler, false);
64div2.addEventListener("touchmove", touchMoveHandler, false);
65
66description("Tests that the target of touches match the element where the event originated, not where the touch is currently occurring.");
67
68if (window.layoutTestController) {
69    layoutTestController.waitUntilDone();
70}
71
72if (window.eventSender) {
73    eventSender.clearTouchPoints();
74    eventSender.addTouchPoint(50, 150);
75    eventSender.addTouchPoint(50, 250);
76    eventSender.touchStart();
77
78    eventSender.updateTouchPoint(0, 50, 250);
79    eventSender.updateTouchPoint(1, 50, 150);
80    eventSender.touchMove();
81
82    eventSender.updateTouchPoint(0, 1000, 1000);
83    eventSender.updateTouchPoint(1, 1000, 1000);
84    eventSender.touchMove();
85
86    eventSender.releaseTouchPoint(0);
87    eventSender.touchEnd();
88
89    eventSender.addTouchPoint(50,150);
90    eventSender.touchStart();
91
92    eventSender.updateTouchPoint(0, 500, 500);
93    eventSender.updateTouchPoint(1, 500, 500);
94    eventSender.touchMove();
95} else
96    debug('This test requires DRT.');
97
98