commit a038c8d2a8355610aa4de7daf2af98d77a4fecd2
parent 968a602d3cf2ee54f5b564c53694139d07693789
Author: Cristina Horotan <chorotan@mozilla.com>
Date: Fri, 9 Jan 2026 19:14:09 +0200
Revert "Bug 2009424 - Make containing block adjustment work for default anchored frames. r=layout-anchor-positioning-reviewers,layout-reviewers,dshin" for causing wpt failures on anchor-scroll-position-try-006.html
This reverts commit d8bd94aa646aa77a24a487be85480a479341d8eb.
Diffstat:
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/layout/generic/AbsoluteContainingBlock.cpp b/layout/generic/AbsoluteContainingBlock.cpp
@@ -1326,7 +1326,6 @@ void AbsoluteContainingBlock::ReflowAbsoluteFrame(
// The current containing block, with ongoing modifications.
// Starts as a local containing block.
nsRect containingBlock = aOriginalContainingBlockRect;
- nsRect scrollableContainingBlock = aOriginalScrollableContainingBlockRect;
const auto defaultAnchorInfo = [&]() -> Maybe<AnchorPosInfo> {
if (!aAnchorPosResolutionCache) {
return Nothing{};
@@ -1342,18 +1341,6 @@ void AbsoluteContainingBlock::ReflowAbsoluteFrame(
containingBlock = aOriginalScrollableContainingBlockRect;
}
- if (ViewportFrame* viewport = do_QueryFrame(aDelegatingFrame)) {
- if (IsSnapshotContainingBlock(aKidFrame)) {
- return ContainingBlockRect{
- dom::ViewTransition::SnapshotContainingBlockRect(
- viewport->PresContext())};
- }
- MOZ_ASSERT(aOriginalScrollableContainingBlockRect ==
- aOriginalContainingBlockRect);
- containingBlock = scrollableContainingBlock =
- viewport->GetContainingBlockAdjustedForScrollbars(aReflowInput);
- }
-
// https://drafts.csswg.org/css-position/#original-cb
// Handle grid-based adjustment first...
if (isGrid) {
@@ -1395,12 +1382,24 @@ void AbsoluteContainingBlock::ReflowAbsoluteFrame(
aAnchorPosResolutionCache->mReferenceData->mScrollCompensatedSides =
GetScrollCompensatedSidesFor(resolvedPositionArea);
return ContainingBlockRect{
- offset, resolvedPositionArea, scrollableContainingBlock,
+ offset, resolvedPositionArea,
+ aOriginalScrollableContainingBlockRect,
// Unscroll the CB by canceling out the previously applied
// scroll offset (See above), the offset will be applied later.
scrolledAnchorCb + offset};
}
- return ContainingBlockRect{scrollableContainingBlock, containingBlock};
+ return ContainingBlockRect{aOriginalScrollableContainingBlockRect,
+ containingBlock};
+ }
+
+ if (ViewportFrame* viewport = do_QueryFrame(aDelegatingFrame)) {
+ if (!IsSnapshotContainingBlock(aKidFrame)) {
+ return ContainingBlockRect{
+ viewport->GetContainingBlockAdjustedForScrollbars(aReflowInput)};
+ }
+ return ContainingBlockRect{
+ dom::ViewTransition::SnapshotContainingBlockRect(
+ viewport->PresContext())};
}
return ContainingBlockRect{containingBlock};
}();
diff --git a/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-007.html.ini b/testing/web-platform/meta/css/css-anchor-position/anchor-scroll-position-try-007.html.ini
@@ -0,0 +1,5 @@
+[anchor-scroll-position-try-007.html]
+ [Should use the third position option with enough space left]
+ expected:
+ if os == "android": PASS
+ FAIL