blob: 2beafe810990dac55c57c016f49912a4449eebe1 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
body {
height: 2500px;
}
.scroller {
border: 1px solid black;
}
.outer.scroller {
width: 500px;
height: 300px;
overflow: auto;
}
.inner.scroller {
width: 400px;
height: 250px;
overflow-x: hidden;
overflow-y: auto;
margin: 10px;
}
.contents {
height: 300%;
width: 300%;
}
.wide {
width: 300%;
height: 10px;
background-color: gray;
}
</style>
<script src="../../../resources/js-test-pre.js"></script>
<script src="../../../resources/ui-helper.js"></script>
<script>
jsTestIsAsync = true;
let innerScroller;
let outerScroller;
function checkForScroll()
{
innerScroller = document.querySelector('.inner.scroller');
outerScroller = document.querySelector('.outer.scroller');
shouldBe('innerScroller.scrollLeft', '0');
shouldBe('innerScroller.scrollTop', '0');
shouldBeTrue('outerScroller.scrollLeft > 0');
shouldBe('outerScroller.scrollTop', '0');
finishJSTest();
}
async function scrollTest()
{
eventSender.mouseMoveTo(100, 100);
// Sideways scroll.
eventSender.monitorWheelEvents();
eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'began', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(-10, 0, 'changed', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(-10, 0, 'none', 'begin');
eventSender.mouseScrollByWithWheelAndMomentumPhases(-10, 0, 'none', 'continue');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
await UIHelper.waitForScrollCompletion();
checkForScroll();
}
function setupTopLevel()
{
description("Tests that sieways scrolling in an overflow-x:hidden scroller scrolls the enclosing scroller");
if (window.eventSender) {
setTimeout(scrollTest, 0);
return;
}
finishJSTest();
}
window.addEventListener('load', () => {
setupTopLevel();
}, false);
</script>
</head>
<body>
<div class="outer scroller">
<div class="inner scroller">
<div class="contents"></div>
</div>
<div class="wide"></div>
</div>
<div id="console"></div>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>