Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(391)

Side by Side Diff: LayoutTests/fast/events/dispatch-mouse-events-to-window-always.html

Issue 1210253003: Fix wheel event dispatch logic to fallback to document when hit-test fails (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <style>
3 html, body {
4 height: 400px;
5 width: 400px;
6 background: #eee;
7 padding: 0;
8 margin: 0;
9 }
10
11 div#child {
12 position: absolute;
13 top : 0;
14 width: 400px;
15 height: 10000px;
16 margin-left: 400px;
17 background: #ddd;
18 }
19 </style>
20
21 <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.
22 <div id='child'></div>
23 <div id='console'></div>
24 </body>
25
26 <script src="../../resources/js-test.js"></script>
27 <script>
28 jsTestIsAsync = true;
29 description('Test that wheel and mouse events are dispatched to document ' +
30 'and window even if they do not hit any element in the page.');
31
32 onload = function() {
33 if (!window.eventSender) {
34 testFailed('window.eventSender is required for this test.');
35 return;
36 }
37
38 window.dispatchCount = new Map();
39
40 var eventTypes = ['wheel', 'click', 'mousedown', 'mouseup'];
41 var eventTargets = [window, document, document.body, document.getElementById ('child')];
42
43 for (var target of eventTargets) {
44 dispatchCount[target] = new Map();
45 for (var eventType of eventTypes) {
46 target.addEventListener(eventType, countEvent.bind(target));
47 dispatchCount[target][eventType] = 0;
48 }
49 }
50
51 generateEvents(600, 600); // outside body, inside element => received by el ement, body, doc, window
52 generateEvents(10, 10); // inside body, outside element => received by bo dy, doc, window
53 generateEvents(10, 500); // outside body, outside element, inside frame => received by doc, window
54 generateEvents(10, 2000); // outside body, outside element, outside frame => received by doc, window
55
56 for (var eventType of eventTypes) {
57 window.eventType = eventType;
58 debug('eventType: ' + eventType);
59 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.
60 shouldBe('dispatchCount[document][eventType]', '4');
61 shouldBe('dispatchCount[document.body][eventType]', '2');
62 shouldBe('dispatchCount[document.getElementById("child")][eventType]', ' 1');
63 }
64
65 finishJSTest();
66
67 function countEvent(e) {
68 window.dispatchCount[this][e.type]++;
69 }
70
71 function generateEvents(x, y) {
72 eventSender.mouseMoveTo(x, y);
73 eventSender.mouseDown();
74 eventSender.mouseUp();
75 eventSender.mouseScrollBy(10, 10);
76 }
77 }
78 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698