Chromium Code Reviews| Index: LayoutTests/fast/events/touch/gesture/gesture-tap-div-removed.html |
| diff --git a/LayoutTests/fast/events/touch/gesture/gesture-tap-div-removed.html b/LayoutTests/fast/events/touch/gesture/gesture-tap-div-removed.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..dd3052a7e227bb9cd84cb0439fa1b8e231221274 |
| --- /dev/null |
| +++ b/LayoutTests/fast/events/touch/gesture/gesture-tap-div-removed.html |
| @@ -0,0 +1,76 @@ |
| +<!DOCTYPE HTML> |
| +<script src="../../../../resources/js-test.js"></script> |
| +<style> |
| +#target { |
| + position: absolute; |
| + right: 10px; |
| + top: 10px; |
| + border: 1px solid blue; |
| +} |
| +</style> |
| +<div id=target> |
| + Tap me |
| +</div> |
| +<script> |
| + |
| +if (window.testRunner) |
| + testRunner.dumpAsText(); |
| + |
| +function eventLogger(e) { |
| + debug("Received " + e.type + " on " + (e.currentTarget.id || e.currentTarget.nodeName)); |
| +} |
| + |
| +function logAndRemove(e) { |
| + eventLogger(e); |
| + e.currentTarget.parentNode.removeChild(e.currentTarget); |
| + debug("Removed element"); |
| + e = null; |
| + gc(); |
| +} |
| + |
| +function logAndFail(e) { |
| + eventLogger(e); |
| + testFailed("Received unexpected event."); |
| +} |
| + |
| +function getTargetPoint() { |
| + // Note that we don't want any reference to the node to escape this function |
| + // so that it's elligble for garbage collection. |
| + var target = document.getElementById('target'); |
| + target.addEventListener('mousemove', logAndRemove); |
| + target.addEventListener('mousedown', eventLogger); |
| + target.addEventListener('mouseup', eventLogger); |
| + target.addEventListener('click', eventLogger); |
| + document.addEventListener('mousemove', eventLogger); |
| + document.addEventListener('mousedown', logAndFail); |
| + document.addEventListener('mouseup', logAndFail); |
| + document.addEventListener('click', logAndFail); |
| + |
| + var rect = target.getBoundingClientRect(); |
| + return { |
| + x: rect.left + rect.width / 2, |
| + y: rect.top + rect.height / 2 |
| + }; |
| +} |
| + |
| +onload = function() { |
| + description("Verifies that deleting the element being tapped during the event sequence doesn't cause any problems. Succeeds if the expected events are delivered to the div and we don't crash."); |
|
Zeeshan Qureshi
2014/06/26 21:20:50
It might be helpful to mention that we expect the
Rick Byers
2014/06/26 21:29:01
Done.
|
| + |
| + var point = getTargetPoint(); |
| + |
| + if (!window.eventSender) { |
| + debug("This test requires eventSender"); |
| + return; |
| + } |
| + |
| + debug("Sending GestureTapDown"); |
| + eventSender.gestureTapDown(point.x, point.y); |
| + |
| + debug("Sending GestureShowPress"); |
| + eventSender.gestureShowPress(point.x, point.y); |
| + |
| + debug("Sending GestureTap"); |
| + eventSender.gestureTap(point.x, point.y); |
| +} |
| + |
| +</script> |