Title: [188164] trunk/Source/WebCore
Revision
188164
Author
[email protected]
Date
2015-08-07 14:30:35 -0700 (Fri, 07 Aug 2015)

Log Message

Replace RenderObject::isRooted() logic with isDescendantOf().
https://bugs.webkit.org/show_bug.cgi?id=147788

Reviewed by Simon Fraser.

And some related cleanups.

No change in functionality.

* page/FrameView.cpp:
(WebCore::FrameView::scheduleRelayoutOfSubtree):
(WebCore::FrameView::extendedBackgroundRectForPainting):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::paintRootBoxFillLayers):
* rendering/RenderElement.cpp:
(WebCore::shouldRepaintForImageAnimation):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::isDescendantOf):
(WebCore::scheduleRelayoutForSubtree):
(WebCore::RenderObject::repaint):
(WebCore::RenderObject::repaintRectangle):
(WebCore::RenderObject::repaintSlowRepaintObject):
(WebCore::RenderObject::isRooted):
* rendering/RenderObject.h:
* rendering/RenderView.cpp:
(WebCore::RenderView::unextendedBackgroundRect):
(WebCore::RenderView::backgroundRect):
* rendering/RenderView.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (188163 => 188164)


--- trunk/Source/WebCore/ChangeLog	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/ChangeLog	2015-08-07 21:30:35 UTC (rev 188164)
@@ -1,5 +1,36 @@
 2015-08-07  Zalan Bujtas  <[email protected]>
 
+        Replace RenderObject::isRooted() logic with isDescendantOf().
+        https://bugs.webkit.org/show_bug.cgi?id=147788
+
+        Reviewed by Simon Fraser.
+
+        And some related cleanups.
+
+        No change in functionality.
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::scheduleRelayoutOfSubtree):
+        (WebCore::FrameView::extendedBackgroundRectForPainting):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::paintRootBoxFillLayers):
+        * rendering/RenderElement.cpp:
+        (WebCore::shouldRepaintForImageAnimation):
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::isDescendantOf):
+        (WebCore::scheduleRelayoutForSubtree):
+        (WebCore::RenderObject::repaint):
+        (WebCore::RenderObject::repaintRectangle):
+        (WebCore::RenderObject::repaintSlowRepaintObject):
+        (WebCore::RenderObject::isRooted):
+        * rendering/RenderObject.h:
+        * rendering/RenderView.cpp:
+        (WebCore::RenderView::unextendedBackgroundRect):
+        (WebCore::RenderView::backgroundRect):
+        * rendering/RenderView.h:
+
+2015-08-07  Zalan Bujtas  <[email protected]>
+
         Subtree layout code should use RenderElement.
         https://bugs.webkit.org/show_bug.cgi?id=147694
 

Modified: trunk/Source/WebCore/page/FrameView.cpp (188163 => 188164)


--- trunk/Source/WebCore/page/FrameView.cpp	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/page/FrameView.cpp	2015-08-07 21:30:35 UTC (rev 188164)
@@ -2581,7 +2581,7 @@
 void FrameView::scheduleRelayoutOfSubtree(RenderElement& newRelayoutRoot)
 {
     ASSERT(renderView());
-    RenderView& renderView = *this->renderView();
+    const RenderView& renderView = *this->renderView();
 
     // Try to catch unnecessary work during render tree teardown.
     ASSERT(!renderView.documentBeingDestroyed());
@@ -2879,7 +2879,7 @@
     if (!renderView)
         return IntRect();
     
-    LayoutRect extendedRect = renderView->unextendedBackgroundRect(renderView);
+    LayoutRect extendedRect = renderView->unextendedBackgroundRect();
     if (!tiledBacking->hasMargins())
         return snappedIntRect(extendedRect);
     

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (188163 => 188164)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2015-08-07 21:30:35 UTC (rev 188164)
@@ -1249,7 +1249,7 @@
     const FillLayer* bgLayer = rootBackgroundRenderer.style().backgroundLayers();
     Color bgColor = rootBackgroundRenderer.style().visitedDependentColor(CSSPropertyBackgroundColor);
 
-    paintFillLayers(paintInfo, bgColor, bgLayer, view().backgroundRect(this), BackgroundBleedNone, CompositeSourceOver, &rootBackgroundRenderer);
+    paintFillLayers(paintInfo, bgColor, bgLayer, view().backgroundRect(), BackgroundBleedNone, CompositeSourceOver, &rootBackgroundRenderer);
 }
 
 BackgroundBleedAvoidance RenderBox::determineBackgroundBleedAvoidance(GraphicsContext* context) const

Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (188163 => 188164)


--- trunk/Source/WebCore/rendering/RenderElement.cpp	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp	2015-08-07 21:30:35 UTC (rev 188164)
@@ -1446,7 +1446,7 @@
         backgroundIsPaintedByRoot = !rootRenderer.hasBackground();
 
     }
-    LayoutRect backgroundPaintingRect = backgroundIsPaintedByRoot ? renderer.view().backgroundRect(&renderer.view()) : renderer.absoluteClippedOverflowRect();
+    LayoutRect backgroundPaintingRect = backgroundIsPaintedByRoot ? renderer.view().backgroundRect() : renderer.absoluteClippedOverflowRect();
     if (!visibleRect.intersects(enclosingIntRect(backgroundPaintingRect)))
         return false;
 

Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (188163 => 188164)


--- trunk/Source/WebCore/rendering/RenderObject.cpp	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp	2015-08-07 21:30:35 UTC (rev 188164)
@@ -141,10 +141,10 @@
     return document().page()->theme();
 }
 
-bool RenderObject::isDescendantOf(const RenderObject* obj) const
+bool RenderObject::isDescendantOf(const RenderObject* ancestor) const
 {
-    for (const RenderObject* r = this; r; r = r->m_parent) {
-        if (r == obj)
+    for (const RenderObject* renderer = this; renderer; renderer = renderer->m_parent) {
+        if (renderer == ancestor)
             return true;
     }
     return false;
@@ -571,13 +571,13 @@
 
 static void scheduleRelayoutForSubtree(RenderElement& renderer)
 {
-    if (!is<RenderView>(renderer)) {
-        if (!renderer.isRooted())
-            return;
-        renderer.view().frameView().scheduleRelayoutOfSubtree(renderer);
+    if (is<RenderView>(renderer)) {
+        downcast<RenderView>(renderer).frameView().scheduleRelayout();
         return;
     }
-    downcast<RenderView>(renderer).frameView().scheduleRelayout();
+
+    if (renderer.isRooted())
+        renderer.view().frameView().scheduleRelayoutOfSubtree(renderer);
 }
 
 void RenderObject::markContainingBlocksForLayout(ScheduleRelayout scheduleRelayout, RenderElement* newRoot)
@@ -1249,61 +1249,58 @@
 void RenderObject::repaint() const
 {
     // Don't repaint if we're unrooted (note that view() still returns the view when unrooted)
-    RenderView* view;
-    if (!isRooted(&view))
+    if (!isRooted())
         return;
 
-    if (view->printing())
-        return; // Don't repaint if we're printing.
+    const RenderView& view = this->view();
+    if (view.printing())
+        return;
 
     RenderLayerModelObject* repaintContainer = containerForRepaint();
-    repaintUsingContainer(repaintContainer ? repaintContainer : view, clippedOverflowRectForRepaint(repaintContainer));
+    repaintUsingContainer(repaintContainer ? repaintContainer : &view, clippedOverflowRectForRepaint(repaintContainer));
 }
 
 void RenderObject::repaintRectangle(const LayoutRect& r, bool shouldClipToLayer) const
 {
     // Don't repaint if we're unrooted (note that view() still returns the view when unrooted)
-    RenderView* view;
-    if (!isRooted(&view))
+    if (!isRooted())
         return;
 
-    if (view->printing())
-        return; // Don't repaint if we're printing.
+    const RenderView& view = this->view();
+    if (view.printing())
+        return;
 
     LayoutRect dirtyRect(r);
-
     // FIXME: layoutDelta needs to be applied in parts before/after transforms and
     // repaint containers. https://bugs.webkit.org/show_bug.cgi?id=23308
-    dirtyRect.move(view->layoutDelta());
+    dirtyRect.move(view.layoutDelta());
 
     RenderLayerModelObject* repaintContainer = containerForRepaint();
     computeRectForRepaint(repaintContainer, dirtyRect);
-    repaintUsingContainer(repaintContainer ? repaintContainer : view, dirtyRect, shouldClipToLayer);
+    repaintUsingContainer(repaintContainer ? repaintContainer : &view, dirtyRect, shouldClipToLayer);
 }
 
 void RenderObject::repaintSlowRepaintObject() const
 {
     // Don't repaint if we're unrooted (note that view() still returns the view when unrooted)
-    RenderView* view;
-    if (!isRooted(&view))
+    if (!isRooted())
         return;
 
-    // Don't repaint if we're printing.
-    if (view->printing())
+    const RenderView& view = this->view();
+    if (view.printing())
         return;
 
-    RenderLayerModelObject* repaintContainer = containerForRepaint();
+    const RenderLayerModelObject* repaintContainer = containerForRepaint();
     if (!repaintContainer)
-        repaintContainer = view;
+        repaintContainer = &view;
 
     bool shouldClipToLayer = true;
     IntRect repaintRect;
-
     // If this is the root background, we need to check if there is an extended background rect. If
     // there is, then we should not allow painting to clip to the layer size.
     if (isRoot() || isBody()) {
-        shouldClipToLayer = !view->frameView().hasExtendedBackgroundRectForPainting();
-        repaintRect = snappedIntRect(view->backgroundRect(view));
+        shouldClipToLayer = !view.frameView().hasExtendedBackgroundRectForPainting();
+        repaintRect = snappedIntRect(view.backgroundRect());
     } else
         repaintRect = snappedIntRect(clippedOverflowRectForRepaint(repaintContainer));
 
@@ -1764,19 +1761,9 @@
     return LayoutRect();
 }
 
-bool RenderObject::isRooted(RenderView** view) const
+bool RenderObject::isRooted() const
 {
-    const RenderObject* renderer = this;
-    while (renderer->parent())
-        renderer = renderer->parent();
-
-    if (!is<RenderView>(*renderer))
-        return false;
-
-    if (view)
-        *view = const_cast<RenderView*>(downcast<RenderView>(renderer));
-
-    return true;
+    return isDescendantOf(&view());
 }
 
 RespectImageOrientationEnum RenderObject::shouldRespectImageOrientation() const

Modified: trunk/Source/WebCore/rendering/RenderObject.h (188163 => 188164)


--- trunk/Source/WebCore/rendering/RenderObject.h	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/rendering/RenderObject.h	2015-08-07 21:30:35 UTC (rev 188164)
@@ -568,8 +568,8 @@
 
     RenderView& view() const { return *document().renderView(); };
 
-    // Returns true if this renderer is rooted, and optionally returns the hosting view (the root of the hierarchy).
-    bool isRooted(RenderView** = nullptr) const;
+    // Returns true if this renderer is rooted.
+    bool isRooted() const;
 
     Node* node() const { return isAnonymous() ? nullptr : &m_node; }
     Node* nonPseudoNode() const { return isPseudoElement() ? nullptr : node(); }

Modified: trunk/Source/WebCore/rendering/RenderView.cpp (188163 => 188164)


--- trunk/Source/WebCore/rendering/RenderView.cpp	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/rendering/RenderView.cpp	2015-08-07 21:30:35 UTC (rev 188164)
@@ -1162,19 +1162,19 @@
     return rootObject->rendererForRootBackground().hasEntirelyFixedBackground();
 }
     
-LayoutRect RenderView::unextendedBackgroundRect(RenderBox*) const
+LayoutRect RenderView::unextendedBackgroundRect() const
 {
     // FIXME: What is this? Need to patch for new columns?
     return unscaledDocumentRect();
 }
     
-LayoutRect RenderView::backgroundRect(RenderBox* backgroundRenderer) const
+LayoutRect RenderView::backgroundRect() const
 {
     // FIXME: New columns care about this?
     if (frameView().hasExtendedBackgroundRectForPainting())
         return frameView().extendedBackgroundRectForPainting();
 
-    return unextendedBackgroundRect(backgroundRenderer);
+    return unextendedBackgroundRect();
 }
 
 IntRect RenderView::documentRect() const

Modified: trunk/Source/WebCore/rendering/RenderView.h (188163 => 188164)


--- trunk/Source/WebCore/rendering/RenderView.h	2015-08-07 21:25:34 UTC (rev 188163)
+++ trunk/Source/WebCore/rendering/RenderView.h	2015-08-07 21:30:35 UTC (rev 188164)
@@ -188,8 +188,8 @@
     WEBCORE_EXPORT bool usesCompositing() const;
 
     WEBCORE_EXPORT IntRect unscaledDocumentRect() const;
-    LayoutRect unextendedBackgroundRect(RenderBox* backgroundRenderer) const;
-    LayoutRect backgroundRect(RenderBox* backgroundRenderer) const;
+    LayoutRect unextendedBackgroundRect() const;
+    LayoutRect backgroundRect() const;
 
     WEBCORE_EXPORT IntRect documentRect() const;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to