OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE HTML> |
| 2 <script src="../../../../resources/js-test.js"></script> |
| 3 <style> |
| 4 #target { |
| 5 width: 50px; |
| 6 height: 50px; |
| 7 } |
| 8 </style> |
| 9 <iframe id="target" src="resources/event-delegator.html"></iframe> |
| 10 <div id=console></div> |
| 11 <script> |
| 12 var scrollbarEventType; |
| 13 |
| 14 function onEventInFrame(e) { |
| 15 debug("Received " + e.type + " in child frame"); |
| 16 if (e.type == scrollbarEventType) { |
| 17 debug('Adding scrollbars to iframe'); |
| 18 target.contentDocument.body.style.height = "500px"; |
| 19 } |
| 20 } |
| 21 |
| 22 function eventLogger(e) { |
| 23 debug("Received " + e.type + " in main frame"); |
| 24 } |
| 25 |
| 26 document.addEventListener('mousemove', eventLogger); |
| 27 document.addEventListener('mousedown', eventLogger); |
| 28 document.addEventListener('mouseup', eventLogger); |
| 29 document.addEventListener('click', eventLogger); |
| 30 |
| 31 description("Taps at a point that becomes a scrollbar (i.e. hit test with innerN
ode=null) during the tap and verifies we don't crash."); |
| 32 |
| 33 // Tap at the right edge of the frame, where its scrollbar would live. |
| 34 var rect = target.getBoundingClientRect(); |
| 35 var point = { |
| 36 x: rect.right - 4, |
| 37 y: rect.top + rect.height / 2 |
| 38 }; |
| 39 |
| 40 function doTap(type) |
| 41 { |
| 42 return new Promise(function(resolve, reject) { |
| 43 if (type) { |
| 44 debug('Test case: Add scrollbars during ' + type); |
| 45 scrollbarEventType = type; |
| 46 target.contentDocument.body.style.height = "0"; |
| 47 } else { |
| 48 debug('Test case: Tap on consistent scrollbar'); |
| 49 } |
| 50 |
| 51 eventSender.gestureTapDown(point.x, point.y); |
| 52 eventSender.gestureShowPress(point.x, point.y); |
| 53 debug("Sending GestureTap"); |
| 54 eventSender.gestureTap(point.x, point.y); |
| 55 |
| 56 setTimeout(function() { |
| 57 debug(''); |
| 58 resolve(); |
| 59 }, 0); |
| 60 }); |
| 61 } |
| 62 |
| 63 if (window.eventSender) { |
| 64 jsTestIsAsync = true; |
| 65 target.onload = function() { |
| 66 doTap() |
| 67 .then(function() { return doTap('mousemove'); }) |
| 68 .then(function() { return doTap('mousedown'); }) |
| 69 .then(function() { return doTap('mouseup'); }) |
| 70 .catch(function(err) { |
| 71 testFailed("Promise rejected: " + err.message); |
| 72 }).then(finishJSTest); |
| 73 } |
| 74 } else { |
| 75 debug("This test requires eventSender"); |
| 76 } |
| 77 </script> |
OLD | NEW |