| Index: third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp b/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp
|
| index c10a2d255469345531b8a9000d61f34faad35e6f..5de58bf6baff7f948809727fb61ab65e331606cb 100644
|
| --- a/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp
|
| @@ -21,7 +21,7 @@ namespace {
|
| inline LayoutUnit getSpaceBetweenImageTiles(LayoutUnit areaSize, LayoutUnit tileSize)
|
| {
|
| int numberOfTiles = areaSize / tileSize;
|
| - LayoutUnit space = -1;
|
| + LayoutUnit space(-1);
|
|
|
| if (numberOfTiles > 1) {
|
| // Spec doesn't specify rounding, so use the same method as for background-repeat: round.
|
| @@ -63,12 +63,12 @@ LayoutSize calculateFillTileSize(const LayoutBoxModelObject& obj, const FillLaye
|
| Length layerHeight = fillLayer.size().size.height();
|
|
|
| if (layerWidth.isFixed())
|
| - tileSize.setWidth(layerWidth.value());
|
| + tileSize.setWidth(LayoutUnit(layerWidth.value()));
|
| else if (layerWidth.hasPercent())
|
| tileSize.setWidth(valueForLength(layerWidth, positioningAreaSize.width()));
|
|
|
| if (layerHeight.isFixed())
|
| - tileSize.setHeight(layerHeight.value());
|
| + tileSize.setHeight(LayoutUnit(layerHeight.value()));
|
| else if (layerHeight.hasPercent())
|
| tileSize.setHeight(valueForLength(layerHeight, positioningAreaSize.height()));
|
|
|
| @@ -78,14 +78,14 @@ LayoutSize calculateFillTileSize(const LayoutBoxModelObject& obj, const FillLaye
|
| if (imageIntrinsicSize.height()) {
|
| LayoutUnit adjustedWidth = imageIntrinsicSize.width() * tileSize.height() / imageIntrinsicSize.height();
|
| if (imageIntrinsicSize.width() >= 1 && adjustedWidth < 1)
|
| - adjustedWidth = 1;
|
| + adjustedWidth = LayoutUnit(1);
|
| tileSize.setWidth(adjustedWidth);
|
| }
|
| } else if (!layerWidth.isAuto() && layerHeight.isAuto()) {
|
| if (imageIntrinsicSize.width()) {
|
| LayoutUnit adjustedHeight = imageIntrinsicSize.height() * tileSize.width() / imageIntrinsicSize.width();
|
| if (imageIntrinsicSize.height() >= 1 && adjustedHeight < 1)
|
| - adjustedHeight = 1;
|
| + adjustedHeight = LayoutUnit(1);
|
| tileSize.setHeight(adjustedHeight);
|
| }
|
| } else if (layerWidth.isAuto() && layerHeight.isAuto()) {
|
| @@ -107,11 +107,12 @@ LayoutSize calculateFillTileSize(const LayoutBoxModelObject& obj, const FillLaye
|
| case Contain:
|
| case Cover: {
|
| float horizontalScaleFactor = imageIntrinsicSize.width()
|
| - ? positioningAreaSize.width().toFloat() / imageIntrinsicSize.width() : 1;
|
| + ? positioningAreaSize.width().toFloat() / imageIntrinsicSize.width() : 1.0f;
|
| float verticalScaleFactor = imageIntrinsicSize.height()
|
| - ? positioningAreaSize.height().toFloat() / imageIntrinsicSize.height() : 1;
|
| + ? positioningAreaSize.height().toFloat() / imageIntrinsicSize.height() : 1.0f;
|
| float scaleFactor = type == Contain ? std::min(horizontalScaleFactor, verticalScaleFactor) : std::max(horizontalScaleFactor, verticalScaleFactor);
|
| - return LayoutSize(std::max<LayoutUnit>(1, imageIntrinsicSize.width() * scaleFactor), std::max<LayoutUnit>(1, imageIntrinsicSize.height() * scaleFactor));
|
| + return LayoutSize(std::max(1.0f, imageIntrinsicSize.width() * scaleFactor),
|
| + std::max(1.0f, imageIntrinsicSize.height() * scaleFactor));
|
| }
|
| }
|
|
|
| @@ -221,10 +222,10 @@ void BackgroundImageGeometry::calculate(const LayoutBoxModelObject& obj, const L
|
| LayoutUnit bottom;
|
| // Scroll and Local.
|
| if (fillLayer.origin() != BorderFillBox) {
|
| - left = positioningBox.borderLeft();
|
| - right = positioningBox.borderRight();
|
| - top = positioningBox.borderTop();
|
| - bottom = positioningBox.borderBottom();
|
| + left = LayoutUnit(positioningBox.borderLeft());
|
| + right = LayoutUnit(positioningBox.borderRight());
|
| + top = LayoutUnit(positioningBox.borderTop());
|
| + bottom = LayoutUnit(positioningBox.borderBottom());
|
| if (fillLayer.origin() == ContentFillBox) {
|
| left += positioningBox.paddingLeft();
|
| right += positioningBox.paddingRight();
|
| @@ -293,7 +294,8 @@ void BackgroundImageGeometry::calculate(const LayoutBoxModelObject& obj, const L
|
|
|
| setTileSize(fillTileSize);
|
| setImageContainerSize(fillTileSize);
|
| - setPhaseX(tileSize().width() ? tileSize().width() - fmodf((computedXPosition + left), tileSize().width()) : 0.0f);
|
| + setPhaseX(tileSize().width() ? LayoutUnit(tileSize().width() - fmodf((computedXPosition + left), tileSize().width()))
|
| + : LayoutUnit());
|
| setSpaceSize(LayoutSize());
|
| }
|
|
|
| @@ -310,13 +312,15 @@ void BackgroundImageGeometry::calculate(const LayoutBoxModelObject& obj, const L
|
|
|
| setTileSize(fillTileSize);
|
| setImageContainerSize(fillTileSize);
|
| - setPhaseY(tileSize().height() ? tileSize().height() - fmodf((computedYPosition + top), tileSize().height()) : 0.0f);
|
| + setPhaseY(tileSize().height() ? LayoutUnit(tileSize().height() - fmodf((computedYPosition + top), tileSize().height()))
|
| + : LayoutUnit());
|
| setSpaceSize(LayoutSize());
|
| }
|
|
|
| if (backgroundRepeatX == RepeatFill) {
|
| LayoutUnit xOffset = fillLayer.backgroundXOrigin() == RightEdge ? availableWidth - computedXPosition : computedXPosition;
|
| - setPhaseX(tileSize().width() ? tileSize().width() - fmodf((xOffset + left), tileSize().width()) : 0.0f);
|
| + setPhaseX(tileSize().width() ? LayoutUnit(tileSize().width() - fmodf((xOffset + left), tileSize().width()))
|
| + : LayoutUnit());
|
| setSpaceSize(LayoutSize());
|
| } else if (backgroundRepeatX == SpaceFill && fillTileSize.width() > LayoutUnit()) {
|
| LayoutUnit space = getSpaceBetweenImageTiles(positioningAreaSize.width(), tileSize().width());
|
| @@ -325,7 +329,7 @@ void BackgroundImageGeometry::calculate(const LayoutBoxModelObject& obj, const L
|
| if (space >= LayoutUnit()) {
|
| computedXPosition = roundedMinimumValueForLength(Length(), availableWidth);
|
| setSpaceSize(LayoutSize(space, LayoutUnit()));
|
| - setPhaseX(actualWidth ? actualWidth - fmodf((computedXPosition + left), actualWidth) : 0.0f);
|
| + setPhaseX(actualWidth ? LayoutUnit(actualWidth - fmodf((computedXPosition + left), actualWidth)) : LayoutUnit());
|
| } else {
|
| backgroundRepeatX = NoRepeatFill;
|
| }
|
| @@ -338,7 +342,8 @@ void BackgroundImageGeometry::calculate(const LayoutBoxModelObject& obj, const L
|
|
|
| if (backgroundRepeatY == RepeatFill) {
|
| LayoutUnit yOffset = fillLayer.backgroundYOrigin() == BottomEdge ? availableHeight - computedYPosition : computedYPosition;
|
| - setPhaseY(tileSize().height() ? tileSize().height() - fmodf((yOffset + top), tileSize().height()) : 0.0f);
|
| + setPhaseY(tileSize().height() ? LayoutUnit(tileSize().height() - fmodf((yOffset + top), tileSize().height()))
|
| + : LayoutUnit());
|
| setSpaceSize(LayoutSize(spaceSize().width(), LayoutUnit()));
|
| } else if (backgroundRepeatY == SpaceFill && fillTileSize.height() > LayoutUnit()) {
|
| LayoutUnit space = getSpaceBetweenImageTiles(positioningAreaSize.height(), tileSize().height());
|
| @@ -347,7 +352,7 @@ void BackgroundImageGeometry::calculate(const LayoutBoxModelObject& obj, const L
|
| if (space >= LayoutUnit()) {
|
| computedYPosition = roundedMinimumValueForLength(Length(), availableHeight);
|
| setSpaceSize(LayoutSize(spaceSize().width(), space));
|
| - setPhaseY(actualHeight ? actualHeight - fmodf((computedYPosition + top), actualHeight) : 0.0f);
|
| + setPhaseY(actualHeight ? LayoutUnit(actualHeight - fmodf((computedYPosition + top), actualHeight)) : LayoutUnit());
|
| } else {
|
| backgroundRepeatY = NoRepeatFill;
|
| }
|
|
|