commit 24d3d930c5d7aaa3e7ed520a1153e2f9c13ff4fa
parent bdf182dee332208b509bb7c9115cc4ff811333ec
Author: Emilio Cobos Álvarez <emilio@crisal.io>
Date: Fri, 12 Dec 2025 13:01:18 +0000
Bug 2005569 - Simplify LazyAncestorHolder. r=layout-anchor-positioning-reviewers,layout-reviewers,dshin
Differential Revision: https://phabricator.services.mozilla.com/D276026
Diffstat:
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/layout/base/AnchorPositioningUtils.cpp b/layout/base/AnchorPositioningUtils.cpp
@@ -320,21 +320,21 @@ bool IsPositionedElementAlsoSkippedWhenAnchorIsSkipped(
return true;
}
-struct LazyAncestorHolder {
+class LazyAncestorHolder {
const nsIFrame* mFrame;
- Maybe<nsTArray<const nsIFrame*>> mAncestors;
-
- explicit LazyAncestorHolder(const nsIFrame* aFrame) : mFrame(aFrame) {}
+ AutoTArray<const nsIFrame*, 8> mAncestors;
+ bool mFilled = false;
+ public:
const nsTArray<const nsIFrame*>& GetAncestors() {
- if (!mAncestors) {
- AutoTArray<const nsIFrame*, 8> ancestors;
- nsLayoutUtils::FillAncestors(mFrame, nullptr, &ancestors);
- mAncestors.emplace(std::move(ancestors));
+ if (!mFilled) {
+ nsLayoutUtils::FillAncestors(mFrame, nullptr, &mAncestors);
+ mFilled = true;
}
-
- return *mAncestors;
+ return mAncestors;
}
+
+ explicit LazyAncestorHolder(const nsIFrame* aFrame) : mFrame(aFrame) {}
};
bool IsAcceptableAnchorElement(