Diff
Modified: trunk/Source/WebCore/ChangeLog (156309 => 156310)
--- trunk/Source/WebCore/ChangeLog 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/ChangeLog 2013-09-24 00:34:49 UTC (rev 156310)
@@ -1,3 +1,13 @@
+2013-09-23 Andreas Kling <[email protected]>
+
+ Move rendererForRootBackground() to RenderElement.
+ <http://webkit.org/b/121813>
+
+ Reviewed by Antti Koivisto.
+
+ Move this to RenderElement (and make it return one, too) since the
+ document element renderer will always be a RenderElement.
+
2013-09-23 Brady Eidson <[email protected]>
Make the Mac build work with IndexedDB enabled.
Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (156309 => 156310)
--- trunk/Source/WebCore/rendering/RenderBox.cpp 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp 2013-09-24 00:34:49 UTC (rev 156310)
@@ -1123,7 +1123,7 @@
if (paintInfo.skipRootBackground())
return;
- RenderObject* rootBackgroundRenderer = rendererForRootBackground();
+ RenderElement* rootBackgroundRenderer = rendererForRootBackground();
const FillLayer* bgLayer = rootBackgroundRenderer->style()->backgroundLayers();
Color bgColor = rootBackgroundRenderer->style()->visitedDependentColor(CSSPropertyBackgroundColor);
Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (156309 => 156310)
--- trunk/Source/WebCore/rendering/RenderElement.cpp 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp 2013-09-24 00:34:49 UTC (rev 156310)
@@ -27,6 +27,8 @@
#include "AXObjectCache.h"
#include "ContentData.h"
+#include "HTMLElement.h"
+#include "HTMLNames.h"
#include "RenderCounter.h"
#include "RenderDeprecatedFlexibleBox.h"
#include "RenderFlexibleBox.h"
@@ -489,4 +491,21 @@
RenderObject::willBeDestroyed();
}
+RenderElement* RenderElement::rendererForRootBackground()
+{
+ ASSERT(isRoot());
+ if (!hasBackground() && element() && element()->hasTagName(HTMLNames::htmlTag)) {
+ // Locate the <body> element using the DOM. This is easier than trying
+ // to crawl around a render tree with potential :before/:after content and
+ // anonymous blocks created by inline <body> tags etc. We can locate the <body>
+ // render object very easily via the DOM.
+ HTMLElement* body = document().body();
+ RenderElement* bodyObject = (body && body->hasLocalName(HTMLNames::bodyTag)) ? body->renderer() : 0;
+ if (bodyObject)
+ return bodyObject;
+ }
+
+ return this;
}
+
+}
Modified: trunk/Source/WebCore/rendering/RenderElement.h (156309 => 156310)
--- trunk/Source/WebCore/rendering/RenderElement.h 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/rendering/RenderElement.h 2013-09-24 00:34:49 UTC (rev 156310)
@@ -58,6 +58,9 @@
void insertChildInternal(RenderObject*, RenderObject* beforeChild, NotifyChildrenType);
void removeChildInternal(RenderObject*, NotifyChildrenType);
+ // Return the renderer whose background style is used to paint the root background. Should only be called on the renderer for which isRoot() is true.
+ RenderElement* rendererForRootBackground();
+
protected:
explicit RenderElement(Element*);
Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (156309 => 156310)
--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2013-09-24 00:34:49 UTC (rev 156310)
@@ -1389,7 +1389,7 @@
Color RenderLayerBacking::rendererBackgroundColor() const
{
- RenderObject* backgroundRenderer = &renderer();
+ RenderElement* backgroundRenderer = &renderer();
if (backgroundRenderer->isRoot())
backgroundRenderer = backgroundRenderer->rendererForRootBackground();
Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (156309 => 156310)
--- trunk/Source/WebCore/rendering/RenderObject.cpp 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp 2013-09-24 00:34:49 UTC (rev 156310)
@@ -2287,23 +2287,6 @@
return true;
}
-RenderObject* RenderObject::rendererForRootBackground()
-{
- ASSERT(isRoot());
- if (!hasBackground() && node() && node()->hasTagName(HTMLNames::htmlTag)) {
- // Locate the <body> element using the DOM. This is easier than trying
- // to crawl around a render tree with potential :before/:after content and
- // anonymous blocks created by inline <body> tags etc. We can locate the <body>
- // render object very easily via the DOM.
- HTMLElement* body = document().body();
- RenderObject* bodyObject = (body && body->hasLocalName(bodyTag)) ? body->renderer() : 0;
- if (bodyObject)
- return bodyObject;
- }
-
- return this;
-}
-
RespectImageOrientationEnum RenderObject::shouldRespectImageOrientation() const
{
#if USE(CG) || USE(CAIRO) || PLATFORM(BLACKBERRY)
Modified: trunk/Source/WebCore/rendering/RenderObject.h (156309 => 156310)
--- trunk/Source/WebCore/rendering/RenderObject.h 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2013-09-24 00:34:49 UTC (rev 156310)
@@ -962,9 +962,6 @@
return outlineBoundsForRepaint(0);
}
- // Return the renderer whose background style is used to paint the root background. Should only be called on the renderer for which isRoot() is true.
- RenderObject* rendererForRootBackground();
-
RespectImageOrientationEnum shouldRespectImageOrientation() const;
protected:
Modified: trunk/Source/WebCore/rendering/RenderView.cpp (156309 => 156310)
--- trunk/Source/WebCore/rendering/RenderView.cpp 2013-09-24 00:14:13 UTC (rev 156309)
+++ trunk/Source/WebCore/rendering/RenderView.cpp 2013-09-24 00:34:49 UTC (rev 156310)
@@ -440,12 +440,12 @@
paintObject(paintInfo, paintOffset);
}
-static inline bool isComposited(RenderObject* object)
+static inline bool isComposited(RenderElement* object)
{
return object->hasLayer() && toRenderLayerModelObject(object)->layer()->isComposited();
}
-static inline bool rendererObscuresBackground(RenderObject* rootObject)
+static inline bool rendererObscuresBackground(RenderElement* rootObject)
{
if (!rootObject)
return false;
@@ -459,7 +459,7 @@
if (isComposited(rootObject))
return false;
- const RenderObject* rootRenderer = rootObject->rendererForRootBackground();
+ const RenderElement* rootRenderer = rootObject->rendererForRootBackground();
if (rootRenderer->style()->backgroundClip() == TextFillBox)
return false;
@@ -502,8 +502,8 @@
bool rootFillsViewport = false;
bool rootObscuresBackground = false;
- Node* documentElement = document().documentElement();
- if (RenderObject* rootRenderer = documentElement ? documentElement->renderer() : 0) {
+ Element* documentElement = document().documentElement();
+ if (RenderElement* rootRenderer = documentElement ? documentElement->renderer() : 0) {
// The document element's renderer is currently forced to be a block, but may not always be.
RenderBox* rootBox = rootRenderer->isBox() ? toRenderBox(rootRenderer) : 0;
rootFillsViewport = rootBox && !rootBox->x() && !rootBox->y() && rootBox->width() >= width() && rootBox->height() >= height();
@@ -969,11 +969,11 @@
bool RenderView::rootBackgroundIsEntirelyFixed() const
{
- RenderObject* rootObject = document().documentElement() ? document().documentElement()->renderer() : 0;
+ RenderElement* rootObject = document().documentElement() ? document().documentElement()->renderer() : 0;
if (!rootObject)
return false;
- RenderObject* rootRenderer = rootObject->rendererForRootBackground();
+ RenderElement* rootRenderer = rootObject->rendererForRootBackground();
return rootRenderer->hasEntirelyFixedBackground();
}