gecko-dev/testing/web-platform/tests/css/css-scroll-snap/snap-to-visible-areas.html
Sandra Sun 0becef306c Bug 1443206 [wpt PR 9821] - Snap Point selection should satisfy visibility requirement., a=testonly
Automatic update from web-platform-testsSnap Point selection should satisfy visibility requirement.

According to spec, https://www.w3.org/TR/css-scroll-snap-1/#snap-scope
we should only consider the snap points of visible snap areas.
This patch implements the visibility requirement by adding a field of
visible region for each snap point. It also handles the case of
visibility conflict when snapping to two axes individually.

Bug: 778257
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I7a3d2aa6b9c1293df3f05118152f105fa3265d29
Reviewed-on: https://chromium-review.googlesource.com/814874
Commit-Queue: Sandra Sun <sunyunjia@chromium.org>
Reviewed-by: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Ali Juma <ajuma@chromium.org>
Reviewed-by: Majid Valipour <majidvp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543111}

wpt-commits: 343fd25cd72c64ed30da54b650220cca7338cd57
wpt-pr: 9821
wpt-commits: 343fd25cd72c64ed30da54b650220cca7338cd57
wpt-pr: 9821
2018-04-15 08:32:08 +01:00

70 lines
1.5 KiB
HTML

<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
div {
position: absolute;
margin: 0px;
}
#scroller {
height: 600px;
width: 600px;
overflow: scroll;
scroll-snap-type: both mandatory;
}
#space {
width: 2000px;
height: 2000px;
}
.snap {
width: 200px;
height: 200px;
background-color: blue;
scroll-snap-align: start;
}
#left-top {
left: 0px;
top: 0px;
}
#right-top {
left: 800px;
top: 0px;
}
#left-bottom {
left: 0px;
top: 800px;
}
</style>
<div id="scroller">
<div id="space"></div>
<div id="left-top" class="snap"></div>
<div id="right-top" class="snap"></div>
<div id="left-bottom" class="snap"></div>
</div>
<script>
var scroller = document.getElementById("scroller");
test(() => {
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(300, 0);
assert_equals(scroller.scrollLeft, 800);
assert_equals(scroller.scrollTop, 0);
}, 'Only snap to visible area on X axis, even when the non-visible ones are closer');
test(() => {
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(0, 300);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 800);
}, 'Only snap to visible area on Y axis, even when the non-visible ones are closer');
</script>