Skip to content

merge_pr_46190

Compare
Choose a tag to compare
@github-actions github-actions released this 11 May 00:37

[css-anchor-position-1] Fix flicker with try-option with fixed-position anchor

Previously we supposed the default anchor wouldn't change in
try-options, but the latest draft spec allows that.

When the currently tried option will use a default anchor that is
different from the currently used default anchor, checking overflow
with the snapshotted AnchorPositionScrollData will be incorrect,
and the incorrect results caused oscillation between try options.

To resolve that, when the total offset is requested for a different
default anchor, we need to calculate it on the fly instead of getting
it from the snapshotted result.

Also allow one more layout if ValidateSnapshot() (called after the
first layout in a document lifecycle update) finds that the
snapshotted scroll data needs update, to ensure correct layout and
paint with the changed anchor and scroll adjustment in most cases.

In rare cases when we need more than one additional layout to get
the stable layout, ShouldScheduleNextService() will schedule another
lifecycle.

Fixed: 338929745
Change-Id: I295fbc605ac8b7f0298eef7aeff4434c6bd54628
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5529048
Reviewed-by: Ian Kilpatrick ikilpatrick@chromium.org
Reviewed-by: Philip Rogers pdr@chromium.org
Commit-Queue: Xianzhu Wang wangxianzhu@chromium.org
Cr-Commit-Position: refs/heads/main@{#1299608}