Move fixed bounds for overlap to absolute space
When computing the bounding box for fixed-pos layers, the resulting bounding box was stored on AncestorDependentCompositingInputs in viewport space (absolute space adjusted by scroll offset). The scroll offset that was used is the current scroll offset during compositing inputs update time. Call this ScrollOffsetA. Later during compositing layer assignment, when computing overlap, the fixed layer bounding box is converted from viewport space to absolute space by adjusting it by the current scroll offset. The expectation is that this 2nd scroll offset is also ScrollOfffsetA. However, in some cases, a compositing update will be requested that will skip compositing inputs update and only do overlap and assignment. When the scroll offset changes between computing the fixed layer's viewport space bounds in the previous compositing inputs update and the later compositing assignment update, the wrong scroll offset will be used and the fixed layer bounds will fail to be converted to true absolute space, leading to overlap testing errors. This change addresses this issue by storing fixed layer bounds in absolute space instead. Note that this issue does not happen when the CompositingOptimizations feature is enabled as it doesn't use the cached bounds from compositing inputs update. Bug: 1124753 Change-Id: I85928386fd43ca0b5a86b34877ef2a4afdabd73a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2411693 Commit-Queue: Sam Fortiner <samfort@microsoft.com> Reviewed-by:Philip Rogers <pdr@chromium.org> Cr-Commit-Position: refs/heads/master@{#807955}
Showing
Please register or sign in to comment