| <!DOCTYPE html> |
| <title>MouseWheel: Scroll shouldn't fire extra events for certain phase</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| function mouseScrollByPixel(x, y, phase) { |
| if (!window.eventSender) |
| return; |
| const isMac = navigator.platform.indexOf('Mac') != -1; |
| if (!isMac) { |
| // Other platforms don't have Phase info yet. |
| if (phase == 'phaseEnded' || phase == 'phaseCancelled' || phase == 'phaseMayBegin') |
| return; |
| phase = 'phaseNone'; |
| } |
| eventSender.continuousMouseScrollBy(x, y, false, true, 0, false, phase); |
| } |
| |
| test(function() { |
| if (!window.eventSender) { |
| document.write('This test requires eventSender'); |
| return; |
| } |
| |
| var event_log = ''; |
| document.addEventListener('wheel', function(event) { |
| event_log += `(${event.deltaX},${event.deltaY},${event.deltaZ})`; |
| }); |
| |
| eventSender.mouseMoveTo(50, 50); |
| mouseScrollByPixel(0, 0, 'phaseMayBegin'); |
| mouseScrollByPixel(0, -1, 'phaseBegan'); |
| mouseScrollByPixel(0, -2, 'phaseChanged'); |
| mouseScrollByPixel(0, -3, 'phaseChanged'); |
| mouseScrollByPixel(0, -4, 'phaseStationary'); |
| mouseScrollByPixel(0, -5, 'phaseChanged'); |
| mouseScrollByPixel(0, 0, 'phaseEnded'); |
| |
| assert_equals(event_log, '(0,1,0)(0,2,0)(0,3,0)(0,4,0)(0,5,0)'); |
| }, 'Simulate track-pad two finger scroll'); |
| |
| test(function() { |
| if (!window.eventSender) { |
| document.write('This test requires eventSender'); |
| return; |
| } |
| |
| var event_log = ''; |
| document.addEventListener('wheel', function(event) { |
| event_log += `(${event.deltaX},${event.deltaY},${event.deltaZ})`; |
| }); |
| |
| eventSender.mouseMoveTo(50, 50); |
| mouseScrollByPixel(0, 0, 'phaseMayBegin'); |
| mouseScrollByPixel(0, 0, 'phaseCancelled'); |
| |
| assert_equals(event_log, ''); |
| }, 'Simulate track-pad two finger touch and release'); |
| </script> |
| |