blob: 4a5d9a73d0882b9e818ba571c8442e9cdb04fda4 [file] [log] [blame]
<!DOCTYPE html>
<style>
::-webkit-scrollbar {
width: 0px;
height: 0px;
}
body, html {
width: 100%;
height: 100%;
margin: 0px;
}
#rootscroller {
width: 100%;
height: 100%;
overflow: auto;
}
#dialog {
position: fixed;
left: 50px;
right: 50px;
top: 50px;
bottom: 50px;
overflow: auto;
}
.bigspace {
width: 2000px;
height: 2000px;
background-image: repeating-linear-gradient(
45deg,
yellow,
yellow 80px,
orange 80px,
orange 160px);
}
.bigspace2 {
width: 2000px;
height: 2000px;
background-image: repeating-linear-gradient(
-45deg,
blue,
blue 80px,
red 80px,
red 160px);
}
</style>
<div id="rootscroller">
To test manually, try scrolling the red/orange box past the end. Scrolling
shouldn't chain up to this blue/red box.
<div class="bigspace2"></div>
</div>
<div id="dialog">
<div class="bigspace"></div>
</div>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
var rootScroller = document.querySelector('#rootscroller');
var dialog = document.querySelector('#dialog');
document.rootScroller = rootScroller;
var dialogRect = dialog.getBoundingClientRect();
var x = dialogRect.left + dialogRect.width / 2;
var y = dialogRect.top + dialogRect.height / 2;
test(function() {
if (!window.eventSender)
return;
// Sanity check - there should be no initial scroll.
assert_equals(dialog.scrollLeft, 0);
assert_equals(dialog.scrollTop, 0);
assert_equals(rootscroller.scrollLeft, 0);
assert_equals(rootscroller.scrollTop, 0);
// This scroll should fully scroll the dialog
eventSender.gestureScrollBegin(x, y);
eventSender.gestureScrollUpdate(-3000, 0);
eventSender.gestureScrollUpdate(0, -3000);
eventSender.gestureScrollEnd(0, 0);
assert_equals(dialog.scrollLeft, dialog.scrollWidth - dialog.clientWidth);
assert_equals(dialog.scrollTop, dialog.scrollHeight - dialog.clientHeight);
assert_equals(rootscroller.scrollLeft, 0);
assert_equals(rootscroller.scrollTop, 0);
// This scroll would normally chain up to the viewport but the "real"
// viewport has no scrolling. Make sure we don't scroll the
// document.rootScroller.
eventSender.gestureScrollBegin(x, y);
eventSender.gestureScrollUpdate(-3000, 0);
eventSender.gestureScrollUpdate(0, -3000);
eventSender.gestureScrollEnd(0, 0);
assert_equals(dialog.scrollLeft, dialog.scrollWidth - dialog.clientWidth);
assert_equals(dialog.scrollTop, dialog.scrollHeight - dialog.clientHeight);
assert_equals(rootscroller.scrollLeft, 0);
assert_equals(rootscroller.scrollTop, 0);
}, 'Scrolls on the dialog should not chain to the sibling root scroller.');
</script>