Index: sky/engine/core/rendering/RenderBoxModelObject.cpp |
diff --git a/sky/engine/core/rendering/RenderBoxModelObject.cpp b/sky/engine/core/rendering/RenderBoxModelObject.cpp |
index a0322779efeda802034b534e0daa452ed0ba75b8..bfa618e6b6a26455bb09e22fcd6e4ae15180a570 100644 |
--- a/sky/engine/core/rendering/RenderBoxModelObject.cpp |
+++ b/sky/engine/core/rendering/RenderBoxModelObject.cpp |
@@ -119,47 +119,6 @@ bool RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight() const |
return cb->hasAutoHeightOrContainingBlockWithAutoHeight(); |
} |
-bool RenderBoxModelObject::isDocumentElementWithOpaqueBackground() const |
-{ |
- if (!isDocumentElement()) |
- return false; |
- |
- // The background is opaque only if we're the root document, since iframes with |
- // no background in the child document should show the parent's background. |
- // FIXME(sky): This used to check the <body> element and is now probably wrong. |
- if (view()->frameView()) |
- return !view()->frameView()->isTransparent(); |
- |
- return true; |
-} |
- |
-void RenderBoxModelObject::paintRootBackgroundColor(const PaintInfo& paintInfo, const LayoutRect& rect, const Color& bgColor) |
-{ |
- GraphicsContext* context = paintInfo.context; |
- if (rect.isEmpty()) |
- return; |
- |
- ASSERT(isDocumentElement()); |
- |
- IntRect backgroundRect(pixelSnappedIntRect(rect)); |
- backgroundRect.intersect(paintInfo.rect); |
- |
- Color baseColor = view()->frameView()->baseBackgroundColor(); |
- bool shouldClearDocumentBackground = document().settings() && document().settings()->shouldClearDocumentBackground(); |
- CompositeOperator operation = shouldClearDocumentBackground ? CompositeCopy : context->compositeOperation(); |
- |
- // If we have an alpha go ahead and blend with the base background color. |
- if (baseColor.alpha()) { |
- if (bgColor.alpha()) |
- baseColor = baseColor.blend(bgColor); |
- context->fillRect(backgroundRect, baseColor, operation); |
- } else if (bgColor.alpha()) { |
- context->fillRect(backgroundRect, bgColor, operation); |
- } else if (shouldClearDocumentBackground) { |
- context->clearRect(backgroundRect); |
- } |
-} |
- |
LayoutSize RenderBoxModelObject::relativePositionOffset() const |
{ |
LayoutSize offset; |
@@ -371,7 +330,6 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co |
bool hasRoundedBorder = style()->hasBorderRadius() && (includeLeftEdge || includeRightEdge); |
bool clippedWithLocalScrolling = hasOverflowClip() && bgLayer.attachment() == LocalBackgroundAttachment; |
bool isBorderFill = bgLayer.clip() == BorderFillBox; |
- bool isDocumentElementRenderer = this->isDocumentElement(); |
bool isBottomLayer = !bgLayer.next(); |
Color bgColor = color; |
@@ -381,7 +339,7 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co |
bool colorVisible = bgColor.alpha(); |
// Fast path for drawing simple color backgrounds. |
- if (!isDocumentElementRenderer && !clippedWithLocalScrolling && !shouldPaintBackgroundImage && isBorderFill && isBottomLayer) { |
+ if (!clippedWithLocalScrolling && !shouldPaintBackgroundImage && isBorderFill && isBottomLayer) { |
if (!colorVisible) |
return; |
@@ -472,8 +430,7 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co |
if (isBottomLayer) { |
IntRect backgroundRect(pixelSnappedIntRect(scrolledPaintRect)); |
bool boxShadowShouldBeAppliedToBackground = this->boxShadowShouldBeAppliedToBackground(bleedAvoidance, box); |
- bool isOpaqueRoot = (isDocumentElementRenderer && !bgColor.hasAlpha()) || isDocumentElementWithOpaqueBackground(); |
- if (boxShadowShouldBeAppliedToBackground || !shouldPaintBackgroundImage || !bgLayer.hasOpaqueImage(this) || !bgLayer.hasRepeatXY() || (isOpaqueRoot && !toRenderBox(this)->height())) { |
+ if (boxShadowShouldBeAppliedToBackground || !shouldPaintBackgroundImage || !bgLayer.hasOpaqueImage(this) || !bgLayer.hasRepeatXY()) { |
if (!boxShadowShouldBeAppliedToBackground) |
backgroundRect.intersect(paintInfo.rect); |
@@ -481,11 +438,8 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co |
if (boxShadowShouldBeAppliedToBackground) |
applyBoxShadowForBackground(context, this); |
- if (isOpaqueRoot && !skipBaseColor) { |
- paintRootBackgroundColor(paintInfo, rect, bgColor); |
- } else if (bgColor.alpha()) { |
+ if (bgColor.alpha()) |
context->fillRect(backgroundRect, bgColor, context->compositeOperation()); |
- } |
} |
} |
@@ -740,15 +694,7 @@ void RenderBoxModelObject::calculateBackgroundImageGeometry(const RenderLayerMod |
} |
} |
- // The background of the box generated by the root element covers the entire canvas including |
- // its margins. Since those were added in already, we have to factor them out when computing |
- // the background positioning area. |
- if (isDocumentElement()) { |
- positioningAreaSize = pixelSnappedIntSize(toRenderBox(this)->size() - LayoutSize(left + right, top + bottom), toRenderBox(this)->location()); |
- left += marginLeft(); |
- top += marginTop(); |
- } else |
- positioningAreaSize = pixelSnappedIntSize(paintRect.size() - LayoutSize(left + right, top + bottom), paintRect.location()); |
+ positioningAreaSize = pixelSnappedIntSize(paintRect.size() - LayoutSize(left + right, top + bottom), paintRect.location()); |
} else { |
geometry.setHasNonLocalGeometry(); |