blob: d149699bbfa728ee26e9521ad96cf7ace392d915 [file] [log] [blame]
<!DOCTYPE html>
<title>Tests mouse clicks and mousewheel ticks are animated.</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../resources/gesture-util.js"></script>
<script src="../../resources/scrollbar-util.js"></script>
<body style="height: 1000px; width: 1000px">
<script>
window.onload = () => {
const TRACK_WIDTH = calculateScrollbarThickness();
const BUTTON_WIDTH = TRACK_WIDTH;
const SCROLL_CORNER = TRACK_WIDTH;
var start_offset = 0;
var end_offset = 0;
var animated_scroll = false;
// Watches for scroll offset values between the bounds (start_offset, end_offset).
window.onscroll = function() {
if(!animated_scroll)
animated_scroll = window.scrollY > start_offset && window.scrollY < end_offset;
}
function initBounds(start, end) {
start_offset = start;
end_offset = end;
animated_scroll = false;
}
promise_test (async () => {
await waitForCompositorCommit();
resetScrollOffset(document.scrollingElement);
// Click on the track part just above the down arrow.
const x = window.innerWidth - BUTTON_WIDTH / 2;
const y = window.innerHeight - SCROLL_CORNER - BUTTON_WIDTH - 2;
// Start at 0, perform a click and check that scrollY animates at least once.
// Also, note that this test is relevant only when running in threaded mode
// (--enable-threaded-compositing).
assert_equals(window.scrollY, 0, "Scroller is expected to be at 0 offset.");
initBounds(0, 431);
await mouseClickOn(x, y);
await waitForAnimationEndTimeBased(() => {return window.scrollY;});
assert_equals(window.scrollY, 431, "Unexpected scroll offset for scrollbar track.");
assert_true(animated_scroll, "Scrollbar scroll did not animate.");
}, "Test mouse click on scrollbar is animated.");
promise_test (async () => {
// Mac doesn't support mousewheel animations yet crbug.com/574283.
if(navigator.userAgent.includes("Mac OS X"))
return;
await waitForCompositorCommit();
resetScrollOffset(document.scrollingElement);
// Start at 0, perform a mousewheel tick and check that scrollY animates at
// least once. This test is relevant only when running in threaded mode
// (--enable-threaded-compositing).
assert_equals(window.scrollY, 0, "Scroller is expected to be at 0 offset.");
initBounds(0, 72);
await smoothScrollWithXY(0, 72, window.innerWidth / 2, window.innerHeight / 2,
GestureSourceType.MOUSE_INPUT,
SPEED_INSTANT, false /* precise_scrolling_deltas */,
false /* scroll_by_page */, true /* cursor_visible */,
false /* scroll_by_percentage */);
await waitForAnimationEndTimeBased(() => {return window.scrollY;});
assert_equals(window.scrollY, 72, "Unexpected scroll offset for mousewheel tick.");
assert_true(animated_scroll, "Mousewheel tick did not animate.");
}, "Test mouse wheel tick is animated.");
}
</script>
</body>