OLD | NEW |
---|---|
(Empty) | |
1 <!DOCTYPE html> | |
2 <style> | |
3 * { | |
4 padding: 0; | |
5 margin: 0; | |
6 } | |
7 | |
8 ::-webkit-scrollbar { | |
9 display: none; | |
10 } | |
11 | |
12 html, body { | |
13 height: 400px; | |
14 width: 400px; | |
15 background: #eee; | |
16 padding: 0; | |
17 margin: 0; | |
18 } | |
19 | |
20 div#child { | |
21 position: absolute; | |
22 top : 0; | |
23 left: 400px; | |
24 width: 400px; | |
25 height: 10000px; | |
26 background: #ddd; | |
27 } | |
28 | |
29 </style> | |
30 | |
31 <body> | |
32 <div id='child'></div> | |
33 <div id='console'></div> | |
34 </body> | |
35 | |
36 <script src="../../resources/js-test.js"></script> | |
37 <script> | |
38 jsTestIsAsync = true; | |
39 setPrintTestResultsLazily(); | |
40 description('Test that wheel and mouse events are dispatched to document ' + | |
41 'and window even if they do not hit any element in the page.'); | |
42 | |
43 onload = function() { | |
44 if (!window.eventSender) { | |
45 testFailed('window.eventSender is required for this test.'); | |
46 return; | |
47 } | |
48 | |
49 window.receivers = new Map(); | |
50 var eventTypes = ['wheel', 'click', 'mousedown', 'mouseup']; | |
51 var eventTargets = [window, document, document.body, document.getElementById ('child')]; | |
52 | |
53 for (var eventType of eventTypes) { | |
54 window.receivers[eventType] = []; | |
55 for (var target of eventTargets) { | |
56 target.addEventListener(eventType, registerEvent.bind(target)); | |
57 } | |
58 } | |
59 | |
60 debug('outside body, inside element'); // received by element, body, doc, wi ndow | |
61 generateEventsAndVerify(500, 500, [document.getElementById('child'), documen t.body, document, window]); | |
62 debug('inside body, outside element'); // received by body, doc, window | |
63 generateEventsAndVerify(10, 10, [document.body, document, window]); | |
64 debug('outside body, outside element, inside frame'); // received by doc, wi ndow | |
65 generateEventsAndVerify(10, 500, [document, window]); | |
66 debug('outside body, outside element, outside frame'); // received by doc, w indow | |
67 generateEventsAndVerify(10, 2000, [document, window]); | |
68 | |
69 finishJSTest(); | |
70 | |
71 function registerEvent(e) { | |
72 window.receivers[e.type].push(this); | |
73 } | |
74 | |
75 function generateEventsAndVerify(x, y, expectedReceivers) { | |
76 eventSender.mouseMoveTo(x, y); | |
77 eventSender.mouseDown(); | |
78 verifyReceivers('mousedown', expectedReceivers); | |
79 | |
80 eventSender.mouseUp(); | |
81 verifyReceivers('mouseup', expectedReceivers); | |
82 verifyReceivers('click', expectedReceivers); | |
83 | |
84 eventSender.mouseScrollBy(10, 10); | |
85 verifyReceivers('wheel', expectedReceivers); | |
86 } | |
87 | |
88 function verifyReceivers(eventType, expectedReceivers) { | |
89 window.expectedReceivers = expectedReceivers; | |
90 window.actualReceivers = receivers[eventType]; | |
91 debug('eventType: ' + eventType); | |
92 shouldBe('actualReceivers', 'expectedReceivers'); | |
Rick Byers
2015/06/30 20:14:49
nit: can you remove the quotes from expectedReceiv
majidvp
2015/06/30 22:48:31
ShouldBe does not like non-string arguments. I use
Rick Byers
2015/07/01 13:41:03
Oh right. Sure this looks fine (since you're only
| |
93 | |
94 window.receivers[eventType] = []; | |
95 } | |
96 } | |
97 </script> | |
OLD | NEW |