<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/gesture-util.js"></script>
<style>
body, html {
width: 100%;
height: 100%;
margin: 0;
}
#rootscroller::-webkit-scrollbar {
width: 0px;
height: 0px;
}
#rootscroller {
width: 100%;
height: 100%;
overflow: auto;
position: absolute;
left: 0;
top: 0;
background-color: red;
}
.spacer {
width: 100%;
height: 100%;
}
#fixed {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 80%;
background-color: grey;
pointer-events: none;
}
</style>
<div id="rootscroller">
<div class="spacer" style="background-color: PaleGreen"></div>
<div class="spacer" style="background-color: Maroon"></div>
</div>
<div id="fixed">
<p>
To test, try scrolling over the grey region. The root scroller should be
scrolled (you should see red appear). Since the grey fixed region has
|pointer-events:none|, the scroll events should hit the root scroller.
</p>
</div>
<script>
if (window.internals) {
internals.settings.setScrollAnimatorEnabled(false);
internals.runtimeFlags.implicitRootScrollerEnabled = true;
}
async function runTest() {
await waitForCompositorCommit();
assert_equals(window.internals.effectiveRootScroller(document),
rootscroller,
"#rootscroller must be the effective root scroller");
const delta = 3000;
const location = { x: 5, y: 5 };
await smoothScroll(delta,
location.x,
location.y,
GestureSourceType.TOUCH_INPUT,
'down',
SPEED_INSTANT);
assert_greater_than(rootscroller.scrollTop,
0,
"RootScroller must have been scrolled");
}
window.onload = async () => {
if (!window.internals)
return;
var rootscroller = document.querySelector('#rootscroller');
promise_test( async t => {
internals.setPageScaleFactor(1);
await runTest();
}, "Scrolling from fixed element while unzoomed.");
}
</script>