OLD | NEW |
| (Empty) |
1 <script src='../../../../../resources/js-test.js'></script> | |
2 <style> | |
3 iframe { | |
4 width: 300px; | |
5 height: 300px; | |
6 top: 100px; | |
7 left: 50px; | |
8 border: 0; | |
9 position: absolute; | |
10 background: green; | |
11 } | |
12 #outerFrame { | |
13 width: 500px; | |
14 height: 500px; | |
15 background: blue; | |
16 } | |
17 </style> | |
18 | |
19 <div id='outerFrame'> | |
20 <iframe id='innerFrameElement' srcdoc=" | |
21 <body id='innerFrame' style='height:500px; width: 500px; padding: 0; margin: 0
;'> | |
22 <script> | |
23 top.document.testEventList.forEach(function(eventName) { | |
24 document.addEventListener(eventName, function(event) { | |
25 | |
26 // TODO(crbug.com/449649): Due to inconsistency of the frame vs page | |
27 // event handling in EventHandler the releasePointerCapture and setPoi
nterCapture | |
28 // do not work inside the iframe for touch pointer events. | |
29 | |
30 top.logEvent(event); | |
31 }); | |
32 }); | |
33 </script> | |
34 </body>"> | |
35 </iframe> | |
36 </div> | |
37 | |
38 <div id='console'></div> | |
39 | |
40 <script> | |
41 var outerFrameX = 20; | |
42 var outerFrameY = 20; | |
43 var innerFrameX = 200; | |
44 var innerFrameY = 200; | |
45 | |
46 function logEvent(event) { | |
47 if (event.type.includes('pointer')) { | |
48 debug(event.target.id + ' recieved ' + event.type + ' with id=' + event.poin
terId); | |
49 } else if (event.type.startsWith('touch')) { | |
50 debug(event.type + ' is recieved with changedTouches.length=' + event.change
dTouches.length + ':'); | |
51 for(var i=0; i<event.changedTouches.length; i++) { | |
52 debug(' Touch with id=' + event.changedTouches[i].identifier + ' with tar
get = ' + event.changedTouches[i].target.id); | |
53 } | |
54 } | |
55 } | |
56 | |
57 document.testEventList = ['pointerup', 'pointerdown', 'pointermove', 'gotpointer
capture', 'lostpointercapture', 'pointercancel', | |
58 'touchstart', 'touchmove', 'touchend']; | |
59 document.testEventList.forEach(function(eventName) { | |
60 document.getElementById('outerFrame').addEventListener(eventName, function(eve
nt) { | |
61 if (document.releaseTouchCapture && event.type == 'pointerdown') { | |
62 debug('--- Release pointer capture for ' + event.pointerId + ' ---'); | |
63 event.target.releasePointerCapture(event.pointerId); | |
64 } | |
65 logEvent(event); | |
66 }); | |
67 }); | |
68 | |
69 document.releaseTouchCapture = true; | |
70 | |
71 function testScenario(firstFingerInitFrame, secondFingerInitFrame, releaseTouchC
apture) { | |
72 document.releaseTouchCapture = releaseTouchCapture; | |
73 var firstFingerX1 = firstFingerInitFrame == "innerFrame" ? innerFrameX : outer
FrameX; | |
74 var firstFingerY1 = firstFingerInitFrame == "innerFrame" ? innerFrameY : outer
FrameY; | |
75 var firstFingerX2 = firstFingerInitFrame == "outerFrame" ? innerFrameX : outer
FrameX; | |
76 var firstFingerY2 = firstFingerInitFrame == "outerFrame" ? innerFrameY : outer
FrameY; | |
77 var secondFingerX1 = secondFingerInitFrame == "innerFrame" ? innerFrameX : out
erFrameX; | |
78 var secondFingerY1 = secondFingerInitFrame == "innerFrame" ? innerFrameY : out
erFrameY; | |
79 var secondFingerX2 = secondFingerInitFrame == "outerFrame" ? innerFrameX : out
erFrameX; | |
80 var secondFingerY2 = secondFingerInitFrame == "outerFrame" ? innerFrameY : out
erFrameY; | |
81 var firstFingerFinalFrame = (firstFingerInitFrame == 'innerFrame') ? 'outerFra
me' : 'innerFrame'; | |
82 var secondFingerFinalFrame = (secondFingerInitFrame == 'innerFrame') ? 'outerF
rame' : 'innerFrame'; | |
83 | |
84 debug('==== Finger1 in ' + firstFingerInitFrame + ' and Finger2 in ' + secondF
ingerInitFrame + (releaseTouchCapture ? ' with releaseTouchCapture' : '') + ' ==
=='); | |
85 debug('*** Put first finger down in ' + firstFingerInitFrame + ' and move ***'
); | |
86 eventSender.addTouchPoint(firstFingerX1, firstFingerY1); | |
87 eventSender.touchStart(); | |
88 eventSender.updateTouchPoint(0, firstFingerX1, firstFingerY1); | |
89 eventSender.touchMove(); | |
90 debug(''); | |
91 | |
92 debug('*** Put second finger in ' + secondFingerInitFrame + ' and move ***'); | |
93 eventSender.addTouchPoint(secondFingerX1, secondFingerY1); | |
94 eventSender.touchStart(); | |
95 eventSender.updateTouchPoint(1, secondFingerX1, secondFingerY1); | |
96 eventSender.touchMove(); | |
97 debug(''); | |
98 | |
99 debug('*** Move first finger to ' + firstFingerFinalFrame + ' ***'); | |
100 eventSender.updateTouchPoint(0, firstFingerX2, firstFingerY2); | |
101 eventSender.touchMove(); | |
102 debug(''); | |
103 | |
104 debug('*** Move second finger to ' + secondFingerFinalFrame + ' ***'); | |
105 eventSender.updateTouchPoint(1, secondFingerX2, secondFingerY2); | |
106 eventSender.touchMove(); | |
107 debug(''); | |
108 | |
109 debug('*** Releasing fingers ***'); | |
110 eventSender.releaseTouchPoint(0); | |
111 eventSender.releaseTouchPoint(1); | |
112 eventSender.touchEnd(); | |
113 debug(''); | |
114 } | |
115 | |
116 function runTests() { | |
117 testScenario('innerFrame', 'outerFrame', false); | |
118 testScenario('outerFrame', 'innerFrame', false); | |
119 testScenario('innerFrame', 'innerFrame', false); | |
120 testScenario('outerFrame', 'outerFrame', false); | |
121 | |
122 testScenario('innerFrame', 'outerFrame', true); | |
123 testScenario('outerFrame', 'innerFrame', true); | |
124 testScenario('innerFrame', 'innerFrame', true); | |
125 testScenario('outerFrame', 'outerFrame', true); | |
126 testRunner.notifyDone(); | |
127 } | |
128 | |
129 if (window.eventSender) { | |
130 testRunner.waitUntilDone(); | |
131 window.onload = runTests; | |
132 } else | |
133 debug('This test requires eventSender'); | |
134 | |
135 description("This test verifies touch and corresponding pointerevent targets ins
ide and outside the iframe."); | |
136 | |
137 </script> | |
138 | |
OLD | NEW |