Bug 1674450 Part 4 - Remove SizeComputationInput::ComputedPhysicalPadding() that returns a writable-reference. r=layout-reviewers,jfkthame

Differential Revision: https://phabricator.services.mozilla.com/D95367
This commit is contained in:
Ting-Yu Lin 2020-10-31 14:29:50 +00:00
Родитель e1e3ab6157
Коммит d151cd5349
4 изменённых файлов: 20 добавлений и 11 удалений

Просмотреть файл

@ -807,7 +807,8 @@ static bool RecomputePosition(nsIFrame* aFrame) {
cbReflowInput.emplace(cbFrame->PresContext(), cbFrame, rc, cbSize);
cbReflowInput->SetComputedLogicalMargin(
cbWM, cbFrame->GetLogicalUsedMargin(cbWM));
cbReflowInput->ComputedPhysicalPadding() = cbFrame->GetUsedPadding();
cbReflowInput->SetComputedLogicalPadding(
cbWM, cbFrame->GetLogicalUsedPadding(cbWM));
cbReflowInput->ComputedPhysicalBorderPadding() =
cbFrame->GetUsedBorderAndPadding();
parentReflowInput.mCBReflowInput = cbReflowInput.ptr();
@ -820,7 +821,8 @@ static bool RecomputePosition(nsIFrame* aFrame) {
parentReflowInput.SetComputedBSize(std::max(parentSize.BSize(parentWM), 0));
parentReflowInput.SetComputedLogicalMargin(parentWM, LogicalMargin(parentWM));
parentReflowInput.ComputedPhysicalPadding() = parentFrame->GetUsedPadding();
parentReflowInput.SetComputedLogicalPadding(
parentWM, parentFrame->GetLogicalUsedPadding(parentWM));
parentReflowInput.ComputedPhysicalBorderPadding() =
parentFrame->GetUsedBorderAndPadding();
LogicalSize availSize = parentSize.ConvertTo(frameWM, parentWM);

Просмотреть файл

@ -2414,14 +2414,15 @@ void SizeComputationInput::InitOffsets(WritingMode aCBWM, nscoord aPercentBasis,
if (isThemed && presContext->Theme()->GetWidgetPadding(
presContext->DeviceContext(), mFrame,
disp->EffectiveAppearance(), &widgetPadding)) {
ComputedPhysicalPadding() = LayoutDevicePixel::ToAppUnits(
const nsMargin padding = LayoutDevicePixel::ToAppUnits(
widgetPadding, presContext->AppUnitsPerDevPixel());
SetComputedLogicalPadding(wm, LogicalMargin(wm, padding));
needPaddingProp = false;
} else if (SVGUtils::IsInSVGTextSubtree(mFrame)) {
ComputedPhysicalPadding().SizeTo(0, 0, 0, 0);
SetComputedLogicalPadding(wm, LogicalMargin(wm));
needPaddingProp = false;
} else if (aPadding) { // padding is an input arg
ComputedPhysicalPadding() = *aPadding;
SetComputedLogicalPadding(wm, LogicalMargin(wm, *aPadding));
needPaddingProp = mFrame->StylePadding()->IsWidthDependent() ||
mFrame->HasAnyStateBits(NS_FRAME_REFLOW_ROOT |
NS_FRAME_DYNAMIC_REFLOW_ROOT);
@ -2483,7 +2484,7 @@ void SizeComputationInput::InitOffsets(WritingMode aCBWM, nscoord aPercentBasis,
// only part of their border. We need to do this here before we
// try to do anything like handling 'auto' widths,
// 'box-sizing', or 'auto' margins.
ComputedPhysicalPadding().SizeTo(0, 0, 0, 0);
SetComputedLogicalPadding(wm, LogicalMargin(wm));
SetComputedLogicalBorderPadding(
tableFrame->GetIncludedOuterBCBorder(mWritingMode));
}
@ -2497,7 +2498,7 @@ void SizeComputationInput::InitOffsets(WritingMode aCBWM, nscoord aPercentBasis,
// any padding or border.
nsSize size(mFrame->GetSize());
if (size.width == 0 || size.height == 0) {
ComputedPhysicalPadding().SizeTo(0, 0, 0, 0);
SetComputedLogicalPadding(wm, LogicalMargin(wm));
ComputedPhysicalBorderPadding().SizeTo(0, 0, 0, 0);
}
}
@ -2792,14 +2793,15 @@ bool SizeComputationInput::ComputePadding(WritingMode aCBWM,
LayoutFrameType aFrameType) {
// If style can provide us the padding directly, then use it.
const nsStylePadding* stylePadding = mFrame->StylePadding();
bool isCBDependent = !stylePadding->GetPadding(ComputedPhysicalPadding());
nsMargin padding;
bool isCBDependent = !stylePadding->GetPadding(padding);
// a table row/col group, row/col doesn't have padding
// XXXldb Neither do border-collapse tables.
if (LayoutFrameType::TableRowGroup == aFrameType ||
LayoutFrameType::TableColGroup == aFrameType ||
LayoutFrameType::TableRow == aFrameType ||
LayoutFrameType::TableCol == aFrameType) {
ComputedPhysicalPadding().SizeTo(0, 0, 0, 0);
SetComputedLogicalPadding(mWritingMode, LogicalMargin(mWritingMode));
} else if (isCBDependent) {
// We have to compute the value. This calculation is performed
// according to the writing mode of the containing block
@ -2824,6 +2826,9 @@ bool SizeComputationInput::ComputePadding(WritingMode aCBWM,
aPercentBasis, stylePadding->mPadding.GetBEnd(aCBWM)));
SetComputedLogicalPadding(aCBWM, p);
} else {
SetComputedLogicalPadding(mWritingMode,
LogicalMargin(mWritingMode, padding));
}
return isCBDependent;
}

Просмотреть файл

@ -126,7 +126,6 @@ struct SizeComputationInput {
// We may need to eliminate the (few) users of these writable-reference
// accessors as part of migrating to logical coordinates.
nsMargin& ComputedPhysicalBorderPadding() { return mComputedBorderPadding; }
nsMargin& ComputedPhysicalPadding() { return mComputedPadding; }
LogicalMargin ComputedLogicalMargin() const {
return LogicalMargin(mWritingMode, mComputedMargin);

Просмотреть файл

@ -10424,7 +10424,10 @@ void nsIFrame::BoxReflow(nsBoxLayoutState& aState, nsPresContext* aPresContext,
parentReflowInput.SetComputedLogicalMargin(parentWM,
LogicalMargin(parentWM));
// XXX use box methods
parentFrame->GetXULPadding(parentReflowInput.ComputedPhysicalPadding());
nsMargin padding;
parentFrame->GetXULPadding(padding);
parentReflowInput.SetComputedLogicalPadding(
parentWM, LogicalMargin(parentWM, padding));
parentFrame->GetXULBorder(
parentReflowInput.ComputedPhysicalBorderPadding());
parentReflowInput.ComputedPhysicalBorderPadding() +=