Chromium Code Reviews| Index: LayoutTests/fast/events/dispatch-mouse-events-to-window-always.html |
| diff --git a/LayoutTests/fast/events/dispatch-mouse-events-to-window-always.html b/LayoutTests/fast/events/dispatch-mouse-events-to-window-always.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..412576d51f9a84c2aae349722117399fd7816ab0 |
| --- /dev/null |
| +++ b/LayoutTests/fast/events/dispatch-mouse-events-to-window-always.html |
| @@ -0,0 +1,78 @@ |
| +<!DOCTYPE html> |
| +<style> |
| +html, body { |
| + height: 400px; |
| + width: 400px; |
| + background: #eee; |
| + padding: 0; |
| + margin: 0; |
| +} |
| + |
| +div#child { |
| + position: absolute; |
| + top : 0; |
| + width: 400px; |
| + height: 10000px; |
| + margin-left: 400px; |
| + background: #ddd; |
| +} |
| +</style> |
| + |
| +<body> |
|
Rick Byers
2015/06/26 12:34:49
nit: omit body
majidvp
2015/06/29 16:58:40
I added body element specifically to test that the
Rick Byers
2015/06/29 17:07:58
Duh, of course - sorry.
|
| + <div id='child'></div> |
| + <div id='console'></div> |
| +</body> |
| + |
| +<script src="../../resources/js-test.js"></script> |
| +<script> |
| +jsTestIsAsync = true; |
| +description('Test that wheel and mouse events are dispatched to document ' + |
| + 'and window even if they do not hit any element in the page.'); |
| + |
| +onload = function() { |
| + if (!window.eventSender) { |
| + testFailed('window.eventSender is required for this test.'); |
| + return; |
| + } |
| + |
| + window.dispatchCount = new Map(); |
| + |
| + var eventTypes = ['wheel', 'click', 'mousedown', 'mouseup']; |
| + var eventTargets = [window, document, document.body, document.getElementById('child')]; |
| + |
| + for (var target of eventTargets) { |
| + dispatchCount[target] = new Map(); |
| + for (var eventType of eventTypes) { |
| + target.addEventListener(eventType, countEvent.bind(target)); |
| + dispatchCount[target][eventType] = 0; |
| + } |
| + } |
| + |
| + generateEvents(600, 600); // outside body, inside element => received by element, body, doc, window |
| + generateEvents(10, 10); // inside body, outside element => received by body, doc, window |
| + generateEvents(10, 500); // outside body, outside element, inside frame => received by doc, window |
| + generateEvents(10, 2000); // outside body, outside element, outside frame => received by doc, window |
| + |
| + for (var eventType of eventTypes) { |
| + window.eventType = eventType; |
| + debug('eventType: ' + eventType); |
| + shouldBe('dispatchCount[window][eventType]', '4'); |
|
Rick Byers
2015/06/26 12:34:49
This seems a little indirect - eg. hard to debug w
majidvp
2015/06/29 16:58:40
Acknowledged.
majidvp
2015/06/30 15:33:04
Done.
|
| + shouldBe('dispatchCount[document][eventType]', '4'); |
| + shouldBe('dispatchCount[document.body][eventType]', '2'); |
| + shouldBe('dispatchCount[document.getElementById("child")][eventType]', '1'); |
| + } |
| + |
| + finishJSTest(); |
| + |
| + function countEvent(e) { |
| + window.dispatchCount[this][e.type]++; |
| + } |
| + |
| + function generateEvents(x, y) { |
| + eventSender.mouseMoveTo(x, y); |
| + eventSender.mouseDown(); |
| + eventSender.mouseUp(); |
| + eventSender.mouseScrollBy(10, 10); |
| + } |
| +} |
| +</script> |