| <!-- This is a replacement test for fast/event/clientXY-in-zoom-and-scroll.html with fractional coordinates--> |
| <script src="../../../../resources/testharness.js"></script> |
| <script src="../../../../resources/testharnessreport.js"></script> |
| <style> |
| #pusher { |
| width: 1000px; |
| height: 1000px; |
| outline: 1px solid black; |
| } |
| </style> |
| <div id="console"></div> |
| <div id="testArea"> |
| <div id="pusher">This box is here to create scrollbars.</div> |
| </div> |
| <script> |
| const floatPrecision = 0.00001; |
| const rightButton = 2; |
| |
| function sendMouseDownAt(x, y) { |
| return new Promise(function(resolve, reject) { |
| if (window.chrome && chrome.gpuBenchmarking) { |
| var pointerActions = |
| [{source: "mouse", |
| actions: [ |
| { name: "pointerMove", x: x, y: y}, |
| { name: "pointerDown", x: x, y: y, button: rightButton}, |
| { name: "pointerUp" }, |
| ]}]; |
| chrome.gpuBenchmarking.pointerActionSequence(pointerActions, resolve); |
| } |
| else { |
| reject(); |
| } |
| }); |
| } |
| |
| function mouseEventHandler(event) { |
| event_log.push(event); |
| event.preventDefault(); |
| } |
| events = ["mousemove", "mousedown", "mouseup", "contextmenu", "auxclick"] |
| for (var i = 0; i < events.length; i++) { |
| window.addEventListener(events[i], mouseEventHandler); |
| }; |
| |
| promise_test(async () => { |
| event_log = []; |
| await sendMouseDownAt(100, 100); |
| assert_true(event_log.length > 0); |
| for (var i = 0; i < event_log.length; i++) { |
| assert_equals(event_log[i].clientX, 100); |
| assert_equals(event_log[i].clientY, 100); |
| assert_equals(event_log[i].pageX, 100); |
| assert_equals(event_log[i].pageY, 100); |
| } |
| }, 'Default'); |
| |
| promise_test(async () => { |
| eventSender.setPageZoomFactor(1.2); |
| event_log = []; |
| await sendMouseDownAt(100, 100); |
| assert_true(event_log.length > 0); |
| for (var i = 0; i < event_log.length; i++) { |
| assert_approx_equals(event_log[i].clientX, 83.33333, floatPrecision); |
| assert_approx_equals(event_log[i].clientY, 83.33333, floatPrecision); |
| assert_approx_equals(event_log[i].pageX, 83.33333, floatPrecision); |
| assert_approx_equals(event_log[i].pageY, 83.33333, floatPrecision); |
| eventSender.setPageZoomFactor(1.0) |
| } |
| }, 'Zoomed'); |
| |
| promise_test(async () => { |
| event_log = []; |
| window.scrollTo(50, 50); |
| await sendMouseDownAt(100, 100); |
| assert_true(event_log.length > 0); |
| for (var i = 0; i < event_log.length; i++) { |
| assert_equals(event_log[i].clientX, 100); |
| assert_equals(event_log[i].clientY, 100); |
| assert_equals(event_log[i].pageX, 150); |
| assert_equals(event_log[i].pageY, 150); |
| window.scrollTo(0, 0); |
| } |
| }, 'Scrolled'); |
| |
| promise_test(async () => { |
| event_log = []; |
| eventSender.setPageZoomFactor(1.2); |
| window.scrollTo(50, 50); |
| await sendMouseDownAt(100, 100); |
| assert_true(event_log.length > 0); |
| for (var i = 0; i < event_log.length; i++) { |
| assert_approx_equals(event_log[i].clientX, 83.33333, floatPrecision); |
| assert_approx_equals(event_log[i].clientY, 83.33333, floatPrecision); |
| assert_approx_equals(event_log[i].pageX, 133.33333, floatPrecision); |
| assert_approx_equals(event_log[i].pageY, 133.33333, floatPrecision); |
| eventSender.setPageZoomFactor(1.0) |
| window.scrollTo(0, 0); |
| } |
| }, 'Zoomed and scrolled'); |
| </script> |