Chromium Code Reviews| 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 |