diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/css/css-scroll-anchoring/position-change-heuristic.html | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-scroll-anchoring/position-change-heuristic.html')
-rw-r--r-- | testing/web-platform/tests/css/css-scroll-anchoring/position-change-heuristic.html | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-scroll-anchoring/position-change-heuristic.html b/testing/web-platform/tests/css/css-scroll-anchoring/position-change-heuristic.html new file mode 100644 index 0000000000..b36b211f58 --- /dev/null +++ b/testing/web-platform/tests/css/css-scroll-anchoring/position-change-heuristic.html @@ -0,0 +1,82 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + +#space { + height: 4000px; +} +#header { + background-color: #F5B335; + height: 50px; + width: 100%; +} +#content { + background-color: #D3D3D3; + height: 400px; +} +.scroller { + overflow: scroll; + position: relative; + width: 600px; + height: 600px; +} + +</style> +<div id="maybeScroller"> + <div id="space"> + <div id="header"></div> + <div id="before"></div> + <div id="content"></div> + </div> +</div> +<script> + +// Tests that scroll anchoring is suppressed when an element in the scroller +// changes its in-flow state. + +var scroller; + +function runCase(oldPos, newPos, expectSuppression, skipInverse) { + var header = document.querySelector("#header"); + var before = document.querySelector("#before"); + + header.style.position = oldPos; + before.style.height = "0"; + scroller.scrollTop = 200; + + header.style.position = newPos; + before.style.height = "25px"; + + var expectedTop = expectSuppression ? 200 : 225; + assert_equals(scroller.scrollTop, expectedTop); + + if (!skipInverse) + runCase(newPos, oldPos, expectSuppression, true); +} + +test(() => { + scroller = document.scrollingElement; + document.querySelector("#maybeScroller").className = ""; + + runCase("static", "fixed", true); + runCase("static", "absolute", true); + runCase("static", "relative", false); + runCase("fixed", "absolute", false); + runCase("fixed", "relative", true); + runCase("absolute", "relative", true); +}, "Position changes in document scroller."); + +test(() => { + scroller = document.querySelector("#maybeScroller"); + scroller.className = "scroller"; + + runCase("static", "fixed", true); + runCase("static", "absolute", true); + runCase("static", "relative", false); + runCase("fixed", "absolute", false); + runCase("fixed", "relative", true); + runCase("absolute", "relative", true); +}, "Position changes in scrollable <div>."); + +</script> |