Bug 1335806 part 1 - Move the intrinsic size/ratio calculations up a bit (idempotent patch). r=dholbert

MozReview-Commit-ID: 5FWpfyiN0Qa
This commit is contained in:
Mats Palmgren 2017-03-16 15:24:56 +01:00
Родитель 53fd6ce968
Коммит 987c2fde4b
1 изменённых файлов: 37 добавлений и 39 удалений

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

@ -5197,6 +5197,43 @@ nsFrame::ComputeSizeWithIntrinsicDimensions(nsRenderingContext* aRenderingConte
Stretch stretchI = eNoStretch; // stretch behavior in the inline axis
Stretch stretchB = eNoStretch; // stretch behavior in the block axis
const bool isVertical = aWM.IsVertical();
const nsStyleCoord& isizeCoord =
isVertical ? aIntrinsicSize.height : aIntrinsicSize.width;
const nsStyleCoord& bsizeCoord =
isVertical ? aIntrinsicSize.width : aIntrinsicSize.height;
bool hasIntrinsicISize, hasIntrinsicBSize;
nscoord intrinsicISize, intrinsicBSize;
if (isizeCoord.GetUnit() == eStyleUnit_Coord) {
hasIntrinsicISize = true;
intrinsicISize = isizeCoord.GetCoordValue();
if (intrinsicISize < 0)
intrinsicISize = 0;
} else {
NS_ASSERTION(isizeCoord.GetUnit() == eStyleUnit_None,
"unexpected unit");
hasIntrinsicISize = false;
intrinsicISize = 0;
}
if (bsizeCoord.GetUnit() == eStyleUnit_Coord) {
hasIntrinsicBSize = true;
intrinsicBSize = bsizeCoord.GetCoordValue();
if (intrinsicBSize < 0)
intrinsicBSize = 0;
} else {
NS_ASSERTION(bsizeCoord.GetUnit() == eStyleUnit_None,
"unexpected unit");
hasIntrinsicBSize = false;
intrinsicBSize = 0;
}
NS_ASSERTION(aIntrinsicRatio.width >= 0 && aIntrinsicRatio.height >= 0,
"Intrinsic ratio has a negative component!");
LogicalSize logicalRatio(aWM, aIntrinsicRatio);
if (!isAutoISize) {
iSize = ComputeISizeValue(aRenderingContext,
aCBSize.ISize(aWM), boxSizingAdjust.ISize(aWM),
@ -5316,48 +5353,9 @@ nsFrame::ComputeSizeWithIntrinsicDimensions(nsRenderingContext* aRenderingConte
minBSize = 0;
}
// Resolve percentage intrinsic iSize/bSize as necessary:
NS_ASSERTION(aCBSize.ISize(aWM) != NS_UNCONSTRAINEDSIZE,
"Our containing block must not have unconstrained inline-size!");
const bool isVertical = aWM.IsVertical();
const nsStyleCoord& isizeCoord =
isVertical ? aIntrinsicSize.height : aIntrinsicSize.width;
const nsStyleCoord& bsizeCoord =
isVertical ? aIntrinsicSize.width : aIntrinsicSize.height;
bool hasIntrinsicISize, hasIntrinsicBSize;
nscoord intrinsicISize, intrinsicBSize;
if (isizeCoord.GetUnit() == eStyleUnit_Coord) {
hasIntrinsicISize = true;
intrinsicISize = isizeCoord.GetCoordValue();
if (intrinsicISize < 0)
intrinsicISize = 0;
} else {
NS_ASSERTION(isizeCoord.GetUnit() == eStyleUnit_None,
"unexpected unit");
hasIntrinsicISize = false;
intrinsicISize = 0;
}
if (bsizeCoord.GetUnit() == eStyleUnit_Coord) {
hasIntrinsicBSize = true;
intrinsicBSize = bsizeCoord.GetCoordValue();
if (intrinsicBSize < 0)
intrinsicBSize = 0;
} else {
NS_ASSERTION(bsizeCoord.GetUnit() == eStyleUnit_None,
"unexpected unit");
hasIntrinsicBSize = false;
intrinsicBSize = 0;
}
NS_ASSERTION(aIntrinsicRatio.width >= 0 && aIntrinsicRatio.height >= 0,
"Intrinsic ratio has a negative component!");
LogicalSize logicalRatio(aWM, aIntrinsicRatio);
// Now calculate the used values for iSize and bSize:
if (isAutoISize) {