Index: Source/core/rendering/RenderReplaced.cpp |
diff --git a/Source/core/rendering/RenderReplaced.cpp b/Source/core/rendering/RenderReplaced.cpp |
index 596957a289d2e26162a9049c00bbd72a0cbbacfc..0e654e3738bf01295176918cbb206e73ffadd3c1 100644 |
--- a/Source/core/rendering/RenderReplaced.cpp |
+++ b/Source/core/rendering/RenderReplaced.cpp |
@@ -314,7 +314,7 @@ LayoutRect RenderReplaced::replacedContentRect(const LayoutSize* overriddenIntri |
{ |
LayoutRect contentRect = contentBoxRect(); |
ObjectFit objectFit = style()->objectFit(); |
- if (objectFit == ObjectFitFill) |
+ if (objectFit == ObjectFitFill && style()->objectPosition() == RenderStyle::initialObjectPosition()) |
return contentRect; |
LayoutSize intrinsicSize = overriddenIntrinsicSize ? *overriddenIntrinsicSize : this->intrinsicSize(); |
@@ -334,13 +334,13 @@ LayoutRect RenderReplaced::replacedContentRect(const LayoutSize* overriddenIntri |
finalRect.setSize(intrinsicSize); |
break; |
case ObjectFitFill: |
+ break; |
+ default: |
ASSERT_NOT_REACHED(); |
} |
- // FIXME: This is where object-position should be taken into account, but since it's not |
- // implemented yet, assume the initial value of "50% 50%". |
- LayoutUnit xOffset = (contentRect.width() - finalRect.width()) / 2; |
- LayoutUnit yOffset = (contentRect.height() - finalRect.height()) / 2; |
+ LayoutUnit xOffset = minimumValueForLength(style()->objectPosition().x(), contentRect.width() - finalRect.width(), view()); |
+ LayoutUnit yOffset = minimumValueForLength(style()->objectPosition().y(), contentRect.height() - finalRect.height(), view()); |
finalRect.move(xOffset, yOffset); |
return finalRect; |