| 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 |