Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/virtual/pointerevent/fast/events/pointerevents/touch-capture-in-iframe.html |
| diff --git a/third_party/WebKit/LayoutTests/virtual/pointerevent/fast/events/pointerevents/touch-capture-in-iframe.html b/third_party/WebKit/LayoutTests/virtual/pointerevent/fast/events/pointerevents/touch-capture-in-iframe.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ae5c637a52b4b963c032f89bb0e00c3295abb643 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/virtual/pointerevent/fast/events/pointerevents/touch-capture-in-iframe.html |
| @@ -0,0 +1,134 @@ |
| +<!DOCTYPE HTML> |
|
Rick Byers
2016/05/17 14:20:01
Thanks for the thorough test!
Not sure if the func
Navid Zolghadr
2016/05/17 16:40:44
As you guessed, the functionality is not here yet.
|
| +<script src='../../../../../resources/js-test.js'></script> |
| +<style> |
| +iframe { |
| + width: 300px; |
| + height: 300px; |
| + top: 100px; |
| + left: 50px; |
| + border: 0; |
| + position: absolute; |
| + background: green; |
| +} |
| +#outerFrame { |
| + width: 500px; |
| + height: 500px; |
| + background: blue; |
| +} |
| +</style> |
| + |
| +<body> |
|
Rick Byers
2016/05/17 14:20:01
nit: layout tests normally omit body tags: https:/
Navid Zolghadr
2016/05/17 16:40:44
Done.
|
| +<div id='outerFrame'> |
| +<iframe id='innerFrameElement' srcdoc=" |
| + <body id='innerFrame' style='height:500px; width: 500px; padding: 0; margin: 0;'> |
| + <script> |
| + top.document.testEventList.forEach(function(eventName) { |
| + document.documentElement.addEventListener(eventName, function(event) { |
| + top.document.events.push(event); |
| + }); |
| + }); |
| + </script> |
| + </body>"> |
| +</iframe> |
| +</div> |
| + |
| +<div id='console'></div> |
| + |
| +<script> |
| +var outerFrameX = 20; |
| +var outerFrameY = 20; |
| +var innerFrameX = 200; |
| +var innerFrameY = 200; |
| + |
| +document.testEventList = ['pointerup', 'pointerdown', 'pointermove', 'gotpointercapture', 'lostpointercapture', 'pointercancel', |
| + 'touchstart', 'touchmove', 'touchend']; |
| +document.testEventList.forEach(function(eventName) { |
| + document.getElementById('outerFrame').addEventListener(eventName, function(event) { |
| + document.events.push(event); |
| + }); |
| +}); |
| + |
| +var attributes = [ |
| + 'target' |
| +]; |
| + |
| +document.events = []; |
| + |
| +function testScenario(firstFingerInitFrame, secondFingerInitFrame) { |
| + var firstFingerX1 = firstFingerInitFrame == "innerFrame" ? innerFrameX : outerFrameX; |
| + var firstFingerY1 = firstFingerInitFrame == "innerFrame" ? innerFrameY : outerFrameY; |
| + var firstFingerX2 = firstFingerInitFrame == "outerFrame" ? innerFrameX : outerFrameX; |
| + var firstFingerY2 = firstFingerInitFrame == "outerFrame" ? innerFrameY : outerFrameY; |
| + var secondFingerX1 = secondFingerInitFrame == "innerFrame" ? innerFrameX : outerFrameX; |
| + var secondFingerY1 = secondFingerInitFrame == "innerFrame" ? innerFrameY : outerFrameY; |
| + var secondFingerX2 = secondFingerInitFrame == "outerFrame" ? innerFrameX : outerFrameX; |
| + var secondFingerY2 = secondFingerInitFrame == "outerFrame" ? innerFrameY : outerFrameY; |
| + var firstFingerFinalFrame = (firstFingerInitFrame == 'innerFrame') ? 'outerFrame' : 'innerFrame'; |
| + var secondFingerFinalFrame = (secondFingerInitFrame == 'innerFrame') ? 'outerFrame' : 'innerFrame'; |
| + |
| + debug('==== Finger1 in ' + firstFingerInitFrame + ' and Finger2 in ' + secondFingerInitFrame + ' ===='); |
| + debug('*** Put first finger down in ' + firstFingerInitFrame + ' and move ***'); |
| + eventSender.addTouchPoint(firstFingerX1, firstFingerY1); |
| + eventSender.touchStart(); |
| + eventSender.updateTouchPoint(0, firstFingerX1, firstFingerY1); |
| + eventSender.touchMove(); |
| + dumpEvents(); |
| + |
| + debug('*** Put second finger in ' + secondFingerInitFrame + ' and move ***'); |
| + eventSender.addTouchPoint(secondFingerX1, secondFingerY1); |
| + eventSender.touchStart(); |
| + eventSender.updateTouchPoint(1, secondFingerX1, secondFingerY1); |
| + eventSender.touchMove(); |
| + dumpEvents(); |
| + |
| + debug('*** Move first finger to ' + firstFingerFinalFrame + ' ***'); |
| + eventSender.updateTouchPoint(0, firstFingerX2, firstFingerY2); |
| + eventSender.touchMove(); |
| + dumpEvents(); |
| + |
| + debug('*** Move second finger to ' + secondFingerFinalFrame + ' ***'); |
| + eventSender.updateTouchPoint(1, secondFingerX2, secondFingerY2); |
| + eventSender.touchMove(); |
| + dumpEvents(); |
| + |
| + debug('*** Releasing fingers ***'); |
| + eventSender.releaseTouchPoint(0); |
| + eventSender.releaseTouchPoint(1); |
| + eventSender.touchEnd(); |
| + dumpEvents(); |
| +} |
| + |
| +function runTests() { |
| + testScenario('innerFrame', 'outerFrame'); |
| + testScenario('outerFrame', 'innerFrame'); |
| + testScenario('innerFrame', 'innerFrame'); |
| + testScenario('outerFrame', 'outerFrame'); |
| + testRunner.notifyDone(); |
| +} |
| + |
| +function dumpEvents() |
| +{ |
| + document.events.forEach(function(event) { |
| + if (event.type.includes('pointer')) { |
| + debug(event.target.id + ' recieved ' + event.type); |
| + } else if (event.type.startsWith('touch')) { |
| + debug(event.type + ' is recieved with changedTouches.length=' + event.changedTouches.length + ':'); |
| + for(var i=0; i<event.changedTouches.length; i++) { |
| + debug(' Touch with id=' + event.changedTouches[i].identifier + ' with target = ' + event.changedTouches[i].target.id); |
| + } |
| + } |
| + }); |
| + debug(''); |
| + document.events = []; |
| +} |
| + |
| +if (window.eventSender) { |
| + testRunner.waitUntilDone(); |
| + window.onload = runTests; |
| +} else |
| + debug('This test requires eventSender'); |
| + |
| +description("This test verifies clientX/Y of pointer events inside iframe."); |
|
Rick Byers
2016/05/17 14:20:01
This description seems wrong.
Navid Zolghadr
2016/05/17 16:40:44
Right. I copy pasted from the other test and forgo
|
| + |
| +</script> |
| +</body> |