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/cssom-view/scrollIntoView-scrollMargin.html | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.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/cssom-view/scrollIntoView-scrollMargin.html')
-rw-r--r-- | testing/web-platform/tests/css/cssom-view/scrollIntoView-scrollMargin.html | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/cssom-view/scrollIntoView-scrollMargin.html b/testing/web-platform/tests/css/cssom-view/scrollIntoView-scrollMargin.html new file mode 100644 index 0000000000..930702aa87 --- /dev/null +++ b/testing/web-platform/tests/css/cssom-view/scrollIntoView-scrollMargin.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<title>CSSOM View - scrollIntoView considers scroll-margin</title> +<meta charset="utf-8"> +<link rel="author" title="Sandra Sun" href="mailto:sunyunjia@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#scroll-margin"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +#scroller { + width: 200px; + height: 200px; + overflow: scroll; +} +#content { + width: 500px; + height: 500px; +} +#target { + position: relative; + left: 200px; + top: 200px; + width: 100px; + height: 100px; + scroll-margin-top: 4px; + scroll-margin-right: 8px; + scroll-margin-bottom: 12px; + scroll-margin-left: 16px; + background-color: lightgreen; +} +</style> + +<div id="scroller"> + <div id="content"> + <div id="target"></div> + </div> +</div> +<div id="log"></div> + +<script> +var target = document.getElementById("target"); +var scroller = document.getElementById("scroller"); + +var expectedXLeft = 200 - 16; +var expectedXRight = 200 - scroller.clientWidth + target.clientWidth + 8; +var expectedXCenter = 200 - (scroller.clientWidth / 2) + + (target.clientWidth + 8 - 16) / 2; + +var expectedYTop = 200 - 4; +var expectedYBottom = 200 - scroller.clientHeight + target.clientHeight + 12; +var expectedYCenter = 200 - (scroller.clientHeight / 2) + + (target.clientHeight + 12 - 4) / 2; + +// This formats dict as a string suitable as test name. +// format_value() is provided by testharness.js, +// which also preserves sign for -0. +function format_dict(dict) { + const props = []; + for (let prop in dict) { + props.push(`${prop}: ${format_value(dict[prop])}`); + } + return `{${props.join(", ")}}`; +} + +[ + [{block: "center", inline: "center"}, expectedXCenter, expectedYCenter], + [{block: "start", inline: "start"}, expectedXLeft, expectedYTop], + [{block: "end", inline: "end"}, expectedXRight, expectedYBottom], +].forEach(([input, expectedX, expectedY]) => { + test(() => { + scroller.scrollTo(0, 0); + target.scrollIntoView(input); + assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX"); + assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY"); + }, `scrollIntoView(${format_dict(input)})`); +}) +</script>
\ No newline at end of file |