| Index: third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.cpp b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| index b92a53a9225c12c13f1826426a96cc250128cba6..5732603d2e78a3e5524e14fcaf20a587c6566c02 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| @@ -451,12 +451,12 @@ LayoutUnit LayoutBox::scrollHeight() const
|
|
|
| LayoutUnit LayoutBox::scrollLeft() const
|
| {
|
| - return hasOverflowClip() ? layer()->scrollableArea()->scrollXOffset() : 0;
|
| + return hasOverflowClip() ? LayoutUnit(layer()->scrollableArea()->scrollXOffset()) : LayoutUnit();
|
| }
|
|
|
| LayoutUnit LayoutBox::scrollTop() const
|
| {
|
| - return hasOverflowClip() ? layer()->scrollableArea()->scrollYOffset() : 0;
|
| + return hasOverflowClip() ? LayoutUnit(layer()->scrollableArea()->scrollYOffset()) : LayoutUnit();
|
| }
|
|
|
| int LayoutBox::pixelSnappedScrollWidth() const
|
| @@ -612,17 +612,17 @@ LayoutUnit LayoutBox::constrainContentBoxLogicalHeightByMinMax(LayoutUnit logica
|
| const ComputedStyle& styleToUse = styleRef();
|
| if (!styleToUse.logicalMaxHeight().isMaxSizeNone()) {
|
| if (styleToUse.logicalMaxHeight().hasPercent() && styleToUse.logicalHeight().hasPercent()) {
|
| - LayoutUnit availableLogicalHeight = logicalHeight / styleToUse.logicalHeight().value() * 100;
|
| + LayoutUnit availableLogicalHeight(logicalHeight / styleToUse.logicalHeight().value() * 100);
|
| logicalHeight = std::min(logicalHeight, valueForLength(styleToUse.logicalMaxHeight(), availableLogicalHeight));
|
| } else {
|
| - LayoutUnit maxHeight = computeContentLogicalHeight(MaxSize, styleToUse.logicalMaxHeight(), LayoutUnit(-1));
|
| + LayoutUnit maxHeight(computeContentLogicalHeight(MaxSize, styleToUse.logicalMaxHeight(), LayoutUnit(-1)));
|
| if (maxHeight != -1)
|
| logicalHeight = std::min(logicalHeight, maxHeight);
|
| }
|
| }
|
|
|
| if (styleToUse.logicalMinHeight().hasPercent() && styleToUse.logicalHeight().hasPercent()) {
|
| - LayoutUnit availableLogicalHeight = logicalHeight / styleToUse.logicalHeight().value() * 100;
|
| + LayoutUnit availableLogicalHeight(logicalHeight / styleToUse.logicalHeight().value() * 100);
|
| logicalHeight = std::max(logicalHeight, valueForLength(styleToUse.logicalMinHeight(), availableLogicalHeight));
|
| } else {
|
| logicalHeight = std::max(logicalHeight, computeContentLogicalHeight(MinSize, styleToUse.logicalMinHeight(), intrinsicContentHeight));
|
| @@ -1145,34 +1145,38 @@ void LayoutBox::clearExtraInlineAndBlockOffests()
|
| gExtraBlockOffsetMap->remove(this);
|
| }
|
|
|
| -LayoutUnit LayoutBox::adjustBorderBoxLogicalWidthForBoxSizing(LayoutUnit width) const
|
| +LayoutUnit LayoutBox::adjustBorderBoxLogicalWidthForBoxSizing(float width) const
|
| {
|
| LayoutUnit bordersPlusPadding = borderAndPaddingLogicalWidth();
|
| + LayoutUnit result(width);
|
| if (style()->boxSizing() == CONTENT_BOX)
|
| - return width + bordersPlusPadding;
|
| - return std::max(width, bordersPlusPadding);
|
| + return result + bordersPlusPadding;
|
| + return std::max(result, bordersPlusPadding);
|
| }
|
|
|
| -LayoutUnit LayoutBox::adjustBorderBoxLogicalHeightForBoxSizing(LayoutUnit height) const
|
| +LayoutUnit LayoutBox::adjustBorderBoxLogicalHeightForBoxSizing(float height) const
|
| {
|
| LayoutUnit bordersPlusPadding = borderAndPaddingLogicalHeight();
|
| + LayoutUnit result(height);
|
| if (style()->boxSizing() == CONTENT_BOX)
|
| - return height + bordersPlusPadding;
|
| - return std::max(height, bordersPlusPadding);
|
| + return result + bordersPlusPadding;
|
| + return std::max(result, bordersPlusPadding);
|
| }
|
|
|
| -LayoutUnit LayoutBox::adjustContentBoxLogicalWidthForBoxSizing(LayoutUnit width) const
|
| +LayoutUnit LayoutBox::adjustContentBoxLogicalWidthForBoxSizing(float width) const
|
| {
|
| + LayoutUnit result(width);
|
| if (style()->boxSizing() == BORDER_BOX)
|
| - width -= borderAndPaddingLogicalWidth();
|
| - return std::max(LayoutUnit(), width);
|
| + result -= borderAndPaddingLogicalWidth();
|
| + return std::max(LayoutUnit(), result);
|
| }
|
|
|
| -LayoutUnit LayoutBox::adjustContentBoxLogicalHeightForBoxSizing(LayoutUnit height) const
|
| +LayoutUnit LayoutBox::adjustContentBoxLogicalHeightForBoxSizing(float height) const
|
| {
|
| + LayoutUnit result(height);
|
| if (style()->boxSizing() == BORDER_BOX)
|
| - height -= borderAndPaddingLogicalHeight();
|
| - return std::max(LayoutUnit(), height);
|
| + result -= borderAndPaddingLogicalHeight();
|
| + return std::max(LayoutUnit(), result);
|
| }
|
|
|
| // Hit Testing
|
| @@ -1650,7 +1654,7 @@ LayoutUnit LayoutBox::perpendicularContainingBlockLogicalHeight() const
|
| }
|
|
|
| // Use the content box logical height as specified by the style.
|
| - return cb->adjustContentBoxLogicalHeightForBoxSizing(logicalHeightLength.value());
|
| + return cb->adjustContentBoxLogicalHeightForBoxSizing(LayoutUnit(logicalHeightLength.value()));
|
| }
|
|
|
| void LayoutBox::mapLocalToAncestor(const LayoutBoxModelObject* ancestor, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed, const PaintInvalidationState* paintInvalidationState) const
|
| @@ -2087,13 +2091,13 @@ void LayoutBox::computeLogicalWidth(LogicalExtentComputedValues& computedValues)
|
| computedValues.m_margins.m_start = minimumValueForLength(styleToUse.marginStart(), containerLogicalWidth);
|
| computedValues.m_margins.m_end = minimumValueForLength(styleToUse.marginEnd(), containerLogicalWidth);
|
| if (treatAsReplaced)
|
| - computedValues.m_extent = std::max<LayoutUnit>(floatValueForLength(logicalWidthLength, 0) + borderAndPaddingLogicalWidth(), minPreferredLogicalWidth());
|
| + computedValues.m_extent = std::max(LayoutUnit(floatValueForLength(logicalWidthLength, 0)) + borderAndPaddingLogicalWidth(), minPreferredLogicalWidth());
|
| return;
|
| }
|
|
|
| // Width calculations
|
| if (treatAsReplaced) {
|
| - computedValues.m_extent = logicalWidthLength.value() + borderAndPaddingLogicalWidth();
|
| + computedValues.m_extent = LayoutUnit(logicalWidthLength.value()) + borderAndPaddingLogicalWidth();
|
| } else if (parent()->isLayoutGrid() && style()->logicalWidth().isAuto() && style()->logicalMinWidth().isAuto() && style()->overflowX() == OVISIBLE && containerLogicalWidth < minPreferredLogicalWidth()) {
|
| // TODO (lajava) Move this logic to the LayoutGrid class.
|
| // Implied minimum size of Grid items.
|
| @@ -2180,7 +2184,7 @@ LayoutUnit LayoutBox::computeLogicalWidthUsing(SizeType widthType, const Length&
|
| {
|
| ASSERT(widthType == MinSize || widthType == MainOrPreferredSize || !logicalWidth.isAuto());
|
| if (widthType == MinSize && logicalWidth.isAuto())
|
| - return adjustBorderBoxLogicalWidthForBoxSizing(LayoutUnit());
|
| + return adjustBorderBoxLogicalWidthForBoxSizing(0);
|
|
|
| if (!logicalWidth.isIntrinsicOrAuto()) {
|
| // FIXME: If the containing block flow is perpendicular to our direction we need to use the available logical height instead.
|
| @@ -2461,7 +2465,7 @@ void LayoutBox::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logica
|
| // been given as an override. Just use that. The value has already been adjusted
|
| // for box-sizing.
|
| ASSERT(h.isFixed());
|
| - heightResult = h.value() + borderAndPaddingLogicalHeight();
|
| + heightResult = LayoutUnit(h.value()) + borderAndPaddingLogicalHeight();
|
| }
|
|
|
| computedValues.m_extent = heightResult;
|
| @@ -2542,7 +2546,7 @@ LayoutUnit LayoutBox::computeContentAndScrollbarLogicalHeightUsing(SizeType heig
|
| return computeIntrinsicLogicalContentHeightUsing(height, intrinsicContentHeight, borderAndPaddingLogicalHeight()) + scrollbarLogicalHeight();
|
| }
|
| if (height.isFixed())
|
| - return height.value();
|
| + return LayoutUnit(height.value());
|
| if (height.hasPercent())
|
| return computePercentageLogicalHeight(height);
|
| return LayoutUnit(-1);
|
| @@ -2631,7 +2635,7 @@ LayoutUnit LayoutBox::computePercentageLogicalHeight(const Length& height) const
|
| includeBorderPadding = true;
|
| }
|
| } else if (cbstyle.logicalHeight().isFixed()) {
|
| - LayoutUnit contentBoxHeight = cb->adjustContentBoxLogicalHeightForBoxSizing(cbstyle.logicalHeight().value());
|
| + LayoutUnit contentBoxHeight = cb->adjustContentBoxLogicalHeightForBoxSizing(LayoutUnit(cbstyle.logicalHeight().value()));
|
| availableHeight = std::max(LayoutUnit(), cb->constrainContentBoxLogicalHeightByMinMax(contentBoxHeight - cb->scrollbarLogicalHeight(), LayoutUnit(-1)));
|
| } else if (cbstyle.logicalHeight().hasPercent() && !isOutOfFlowPositionedWithSpecifiedHeight) {
|
| // We need to recur and compute the percentage height for our containing block.
|
| @@ -3887,7 +3891,7 @@ void LayoutBox::incrementallyInvalidatePaint(const LayoutBoxModelObject& paintIn
|
| LayoutUnit smallerWidth = std::min(oldBorderBoxSize.width(), newBorderBoxSize.width());
|
| LayoutUnit borderTopRightRadiusWidth = valueForLength(style()->borderTopRightRadius().width(), smallerWidth);
|
| LayoutUnit borderBottomRightRadiusWidth = valueForLength(style()->borderBottomRightRadius().width(), smallerWidth);
|
| - LayoutUnit borderWidth = std::max<LayoutUnit>(borderRight(), std::max(borderTopRightRadiusWidth, borderBottomRightRadiusWidth));
|
| + LayoutUnit borderWidth = std::max(LayoutUnit(borderRight()), std::max(borderTopRightRadiusWidth, borderBottomRightRadiusWidth));
|
| LayoutRect rightDeltaRect(positionFromPaintInvalidationBacking.x() + smallerWidth - borderWidth,
|
| positionFromPaintInvalidationBacking.y(),
|
| deltaWidth + borderWidth,
|
| @@ -3901,7 +3905,7 @@ void LayoutBox::incrementallyInvalidatePaint(const LayoutBoxModelObject& paintIn
|
| LayoutUnit smallerHeight = std::min(oldBorderBoxSize.height(), newBorderBoxSize.height());
|
| LayoutUnit borderBottomLeftRadiusHeight = valueForLength(style()->borderBottomLeftRadius().height(), smallerHeight);
|
| LayoutUnit borderBottomRightRadiusHeight = valueForLength(style()->borderBottomRightRadius().height(), smallerHeight);
|
| - LayoutUnit borderHeight = std::max<LayoutUnit>(borderBottom(), std::max(borderBottomLeftRadiusHeight, borderBottomRightRadiusHeight));
|
| + LayoutUnit borderHeight = std::max(LayoutUnit(borderBottom()), std::max(borderBottomLeftRadiusHeight, borderBottomRightRadiusHeight));
|
| LayoutRect bottomDeltaRect(positionFromPaintInvalidationBacking.x(),
|
| positionFromPaintInvalidationBacking.y() + smallerHeight - borderHeight,
|
| std::max(oldBorderBoxSize.width(), newBorderBoxSize.width()),
|
| @@ -3960,10 +3964,10 @@ LayoutRectOutsets LayoutBox::computeVisualEffectOverflowOutsets() const
|
| if (const ShadowList* boxShadow = style()->boxShadow()) {
|
| // FIXME: Use LayoutUnit edge outsets, and then simplify this.
|
| FloatRectOutsets outsets = boxShadow->rectOutsetsIncludingOriginal();
|
| - top = outsets.top();
|
| - right = outsets.right();
|
| - bottom = outsets.bottom();
|
| - left = outsets.left();
|
| + top = LayoutUnit(outsets.top());
|
| + right = LayoutUnit(outsets.right());
|
| + bottom = LayoutUnit(outsets.bottom());
|
| + left = LayoutUnit(outsets.left());
|
| }
|
|
|
| if (style()->hasBorderImageOutsets()) {
|
| @@ -4297,10 +4301,10 @@ LayoutRect LayoutBox::noOverflowRect() const
|
|
|
| const int scrollBarWidth = verticalScrollbarWidth();
|
| const int scrollBarHeight = horizontalScrollbarHeight();
|
| - LayoutUnit left = borderLeft() + (shouldPlaceBlockDirectionScrollbarOnLogicalLeft() ? scrollBarWidth : 0);
|
| - LayoutUnit top = borderTop();
|
| - LayoutUnit right = borderRight();
|
| - LayoutUnit bottom = borderBottom();
|
| + LayoutUnit left(borderLeft() + (shouldPlaceBlockDirectionScrollbarOnLogicalLeft() ? scrollBarWidth : 0));
|
| + LayoutUnit top(borderTop());
|
| + LayoutUnit right(borderRight());
|
| + LayoutUnit bottom(borderBottom());
|
| LayoutRect rect(left, top, size().width() - left - right, size().height() - top - bottom);
|
| flipForWritingMode(rect);
|
| // Subtract space occupied by scrollbars. Order is important here: first flip, then subtract
|
|
|