| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"> | |
| <title>CSSOM View - scrollIntoView() then a deferred scrollBy() correction</title> | |
| <link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> | |
| <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=2053004"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/dom/events/scrolling/scroll_support.js"></script> | |
| <div style="height: 200px;"></div> | |
| <h1 id="a">A</h1> | |
| <div style="height: 200vh;"></div> | |
| <script> | |
| const OFFSET = 80; | |
| promise_test(async t => { | |
| const target = document.getElementById("a"); | |
| await waitForCompositorReady(); | |
| await waitForCompositorCommit(); | |
| window.addEventListener("scroll", () => { | |
| step_timeout(() => window.scrollBy(0, -OFFSET), 1); | |
| }, { once: true }); | |
| target.scrollIntoView(); | |
| await waitForDelayWithoutScrollEvent(window); | |
| await waitForCompositorCommit(); | |
| assert_equals(target.getBoundingClientRect().top, OFFSET, | |
| "#a should rest OFFSET below the top after the deferred scrollBy()"); | |
| }, "scrollIntoView() followed by a deferred scrollBy() preserves the scroll correction"); | |
| </script> |