blob: d94aa4bee353332735569be136b9ca28945462e9 [file] [log] [blame]
<!DOCTYPE html>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
<script src='../../resources/gesture-util.js'></script>
<style>
body,
html {
margin: 0;
}
.container {
width: 100px;
height: 100px;
}
.content-big {
width: 200px;
height: 200px;
}
.content-small {
width: 20px;
height: 20px;
}
</style>
scroll with overflow
<div id='overflow-1' class='container' style='overflow-x: scroll; overflow-y: scroll'>
<div class='content-big'>Content</div>
</div>
auto with overflow
<div id='overflow-2' class='container' style='overflow-x: auto; overflow-y: auto'>
<div class='content-big'>Content</div>
</div>
hidden with overflow
<div id='overflow-3' class='container' style='overflow-x: hidden; overflow-y: hidden'>
<div class='content-big'>Content</div>
</div>
overlay with overflow
<div id='overflow-4' class='container' style='overflow-x: overlay; overflow-y: overlay'>
<div class='content-big'>Content</div>
</div>
scroll without overflow
<div id='no-overflow-1' class='container' style='overflow-x: scroll; overflow-y: scroll'>
<div class='content-small'>Content</div>
</div>
auto without overflow
<div id='no-overflow-2' class='container' style='overflow-x: auto; overflow-y: auto'>
<div class='content-small'>Content</div>
</div>
hidden without overflow
<div id='no-overflow-3' class='container' style='overflow-x: hidden; overflow-y: hidden'>
<div class='content-small'>Content</div>
</div>
overlay without overflow
<div id='no-overflow-4' class='container' style='overflow-x: overlay; overflow-y: overlay'>
<div class='content-small'>Content</div>
</div>
<script>
const mouse = GestureSourceType.MOUSE_INPUT;
async function testScrollable(div_id, can_scroll) {
let div = document.getElementById(div_id);
div.scrollIntoView({ block: 'start', inline: 'start', behavior: 'instant' });
await waitForCompositorCommit();
let x = div.offsetLeft - window.scrollX + 5;
let y = div.offsetTop - window.scrollY + 5
await mouseMoveTo(x, y);
await smoothScroll(10, x, y, mouse, 'down', 100000);
await waitForCompositorCommit();
await waitFor(
() => {
console.log(div_id + ':' + div.scrollTop);
if (can_scroll)
return div.scrollTop == 10;
return div.scrollTop == 0;
},
'wait for ' + div_id + ' try vertical scroll.'
);
await smoothScroll(10, x, y, mouse, 'right', 100000);
await waitForCompositorCommit();
await waitFor(
() => {
if (can_scroll)
return div.scrollLeft == 10;
return div.scrollLeft == 0;
},
'wait for ' + div_id + ' try horizontal scroll.'
);
}
window.onload = async () => {
if (window.internals)
internals.settings.setScrollAnimatorEnabled(false);
await waitForCompositorCommit();
promise_test(async () => {
await testScrollable('overflow-1', true);
await testScrollable('overflow-2', true);
await testScrollable('overflow-3', false);
await testScrollable('overflow-4', true);
await testScrollable('no-overflow-1', false);
await testScrollable('no-overflow-2', false);
await testScrollable('no-overflow-3', false);
await testScrollable('no-overflow-4', false);
}, 'This tests that scrollable areas with the appropriate overflow mode set'
+ ' are in fact scrollable by the user.');
};
</script>