tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 23ba459f0e6e152794cde6d4ca9b250f88718a90
parent 854dfaf9a5f55afaa2176a5d70e6ea0f8d8e56a6
Author: Jonathan Watt <jwatt@jwatt.org>
Date:   Tue,  9 Dec 2025 00:01:00 +0000

Bug 2004072. Pass a SizeComputationInput to nsIFrame::ComputeSize etc instead of a gfxContext. r=dshin,layout-reviewers,TYLin

Differential Revision: https://phabricator.services.mozilla.com/D275519

Diffstat:
Mlayout/forms/nsCheckboxRadioFrame.cpp | 10+++++-----
Mlayout/forms/nsCheckboxRadioFrame.h | 2+-
Mlayout/generic/ReflowInput.cpp | 11+++++------
Mlayout/generic/nsBackdropFrame.cpp | 10+++++-----
Mlayout/generic/nsBackdropFrame.h | 2+-
Mlayout/generic/nsContainerFrame.cpp | 14+++++++-------
Mlayout/generic/nsContainerFrame.h | 2+-
Mlayout/generic/nsFirstLetterFrame.cpp | 10+++++-----
Mlayout/generic/nsFirstLetterFrame.h | 2+-
Mlayout/generic/nsFlexContainerFrame.cpp | 4++--
Mlayout/generic/nsHTMLCanvasFrame.cpp | 13+++++++------
Mlayout/generic/nsHTMLCanvasFrame.h | 2+-
Mlayout/generic/nsIFrame.cpp | 43+++++++++++++++++++++++--------------------
Mlayout/generic/nsIFrame.h | 7++++---
Mlayout/generic/nsImageFrame.cpp | 17+++++++++--------
Mlayout/generic/nsImageFrame.h | 2+-
Mlayout/generic/nsInlineFrame.cpp | 8++++----
Mlayout/generic/nsInlineFrame.h | 2+-
Mlayout/generic/nsLeafFrame.cpp | 8++++----
Mlayout/generic/nsLeafFrame.h | 2+-
Mlayout/generic/nsRubyBaseContainerFrame.cpp | 8++++----
Mlayout/generic/nsRubyBaseContainerFrame.h | 2+-
Mlayout/generic/nsSubDocumentFrame.cpp | 15++++++++-------
Mlayout/generic/nsSubDocumentFrame.h | 2+-
Mlayout/generic/nsTextFrame.cpp | 8++++----
Mlayout/generic/nsTextFrame.h | 2+-
Mlayout/generic/nsVideoFrame.cpp | 17+++++++++--------
Mlayout/generic/nsVideoFrame.h | 2+-
Mlayout/svg/SVGOuterSVGFrame.cpp | 7++++---
Mlayout/svg/SVGOuterSVGFrame.h | 2+-
Mlayout/tables/nsTableFrame.cpp | 26++++++++++++++------------
Mlayout/tables/nsTableFrame.h | 4++--
Mlayout/tables/nsTableWrapperFrame.cpp | 55+++++++++++++++++++++++++++----------------------------
Mlayout/tables/nsTableWrapperFrame.h | 8++++----
34 files changed, 169 insertions(+), 160 deletions(-)

diff --git a/layout/forms/nsCheckboxRadioFrame.cpp b/layout/forms/nsCheckboxRadioFrame.cpp @@ -50,16 +50,16 @@ nscoord nsCheckboxRadioFrame::IntrinsicISize(const IntrinsicSizeInput& aInput, /* virtual */ LogicalSize nsCheckboxRadioFrame::ComputeAutoSize( - gfxContext* aRC, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { LogicalSize size(aWM, 0, 0); if (!StyleDisplay()->HasAppearance()) { return size; } return nsAtomicContainerFrame::ComputeAutoSize( - aRC, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, + aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); } diff --git a/layout/forms/nsCheckboxRadioFrame.h b/layout/forms/nsCheckboxRadioFrame.h @@ -28,7 +28,7 @@ class nsCheckboxRadioFrame final : public nsAtomicContainerFrame { mozilla::IntrinsicISizeType aType) override; mozilla::LogicalSize ComputeAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/ReflowInput.cpp b/layout/generic/ReflowInput.cpp @@ -1859,7 +1859,7 @@ void ReflowInput::InitAbsoluteConstraints(const ReflowInput* aCBReflowInput, AutoMaybeDisableFontInflation an(mFrame); auto size = mFrame->ComputeSize( - mRenderingContext, wm, aCBSize.ConvertTo(wm, cbwm), + *this, wm, aCBSize.ConvertTo(wm, cbwm), aCBSize.ConvertTo(wm, cbwm).ISize(wm), // XXX or AvailableISize()? ComputedLogicalMargin(wm).Size(wm) + ComputedLogicalOffsets(wm).Size(wm), @@ -2415,11 +2415,10 @@ void ReflowInput::InitConstraints( } } - auto size = - mFrame->ComputeSize(mRenderingContext, wm, cbSize, AvailableISize(), - ComputedLogicalMargin(wm).Size(wm), - ComputedLogicalBorderPadding(wm).Size(wm), - mStyleSizeOverrides, mComputeSizeFlags); + auto size = mFrame->ComputeSize(*this, wm, cbSize, AvailableISize(), + ComputedLogicalMargin(wm).Size(wm), + ComputedLogicalBorderPadding(wm).Size(wm), + mStyleSizeOverrides, mComputeSizeFlags); mComputedSize = size.mLogicalSize; NS_ASSERTION(ComputedISize() >= 0, "Bogus inline-size"); diff --git a/layout/generic/nsBackdropFrame.cpp b/layout/generic/nsBackdropFrame.cpp @@ -48,15 +48,15 @@ void nsBackdropFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, /* virtual */ LogicalSize nsBackdropFrame::ComputeAutoSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { if (IsAbsolutelyPositionedWithDefiniteContainingBlock()) { // Absolutely-positioned backdrop sizes to viewport - i.e. Given a situation // where such backdrop will shown, scrolling the main window will cause // the backdrop to scroll out. - return ComputeAbsolutePosAutoSize(aRenderingContext, aWM, aCBSize, + return ComputeAbsolutePosAutoSize(aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); } diff --git a/layout/generic/nsBackdropFrame.h b/layout/generic/nsBackdropFrame.h @@ -26,7 +26,7 @@ class nsBackdropFrame final : public nsIFrame { virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder, const nsDisplayListSet& aLists) override; mozilla::LogicalSize ComputeAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp @@ -638,14 +638,14 @@ void nsContainerFrame::DoInlinePrefISize(const IntrinsicSizeInput& aInput, /* virtual */ LogicalSize nsContainerFrame::ComputeAutoSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const mozilla::LogicalSize& aBorderPadding, + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { const bool isTableCaption = IsTableCaption(); // Skip table caption, which requires special sizing - see bug 1109571. if (IsAbsolutelyPositionedWithDefiniteContainingBlock() && !isTableCaption) { - return ComputeAbsolutePosAutoSize(aRenderingContext, aWM, aCBSize, + return ComputeAbsolutePosAutoSize(aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); } @@ -653,7 +653,7 @@ LogicalSize nsContainerFrame::ComputeAutoSize( if (aFlags.contains(ComputeSizeFlag::ShrinkWrap)) { // Delegate to nsIFrame::ComputeAutoSize() for computing the shrink-wrapping // size. - result = nsIFrame::ComputeAutoSize(aRenderingContext, aWM, aCBSize, + result = nsIFrame::ComputeAutoSize(aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); } else { @@ -668,8 +668,8 @@ LogicalSize nsContainerFrame::ComputeAutoSize( WritingMode tableWM = GetParent()->GetWritingMode(); const IntrinsicSizeInput input( - aRenderingContext, Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), - Nothing()); + aSizingInput.mRenderingContext, + Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), Nothing()); if (aWM.IsOrthogonalTo(tableWM)) { // For an orthogonal caption on a block-dir side of the table, shrink-wrap // to min-isize. diff --git a/layout/generic/nsContainerFrame.h b/layout/generic/nsContainerFrame.h @@ -203,7 +203,7 @@ class nsContainerFrame : public nsSplittableFrame { * classes derived from nsContainerFrame want. */ virtual mozilla::LogicalSize ComputeAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsFirstLetterFrame.cpp b/layout/generic/nsFirstLetterFrame.cpp @@ -131,17 +131,17 @@ nscoord nsFirstLetterFrame::IntrinsicISize(const IntrinsicSizeInput& aInput, /* virtual */ nsIFrame::SizeComputationResult nsFirstLetterFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { if (GetPrevInFlow()) { // We're wrapping the text *after* the first letter, so behave like an // inline frame. return {LogicalSize(aWM, NS_UNCONSTRAINEDSIZE, NS_UNCONSTRAINEDSIZE), AspectRatioUsage::None}; } - return nsContainerFrame::ComputeSize(aRenderingContext, aWM, aCBSize, + return nsContainerFrame::ComputeSize(aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); } diff --git a/layout/generic/nsFirstLetterFrame.h b/layout/generic/nsFirstLetterFrame.h @@ -44,7 +44,7 @@ class nsFirstLetterFrame : public nsContainerFrame { InlinePrefISizeData* aData) final; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsFlexContainerFrame.cpp b/layout/generic/nsFlexContainerFrame.cpp @@ -1735,8 +1735,8 @@ void nsFlexContainerFrame::ResolveAutoFlexBasisAndMinSize( sizeOverrides.mStyleBSize.emplace(aFlexItem.StyleCrossSize()); } const auto sizeInItemWM = aFlexItem.Frame()->ComputeSize( - aItemReflowInput.mRenderingContext, itemWM, - aItemReflowInput.mContainingBlockSize, availISize, + aItemReflowInput, itemWM, aItemReflowInput.mContainingBlockSize, + availISize, aItemReflowInput.ComputedLogicalMargin(itemWM).Size(itemWM), aItemReflowInput.ComputedLogicalBorderPadding(itemWM).Size(itemWM), sizeOverrides, {ComputeSizeFlag::ShrinkWrap}); diff --git a/layout/generic/nsHTMLCanvasFrame.cpp b/layout/generic/nsHTMLCanvasFrame.cpp @@ -394,13 +394,14 @@ AspectRatio nsHTMLCanvasFrame::GetIntrinsicRatio() const { /* virtual */ nsIFrame::SizeComputationResult nsHTMLCanvasFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { return {ComputeSizeWithIntrinsicDimensions( - aRenderingContext, aWM, GetIntrinsicSize(), GetAspectRatio(), - aCBSize, aMargin, aBorderPadding, aSizeOverrides, aFlags), + aSizingInput.mRenderingContext, aWM, GetIntrinsicSize(), + GetAspectRatio(), aCBSize, aMargin, aBorderPadding, + aSizeOverrides, aFlags), AspectRatioUsage::None}; } diff --git a/layout/generic/nsHTMLCanvasFrame.h b/layout/generic/nsHTMLCanvasFrame.h @@ -54,7 +54,7 @@ class nsHTMLCanvasFrame final : public nsContainerFrame { void UnionChildOverflow(mozilla::OverflowAreas&, bool aAsIfScrolled) override; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp @@ -6669,15 +6669,15 @@ static bool ShouldApplyAutomaticMinimumOnInlineAxis( /* virtual */ nsIFrame::SizeComputationResult nsIFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { MOZ_ASSERT(!GetIntrinsicRatio(), "Please override this method and call " "nsContainerFrame::ComputeSizeWithIntrinsicDimensions instead."); LogicalSize result = - ComputeAutoSize(aRenderingContext, aWM, aCBSize, aAvailableISize, aMargin, + ComputeAutoSize(aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); const nsStylePosition* stylePos = StylePosition(); const nsStyleDisplay* disp = StyleDisplay(); @@ -6768,9 +6768,9 @@ nsIFrame::SizeComputationResult nsIFrame::ComputeSize( const bool shouldComputeISize = !isAutoISize && !isSubgriddedInInlineAxis; if (shouldComputeISize) { auto iSizeResult = - ComputeISizeValue(aRenderingContext, aWM, aCBSize, boxSizingAdjust, - boxSizingToMarginEdgeISize, *styleISize, *styleBSize, - aspectRatio, aFlags); + ComputeISizeValue(aSizingInput.mRenderingContext, aWM, aCBSize, + boxSizingAdjust, boxSizingToMarginEdgeISize, + *styleISize, *styleBSize, aspectRatio, aFlags); result.ISize(aWM) = iSizeResult.mISize; aspectRatioUsage = iSizeResult.mAspectRatioUsage; } else if (MOZ_UNLIKELY(isGridItem) && !IsTrueOverflowContainer()) { @@ -6899,9 +6899,9 @@ nsIFrame::SizeComputationResult nsIFrame::ComputeSize( nscoord maxISize = NS_UNCONSTRAINEDSIZE; if (!maxISizeCoord->IsNone() && !shouldIgnoreMinMaxISize) { maxISize = - ComputeISizeValue(aRenderingContext, aWM, aCBSize, boxSizingAdjust, - boxSizingToMarginEdgeISize, *maxISizeCoord, - *styleBSize, aspectRatio, aFlags) + ComputeISizeValue(aSizingInput.mRenderingContext, aWM, aCBSize, + boxSizingAdjust, boxSizingToMarginEdgeISize, + *maxISizeCoord, *styleBSize, aspectRatio, aFlags) .mISize; result.ISize(aWM) = std::min(maxISize, result.ISize(aWM)); } @@ -6910,16 +6910,17 @@ nsIFrame::SizeComputationResult nsIFrame::ComputeSize( *styleBSize, *minBSizeCoord, *maxBSizeCoord, aCBSize.BSize(aWM), boxSizingAdjust.BSize(aWM)); const IntrinsicSizeInput input( - aRenderingContext, Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), + aSizingInput.mRenderingContext, + Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), Some(LogicalSize(aWM, NS_UNCONSTRAINEDSIZE, bSizeAsPercentageBasis) .ConvertTo(GetWritingMode(), aWM))); const auto minISizeCoord = stylePos->MinISize(aWM, anchorResolutionParams); nscoord minISize; if (!minISizeCoord->IsAuto() && !shouldIgnoreMinMaxISize) { minISize = - ComputeISizeValue(aRenderingContext, aWM, aCBSize, boxSizingAdjust, - boxSizingToMarginEdgeISize, *minISizeCoord, - *styleBSize, aspectRatio, aFlags) + ComputeISizeValue(aSizingInput.mRenderingContext, aWM, aCBSize, + boxSizingAdjust, boxSizingToMarginEdgeISize, + *minISizeCoord, *styleBSize, aspectRatio, aFlags) .mISize; } else if (MOZ_UNLIKELY( aFlags.contains(ComputeSizeFlag::IApplyAutoMinSize))) { @@ -7133,13 +7134,13 @@ nsresult nsIFrame::GetPrefWidthTightBounds(gfxContext* aContext, nscoord* aX, /* virtual */ LogicalSize nsIFrame::ComputeAutoSize( - gfxContext* aRenderingContext, WritingMode aWM, + const SizeComputationInput& aSizingInput, WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { if (IsAbsolutelyPositionedWithDefiniteContainingBlock()) { - return ComputeAbsolutePosAutoSize(aRenderingContext, aWM, aCBSize, + return ComputeAbsolutePosAutoSize(aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); } @@ -7169,7 +7170,8 @@ LogicalSize nsIFrame::ComputeAutoSize( *stylePos->MaxBSize(aWM, anchorResolutionParams), aCBSize.BSize(aWM), contentEdgeToBoxSizing.BSize(aWM)); const IntrinsicSizeInput input( - aRenderingContext, Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), + aSizingInput.mRenderingContext, + Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), Some(LogicalSize(aWM, NS_UNCONSTRAINEDSIZE, bSize) .ConvertTo(GetWritingMode(), aWM))); result.ISize(aWM) = ShrinkISizeToFit(input, availBased, aFlags); @@ -7185,7 +7187,7 @@ bool nsIFrame::IsAbsolutelyPositionedWithDefiniteContainingBlock() const { } LogicalSize nsIFrame::ComputeAbsolutePosAutoSize( - gfxContext* aRenderingContext, WritingMode aWM, + const SizeComputationInput& aSizingInput, WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, @@ -7315,7 +7317,8 @@ LogicalSize nsIFrame::ComputeAbsolutePosAutoSize( aCBSize.BSize(aWM), boxSizingAdjust.BSize(aWM)); const IntrinsicSizeInput input( - aRenderingContext, Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), + aSizingInput.mRenderingContext, + Some(aCBSize.ConvertTo(GetWritingMode(), aWM)), Some(LogicalSize(aWM, NS_UNCONSTRAINEDSIZE, bSize) .ConvertTo(GetWritingMode(), aWM))); result.ISize(aWM) = ShrinkISizeToFit(input, availBased, aFlags); diff --git a/layout/generic/nsIFrame.h b/layout/generic/nsIFrame.h @@ -703,6 +703,7 @@ class nsIFrame : public nsQueryFrame { using Nothing = mozilla::Nothing; using OnNonvisible = mozilla::OnNonvisible; using ReflowInput = mozilla::ReflowInput; + using SizeComputationInput = mozilla::SizeComputationInput; using ReflowOutput = mozilla::ReflowOutput; using Visibility = mozilla::Visibility; using ContentRelevancy = mozilla::ContentRelevancy; @@ -2976,7 +2977,7 @@ class nsIFrame : public nsQueryFrame { AspectRatioUsage mAspectRatioUsage = AspectRatioUsage::None; }; virtual SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, @@ -3010,7 +3011,7 @@ class nsIFrame : public nsQueryFrame { * optimize and return garbage inline-size. */ virtual mozilla::LogicalSize ComputeAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, @@ -3026,7 +3027,7 @@ class nsIFrame : public nsQueryFrame { * [1]: https://drafts.csswg.org/css-position-3/#abspos-auto-size */ mozilla::LogicalSize ComputeAbsolutePosAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsImageFrame.cpp b/layout/generic/nsImageFrame.cpp @@ -1522,15 +1522,16 @@ void nsImageFrame::EnsureIntrinsicSizeAndRatio(bool aConsiderIntrinsicsDirty) { } nsIFrame::SizeComputationResult nsImageFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { EnsureIntrinsicSizeAndRatio(); - return {ComputeSizeWithIntrinsicDimensions( - aRenderingContext, aWM, mIntrinsicSize, GetAspectRatio(), aCBSize, - aMargin, aBorderPadding, aSizeOverrides, aFlags), - AspectRatioUsage::None}; + return { + ComputeSizeWithIntrinsicDimensions( + aSizingInput.mRenderingContext, aWM, mIntrinsicSize, GetAspectRatio(), + aCBSize, aMargin, aBorderPadding, aSizeOverrides, aFlags), + AspectRatioUsage::None}; } Element* nsImageFrame::GetMapElement() const { diff --git a/layout/generic/nsImageFrame.h b/layout/generic/nsImageFrame.h @@ -251,7 +251,7 @@ class nsImageFrame : public nsAtomicContainerFrame, public nsIReflowCallback { } SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsInlineFrame.cpp b/layout/generic/nsInlineFrame.cpp @@ -262,10 +262,10 @@ void nsInlineFrame::AddInlinePrefISize(const IntrinsicSizeInput& aInput, /* virtual */ nsIFrame::SizeComputationResult nsInlineFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { // Inlines and text don't compute size before reflow. return {LogicalSize(aWM, NS_UNCONSTRAINEDSIZE, NS_UNCONSTRAINEDSIZE), AspectRatioUsage::None}; diff --git a/layout/generic/nsInlineFrame.h b/layout/generic/nsInlineFrame.h @@ -67,7 +67,7 @@ class nsInlineFrame : public nsContainerFrame { void AddInlinePrefISize(const mozilla::IntrinsicSizeInput& aInput, InlinePrefISizeData* aData) override; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsLeafFrame.cpp b/layout/generic/nsLeafFrame.cpp @@ -29,10 +29,10 @@ nscoord nsLeafFrame::IntrinsicISize(const IntrinsicSizeInput& aInput, /* virtual */ LogicalSize nsLeafFrame::ComputeAutoSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { const WritingMode wm = GetWritingMode(); IntrinsicSize intrinsicSize = GetIntrinsicSize(); LogicalSize result(wm, intrinsicSize.ISize(wm).valueOr(0), diff --git a/layout/generic/nsLeafFrame.h b/layout/generic/nsLeafFrame.h @@ -30,7 +30,7 @@ class nsLeafFrame : public nsIFrame { * Our auto size is just the intrinsic size. */ mozilla::LogicalSize ComputeAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsRubyBaseContainerFrame.cpp b/layout/generic/nsRubyBaseContainerFrame.cpp @@ -242,10 +242,10 @@ bool nsRubyBaseContainerFrame::CanContinueTextRun() const { return true; } /* virtual */ nsIFrame::SizeComputationResult nsRubyBaseContainerFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { // Ruby base container frame is inline, // hence don't compute size before reflow. return {LogicalSize(aWM, NS_UNCONSTRAINEDSIZE, NS_UNCONSTRAINEDSIZE), diff --git a/layout/generic/nsRubyBaseContainerFrame.h b/layout/generic/nsRubyBaseContainerFrame.h @@ -34,7 +34,7 @@ class nsRubyBaseContainerFrame final : public nsContainerFrame { void AddInlinePrefISize(const mozilla::IntrinsicSizeInput& aInput, InlinePrefISizeData* aData) override; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsSubDocumentFrame.cpp b/layout/generic/nsSubDocumentFrame.cpp @@ -613,13 +613,14 @@ AspectRatio nsSubDocumentFrame::GetIntrinsicRatio() const { /* virtual */ nsIFrame::SizeComputationResult nsSubDocumentFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { return {ComputeSizeWithIntrinsicDimensions( - aRenderingContext, aWM, GetIntrinsicSize(), GetAspectRatio(), - aCBSize, aMargin, aBorderPadding, aSizeOverrides, aFlags), + aSizingInput.mRenderingContext, aWM, GetIntrinsicSize(), + GetAspectRatio(), aCBSize, aMargin, aBorderPadding, + aSizeOverrides, aFlags), AspectRatioUsage::None}; } @@ -693,7 +694,7 @@ bool nsSubDocumentFrame::ReflowFinished() { // (but we should try to do so if we haven't shown it yet). return false; } - RefPtr { fl } -> UpdatePositionAndSize(this); + RefPtr{fl}->UpdatePositionAndSize(this); return false; } diff --git a/layout/generic/nsSubDocumentFrame.h b/layout/generic/nsSubDocumentFrame.h @@ -58,7 +58,7 @@ class nsSubDocumentFrame final : public nsAtomicContainerFrame, const nsPoint& GetExtraOffset() const { return mExtraOffset; } SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp @@ -10112,10 +10112,10 @@ void nsTextFrame::AddInlinePrefISize(const IntrinsicSizeInput& aInput, /* virtual */ nsIFrame::SizeComputationResult nsTextFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { // Inlines and text don't compute size before reflow. return {LogicalSize(aWM, NS_UNCONSTRAINEDSIZE, NS_UNCONSTRAINEDSIZE), AspectRatioUsage::None}; diff --git a/layout/generic/nsTextFrame.h b/layout/generic/nsTextFrame.h @@ -483,7 +483,7 @@ class nsTextFrame : public nsIFrame { void AddInlinePrefISize(const mozilla::IntrinsicSizeInput& aInput, InlinePrefISizeData* aData) override; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/generic/nsVideoFrame.cpp b/layout/generic/nsVideoFrame.cpp @@ -355,19 +355,20 @@ nsresult nsVideoFrame::GetFrameName(nsAString& aResult) const { #endif nsIFrame::SizeComputationResult nsVideoFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { if (!HasVideoElement()) { return nsContainerFrame::ComputeSize( - aRenderingContext, aWM, aCBSize, aAvailableISize, aMargin, - aBorderPadding, aSizeOverrides, aFlags); + aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, + aSizeOverrides, aFlags); } return {ComputeSizeWithIntrinsicDimensions( - aRenderingContext, aWM, GetIntrinsicSize(), GetAspectRatio(), - aCBSize, aMargin, aBorderPadding, aSizeOverrides, aFlags), + aSizingInput.mRenderingContext, aWM, GetIntrinsicSize(), + GetAspectRatio(), aCBSize, aMargin, aBorderPadding, + aSizeOverrides, aFlags), AspectRatioUsage::None}; } diff --git a/layout/generic/nsVideoFrame.h b/layout/generic/nsVideoFrame.h @@ -51,7 +51,7 @@ class nsVideoFrame : public nsContainerFrame, mozilla::IntrinsicSize GetIntrinsicSize() final; mozilla::AspectRatio GetIntrinsicRatio() const final; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/svg/SVGOuterSVGFrame.cpp b/layout/svg/SVGOuterSVGFrame.cpp @@ -265,7 +265,7 @@ AspectRatio SVGOuterSVGFrame::GetIntrinsicRatio() const { /* virtual */ nsIFrame::SizeComputationResult SVGOuterSVGFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWritingMode, + const SizeComputationInput& aSizingInput, WritingMode aWritingMode, const LogicalSize& aCBSize, nscoord aAvailableISize, const LogicalSize& aMargin, const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { @@ -332,8 +332,9 @@ nsIFrame::SizeComputationResult SVGOuterSVGFrame::ComputeSize( } return {ComputeSizeWithIntrinsicDimensions( - aRenderingContext, aWritingMode, intrinsicSize, GetAspectRatio(), - cbSize, aMargin, aBorderPadding, aSizeOverrides, aFlags), + aSizingInput.mRenderingContext, aWritingMode, intrinsicSize, + GetAspectRatio(), cbSize, aMargin, aBorderPadding, aSizeOverrides, + aFlags), AspectRatioUsage::None}; } diff --git a/layout/svg/SVGOuterSVGFrame.h b/layout/svg/SVGOuterSVGFrame.h @@ -52,7 +52,7 @@ class SVGOuterSVGFrame final : public SVGDisplayContainerFrame, AspectRatio GetIntrinsicRatio() const override; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, WritingMode aWritingMode, + const SizeComputationInput& aSizingInput, WritingMode aWritingMode, const LogicalSize& aCBSize, nscoord aAvailableISize, const LogicalSize& aMargin, const LogicalSize& aBorderPadding, const mozilla::StyleSizeOverrides& aSizeOverrides, diff --git a/layout/tables/nsTableFrame.cpp b/layout/tables/nsTableFrame.cpp @@ -1377,16 +1377,16 @@ nsTableFrame::IntrinsicISizeOffsets(nscoord aPercentageBasis) { /* virtual */ nsIFrame::SizeComputationResult nsTableFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { // Only table wrapper calls this method, and it should use our writing mode. MOZ_ASSERT(aWM == GetWritingMode(), "aWM should be the same as our writing mode!"); auto result = nsContainerFrame::ComputeSize( - aRenderingContext, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, + aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); // If our containing block wants to override inner table frame's inline-size @@ -1402,7 +1402,8 @@ nsIFrame::SizeComputationResult nsTableFrame::ComputeSize( AutoMaybeDisableFontInflation an(this); // Tables never shrink below their min inline-size. - const IntrinsicSizeInput input(aRenderingContext, Some(aCBSize), Nothing()); + const IntrinsicSizeInput input(aSizingInput.mRenderingContext, Some(aCBSize), + Nothing()); nscoord minISize = GetMinISize(input); if (minISize > result.mLogicalSize.ISize(aWM)) { result.mLogicalSize.ISize(aWM) = minISize; @@ -1442,15 +1443,16 @@ nscoord nsTableFrame::TableShrinkISizeToFit(gfxContext* aRenderingContext, /* virtual */ LogicalSize nsTableFrame::ComputeAutoSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { // Tables always shrink-wrap. nscoord cbBased = aAvailableISize - aMargin.ISize(aWM) - aBorderPadding.ISize(aWM); - return LogicalSize(aWM, TableShrinkISizeToFit(aRenderingContext, cbBased), - NS_UNCONSTRAINEDSIZE); + return LogicalSize( + aWM, TableShrinkISizeToFit(aSizingInput.mRenderingContext, cbBased), + NS_UNCONSTRAINEDSIZE); } // Return true if aParentReflowInput.frame or any of its ancestors within diff --git a/layout/tables/nsTableFrame.h b/layout/tables/nsTableFrame.h @@ -269,7 +269,7 @@ class nsTableFrame : public nsContainerFrame { nscoord aPercentageBasis = NS_UNCONSTRAINEDSIZE) override; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, @@ -277,7 +277,7 @@ class nsTableFrame : public nsContainerFrame { mozilla::ComputeSizeFlags aFlags) override; mozilla::LogicalSize ComputeAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, diff --git a/layout/tables/nsTableWrapperFrame.cpp b/layout/tables/nsTableWrapperFrame.cpp @@ -218,8 +218,8 @@ nscoord nsTableWrapperFrame::IntrinsicISize(const IntrinsicSizeInput& aInput, } LogicalSize nsTableWrapperFrame::InnerTableShrinkWrapSize( - gfxContext* aRenderingContext, nsTableFrame* aTableFrame, WritingMode aWM, - const LogicalSize& aCBSize, nscoord aAvailableISize, + const SizeComputationInput& aSizingInput, nsTableFrame* aTableFrame, + WritingMode aWM, const LogicalSize& aCBSize, nscoord aAvailableISize, const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) const { MOZ_ASSERT(InnerTableFrame() == aTableFrame); @@ -229,7 +229,7 @@ LogicalSize nsTableWrapperFrame::InnerTableShrinkWrapSize( Maybe<LogicalMargin> collapsePadding; aTableFrame->GetCollapsedBorderPadding(collapseBorder, collapsePadding); - SizeComputationInput input(aTableFrame, aRenderingContext, aWM, + SizeComputationInput input(aTableFrame, aSizingInput.mRenderingContext, aWM, aCBSize.ISize(aWM), collapseBorder, collapsePadding); LogicalSize marginSize(aWM); // Inner table doesn't have any margin @@ -250,11 +250,10 @@ LogicalSize nsTableWrapperFrame::InnerTableShrinkWrapSize( // nsTableFrame::ComputeSize(). StyleSizeOverrides innerOverrides = ComputeSizeOverridesForInnerTable( aTableFrame, aSizeOverrides, bpSize, /* aBSizeOccupiedByCaption = */ 0); - auto size = - aTableFrame - ->ComputeSize(aRenderingContext, aWM, aCBSize, aAvailableISize, - marginSize, bpSize, innerOverrides, aFlags) - .mLogicalSize; + auto size = aTableFrame + ->ComputeSize(input, aWM, aCBSize, aAvailableISize, + marginSize, bpSize, innerOverrides, aFlags) + .mLogicalSize; size.ISize(aWM) += bpSize.ISize(aWM); if (size.BSize(aWM) != NS_UNCONSTRAINEDSIZE) { size.BSize(aWM) += bpSize.BSize(aWM); @@ -263,21 +262,21 @@ LogicalSize nsTableWrapperFrame::InnerTableShrinkWrapSize( } LogicalSize nsTableWrapperFrame::CaptionShrinkWrapSize( - gfxContext* aRenderingContext, nsIFrame* aCaptionFrame, WritingMode aWM, - const LogicalSize& aCBSize, nscoord aAvailableISize, + const SizeComputationInput& aSizingInput, nsIFrame* aCaptionFrame, + WritingMode aWM, const LogicalSize& aCBSize, nscoord aAvailableISize, ComputeSizeFlags aFlags) const { MOZ_ASSERT(aCaptionFrame != mFrames.FirstChild()); AutoMaybeDisableFontInflation an(aCaptionFrame); - SizeComputationInput input(aCaptionFrame, aRenderingContext, aWM, + SizeComputationInput input(aCaptionFrame, aSizingInput.mRenderingContext, aWM, aCBSize.ISize(aWM)); LogicalSize marginSize = input.ComputedLogicalMargin(aWM).Size(aWM); LogicalSize bpSize = input.ComputedLogicalBorderPadding(aWM).Size(aWM); auto size = aCaptionFrame - ->ComputeSize(aRenderingContext, aWM, aCBSize, - aAvailableISize, marginSize, bpSize, {}, aFlags) + ->ComputeSize(input, aWM, aCBSize, aAvailableISize, + marginSize, bpSize, {}, aFlags) .mLogicalSize; size.ISize(aWM) += (marginSize.ISize(aWM) + bpSize.ISize(aWM)); if (size.BSize(aWM) != NS_UNCONSTRAINEDSIZE) { @@ -339,12 +338,12 @@ StyleSizeOverrides nsTableWrapperFrame::ComputeSizeOverridesForInnerTable( /* virtual */ nsIFrame::SizeComputationResult nsTableWrapperFrame::ComputeSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { auto result = nsContainerFrame::ComputeSize( - aRenderingContext, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, + aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, aBorderPadding, aSizeOverrides, aFlags); if (aSizeOverrides.mApplyOverridesVerbatim && @@ -355,8 +354,8 @@ nsIFrame::SizeComputationResult nsTableWrapperFrame::ComputeSize( // and block-size, since we don't inherit those properties from inner table, // and authors can't target them with styling.) auto size = - ComputeAutoSize(aRenderingContext, aWM, aCBSize, aAvailableISize, - aMargin, aBorderPadding, aSizeOverrides, aFlags); + ComputeAutoSize(aSizingInput, aWM, aCBSize, aAvailableISize, aMargin, + aBorderPadding, aSizeOverrides, aFlags); result.mLogicalSize = size; } @@ -365,10 +364,10 @@ nsIFrame::SizeComputationResult nsTableWrapperFrame::ComputeSize( /* virtual */ LogicalSize nsTableWrapperFrame::ComputeAutoSize( - gfxContext* aRenderingContext, WritingMode aWM, const LogicalSize& aCBSize, - nscoord aAvailableISize, const LogicalSize& aMargin, - const LogicalSize& aBorderPadding, const StyleSizeOverrides& aSizeOverrides, - ComputeSizeFlags aFlags) { + const SizeComputationInput& aSizingInput, WritingMode aWM, + const LogicalSize& aCBSize, nscoord aAvailableISize, + const LogicalSize& aMargin, const LogicalSize& aBorderPadding, + const StyleSizeOverrides& aSizeOverrides, ComputeSizeFlags aFlags) { nscoord kidAvailableISize = aAvailableISize - aMargin.ISize(aWM); NS_ASSERTION(aBorderPadding.IsAllZero(), "Table wrapper frames cannot have borders or paddings"); @@ -382,14 +381,14 @@ LogicalSize nsTableWrapperFrame::ComputeAutoSize( // Match the logic in Reflow() that sets aside space for the caption. Maybe<StyleCaptionSide> captionSide = GetCaptionSide(); - const LogicalSize innerTableSize = InnerTableShrinkWrapSize( - aRenderingContext, InnerTableFrame(), aWM, aCBSize, kidAvailableISize, - aSizeOverrides, flags); + const LogicalSize innerTableSize = + InnerTableShrinkWrapSize(aSizingInput, InnerTableFrame(), aWM, aCBSize, + kidAvailableISize, aSizeOverrides, flags); if (!captionSide) { return innerTableSize; } const LogicalSize captionSize = - CaptionShrinkWrapSize(aRenderingContext, GetCaption(), aWM, aCBSize, + CaptionShrinkWrapSize(aSizingInput, GetCaption(), aWM, aCBSize, innerTableSize.ISize(aWM), flags); const nscoord iSize = std::max(innerTableSize.ISize(aWM), captionSize.ISize(aWM)); diff --git a/layout/tables/nsTableWrapperFrame.h b/layout/tables/nsTableWrapperFrame.h @@ -66,7 +66,7 @@ class nsTableWrapperFrame : public nsContainerFrame { mozilla::IntrinsicISizeType aType) override; SizeComputationResult ComputeSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, @@ -74,7 +74,7 @@ class nsTableWrapperFrame : public nsContainerFrame { mozilla::ComputeSizeFlags aFlags) override; mozilla::LogicalSize ComputeAutoSize( - gfxContext* aRenderingContext, mozilla::WritingMode aWM, + const SizeComputationInput& aSizingInput, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::LogicalSize& aMargin, const mozilla::LogicalSize& aBorderPadding, @@ -245,13 +245,13 @@ class nsTableWrapperFrame : public nsContainerFrame { * Note: CaptionShrinkWrapISize doesn't need StyleSizeOverrides parameter. */ mozilla::LogicalSize InnerTableShrinkWrapSize( - gfxContext* aRenderingContext, nsTableFrame* aTableFrame, + const SizeComputationInput& aSizingInput, nsTableFrame* aTableFrame, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, const mozilla::StyleSizeOverrides& aSizeOverrides, mozilla::ComputeSizeFlags aFlag) const; mozilla::LogicalSize CaptionShrinkWrapSize( - gfxContext* aRenderingContext, nsIFrame* aCaptionFrame, + const SizeComputationInput& aSizingInput, nsIFrame* aCaptionFrame, mozilla::WritingMode aWM, const mozilla::LogicalSize& aCBSize, nscoord aAvailableISize, mozilla::ComputeSizeFlags aFlag) const;