Move scroll-anchoring tests to WPT
Change-Id: I97fe58e63eae178396249cc0ed6692f5c8f2e22d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2182737
Reviewed-by: Navid Zolghadr <nzolghadr@chromium.org>
Commit-Queue: Nick Burris <nburris@chromium.org>
Cr-Commit-Position: refs/heads/master@{#765996}
diff --git a/css/css-scroll-anchoring/anchor-inside-iframe.html b/css/css-scroll-anchoring/anchor-inside-iframe.html
new file mode 100644
index 0000000..ea1ce4b
--- /dev/null
+++ b/css/css-scroll-anchoring/anchor-inside-iframe.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring-1/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe width="700" height="500" srcdoc="
+ <!DOCTYPE html>
+ <style> body { height: 1000px } div { height: 100px } </style>
+ <div id='block1'>abc</div>
+ <div id='block2'>def</div>
+"></iframe>
+<script>
+ async_test((t) => {
+ var iframeWindow = document.querySelector("iframe").contentWindow;
+ iframeWindow.addEventListener("load", () => {
+ var block1 = iframeWindow.document.querySelector("#block1");
+ iframeWindow.scrollTo(0, 150);
+
+ requestAnimationFrame(() => {
+ step_timeout(() => {
+ block1.style.height = "200px";
+ assert_equals(iframeWindow.scrollY, 250);
+ t.done();
+ }, 0);
+ });
+ });
+ }, "Scroll anchoring in an iframe.");
+</script>
diff --git a/css/css-scroll-anchoring/reading-scroll-forces-anchoring.html b/css/css-scroll-anchoring/reading-scroll-forces-anchoring.html
new file mode 100644
index 0000000..39b8e36
--- /dev/null
+++ b/css/css-scroll-anchoring/reading-scroll-forces-anchoring.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring-1/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+body { height: 1000px }
+div { height: 100px }
+</style>
+<div id="block1">abc</div>
+<div id="block2">def</div>
+<script>
+ // This test verifies that reading window.scrollY forces any pending scroll
+ // anchoring adjustment to occur before computing the return value.
+ async_test((t) => {
+ scrollTo(0, 150);
+ requestAnimationFrame(() => {
+ step_timeout(() => {
+ // Queue scroll anchoring adjustment.
+ document.querySelector("#block1").style.height = "200px";
+
+ // Reading scrollY should force both the layout and the adjustment to
+ // occur synchronously.
+ var y = scrollY;
+
+ assert_equals(y, 250);
+ t.done();
+ }, 0);
+ });
+ }, 'Reading scroll position forces scroll anchoring adjustment.');
+</script>