| Index: third_party/WebKit/LayoutTests/fast/layout/scroll-anchoring/fixed-using-top.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/layout/scroll-anchoring/fixed-using-top.html b/third_party/WebKit/LayoutTests/fast/layout/scroll-anchoring/fixed-using-top.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b08d12c4addd10c8180640a6ecc495a3eab1e3e7
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/fast/layout/scroll-anchoring/fixed-using-top.html
|
| @@ -0,0 +1,57 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../../resources/testharness.js"></script>
|
| +<script src="../../../resources/testharnessreport.js"></script>
|
| +<script src="resources/scroll-anchoring-test.js"></script>
|
| +<style>
|
| + body {
|
| + margin: 0px;
|
| + height: 1500px;
|
| + }
|
| + #a {
|
| + height: 200px;
|
| + }
|
| + #b {
|
| + position: absolute;
|
| + left: 50px;
|
| + height:200px;
|
| + width: 200px;
|
| + background-color: #fcc;
|
| + }
|
| +</style>
|
| +
|
| +<div id="a"></div>
|
| +<div id="b"></div>
|
| +
|
| +<script>
|
| +internals.runtimeFlags.scrollAnchoringEnabled = true;
|
| +
|
| +// We start of by scrolling #b out of the viewport by 20px. The scroll handler
|
| +// fixes #b to the viewport by updating its style.top value. This triggers
|
| +// layout during which we anchor to #b. Because the scroll handler moves #b
|
| +// back into the viewport, we make an incorrect adjustment. This adjustment
|
| +// fires the handler and triggers another layout as #b is scrolled out of the
|
| +// viewport.
|
| +
|
| +// The current solution here is for ScrollAnchor to not anchor to absolute
|
| +// positioned elements.
|
| +
|
| +var b = document.querySelector('#b');
|
| +// The initial position of b relative to the document.
|
| +var initialTop = 200;
|
| +
|
| +onscroll = function() {
|
| + var y = scrollY;
|
| + if (y > initialTop)
|
| + b.style.top = (y + 10) + 'px';
|
| + else
|
| + b.style.top = '';
|
| +};
|
| +
|
| +promise_test(function() {
|
| + var scrollBy = initialTop + 20;
|
| + return Promise.resolve()
|
| + .then(() => { eventSender.continuousMouseScrollBy(0, -scrollBy); })
|
| + .then(() => scrollSettlesAt(scrollBy));
|
| +}, "Scroll anchoring position fixed using scroll top");
|
| +
|
| +</script>
|
|
|