blob: 09a6f2a4ba24545dbae4042b805ae6d61c61a0d7 [file] [log] [blame]
<!-- 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>