| OLD | NEW |
| (Empty) |
| 1 <style> | |
| 2 #target { | |
| 3 width: 100%; | |
| 4 height: 200px; | |
| 5 background: lightblue; | |
| 6 } | |
| 7 </style> | |
| 8 <script src='../../../../resources/js-test.js'></script> | |
| 9 <div id='target'>Target</div> | |
| 10 <div id='description'>Test user gesture behavior during touch events.</div> | |
| 11 <div id='console'></div> | |
| 12 | |
| 13 <script> | |
| 14 window.jsTestIsAsync = true; | |
| 15 var openedPopup = undefined; | |
| 16 var cancelEvent = false; | |
| 17 | |
| 18 function handler(e) { | |
| 19 if (cancelEvent) | |
| 20 e.preventDefault(); | |
| 21 | |
| 22 if (openedPopup !== undefined) | |
| 23 testFailed('Handler invoked multiple times'); | |
| 24 | |
| 25 var w = window.open('about:blank', '_blank'); | |
| 26 if (w) { | |
| 27 w.close(); | |
| 28 openedPopup = true; | |
| 29 } else { | |
| 30 openedPopup = false; | |
| 31 } | |
| 32 } | |
| 33 | |
| 34 var target = document.getElementById('target'); | |
| 35 | |
| 36 function testPopupOnEventDuring(eventType, expectPopup, operation) { | |
| 37 openedPopup = undefined; | |
| 38 target.addEventListener(eventType, handler); | |
| 39 | |
| 40 operation(); | |
| 41 | |
| 42 if (openedPopup===undefined) | |
| 43 testFailed(eventType + ' handler was not invoked'); | |
| 44 else if (expectPopup) | |
| 45 shouldBeTrue('openedPopup'); | |
| 46 else | |
| 47 shouldBeFalse('openedPopup'); | |
| 48 | |
| 49 target.removeEventListener(eventType, handler); | |
| 50 } | |
| 51 | |
| 52 if (window.testRunner) { | |
| 53 testRunner.setCloseRemainingWindowsWhenComplete(true); | |
| 54 testRunner.setCanOpenWindows(); | |
| 55 testRunner.setPopupBlockingEnabled(true); | |
| 56 } | |
| 57 | |
| 58 window.addEventListener('load', function() { | |
| 59 var rect = target.getBoundingClientRect(); | |
| 60 var targetX = rect.left + rect.width / 2; | |
| 61 var targetY = rect.top + rect.height / 2; | |
| 62 | |
| 63 debug('touchstart should not be a user gesture'); | |
| 64 eventSender.addTouchPoint(targetX, targetY); | |
| 65 testPopupOnEventDuring('touchstart', false, function() { eventSender.touchSt
art(); }); | |
| 66 | |
| 67 debug('touchmove should not be a user gesture'); | |
| 68 eventSender.updateTouchPoint(0, targetX + 1, targetY); | |
| 69 testPopupOnEventDuring('touchmove', false, function() { eventSender.touchMov
e(); }); | |
| 70 | |
| 71 debug("touchend should not be a user gesture if it's moved beyond the slop r
egion"); | |
| 72 eventSender.releaseTouchPoint(0); | |
| 73 testPopupOnEventDuring('touchend', false, function() { eventSender.touchEnd(
'movedBeyondSlopRegion'); }); | |
| 74 | |
| 75 debug('touchend should be a user gesture when it occurs as part of a tap'); | |
| 76 eventSender.addTouchPoint(targetX, targetY); | |
| 77 eventSender.touchStart(); | |
| 78 eventSender.updateTouchPoint(0, targetX + 1, targetY); | |
| 79 eventSender.touchMove(); | |
| 80 eventSender.releaseTouchPoint(0); | |
| 81 testPopupOnEventDuring('touchend', true, function() { eventSender.touchEnd()
; }); | |
| 82 | |
| 83 debug('touchmove and touchend should not be a user gesture when it occurs as
part of a drag without scrolling'); | |
| 84 cancelEvent = true; | |
| 85 eventSender.addTouchPoint(targetX, targetY); | |
| 86 eventSender.touchStart(); | |
| 87 eventSender.updateTouchPoint(0, targetX + 1, targetY); | |
| 88 testPopupOnEventDuring('touchmove', false, function() { eventSender.touchMov
e('movedBeyondSlopRegion'); }); | |
| 89 eventSender.releaseTouchPoint(0); | |
| 90 testPopupOnEventDuring('touchend', false, function() { eventSender.touchEnd(
'movedBeyondSlopRegion'); }); | |
| 91 | |
| 92 finishJSTest(); | |
| 93 }); | |
| 94 </script> | |
| OLD | NEW |