RenderWidget doesn't need to cache a FrameView pointer.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 15 Sep 2013 18:12:52 +0000 (18:12 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 15 Sep 2013 18:12:52 +0000 (18:12 +0000)
<https://webkit.org/b/121158>

Reviewed by Antti Koivisto.

The FrameView can be found through RenderObject::view().frameView().
This way also gets you a reference, so no need for null-checking.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@155817 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderEmbeddedObject.cpp
Source/WebCore/rendering/RenderWidget.cpp
Source/WebCore/rendering/RenderWidget.h

index 53756ea..4292606 100644 (file)
@@ -1,3 +1,13 @@
+2013-09-15  Andreas Kling  <akling@apple.com>
+
+        RenderWidget doesn't need to cache a FrameView pointer.
+        <https://webkit.org/b/121158>
+
+        Reviewed by Antti Koivisto.
+
+        The FrameView can be found through RenderObject::view().frameView().
+        This way also gets you a reference, so no need for null-checking.
+
 2013-09-15  Sam Weinig  <sam@webkit.org>
 
         CTTE: Node subclasses should take a Document by reference in their constructor (Part 8)
index 6b5ed6b..20eb4db 100644 (file)
@@ -114,8 +114,7 @@ RenderEmbeddedObject::RenderEmbeddedObject(HTMLFrameOwnerElement& element)
 
 RenderEmbeddedObject::~RenderEmbeddedObject()
 {
-    if (frameView())
-        frameView()->removeEmbeddedObjectToUpdate(*this);
+    view().frameView().removeEmbeddedObjectToUpdate(*this);
 }
 
 RenderEmbeddedObject* RenderEmbeddedObject::createForApplet(HTMLAppletElement& applet)
@@ -411,7 +410,7 @@ bool RenderEmbeddedObject::isReplacementObscured() const
     if (!rootRenderView)
         return true;
 
-    IntRect rootViewRect = frameView()->convertToRootView(pixelSnappedIntRect(rect));
+    IntRect rootViewRect = view().frameView().convertToRootView(pixelSnappedIntRect(rect));
     
     HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::IgnoreClipping | HitTestRequest::DisallowShadowContent | HitTestRequest::AllowChildFrameContent);
     HitTestResult result;
@@ -471,9 +470,9 @@ void RenderEmbeddedObject::layout()
     updateLayerTransform();
 
     bool wasMissingWidget = false;
-    if (!widget() && frameView() && canHaveWidget()) {
+    if (!widget() && canHaveWidget()) {
         wasMissingWidget = true;
-        frameView()->addEmbeddedObjectToUpdate(*this);
+        view().frameView().addEmbeddedObjectToUpdate(*this);
     }
 
     setNeedsLayout(false);
index e18b656..6168d52 100644 (file)
@@ -91,8 +91,6 @@ static void moveWidgetToParentSoon(Widget* child, FrameView* parent)
 RenderWidget::RenderWidget(HTMLFrameOwnerElement& element)
     : RenderReplaced(&element)
     , m_weakPtrFactory(this)
-    , m_widget(0)
-    , m_frameView(element.document().view())
 {
     setInline(false);
 }
@@ -207,7 +205,7 @@ void RenderWidget::setWidget(PassRefPtr<Widget> widget)
                 repaint();
             }
         }
-        moveWidgetToParentSoon(m_widget.get(), m_frameView);
+        moveWidgetToParentSoon(m_widget.get(), &view().frameView());
     }
     // make sure the scrollbars are set correctly for restore
     // ### find better fix
@@ -290,7 +288,7 @@ void RenderWidget::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
     if ((paintInfo.phase == PaintPhaseOutline || paintInfo.phase == PaintPhaseSelfOutline) && hasOutline())
         paintOutline(paintInfo, LayoutRect(adjustedPaintOffset, size()));
 
-    if (!m_frameView || paintInfo.phase != PaintPhaseForeground)
+    if (paintInfo.phase != PaintPhaseForeground)
         return;
 
 #if PLATFORM(MAC)
@@ -358,10 +356,7 @@ void RenderWidget::updateWidgetPosition()
 
 IntRect RenderWidget::windowClipRect() const
 {
-    if (!m_frameView)
-        return IntRect();
-
-    return intersection(m_frameView->contentsToWindow(m_clipRect), m_frameView->windowClipRect());
+    return intersection(view().frameView().contentsToWindow(m_clipRect), view().frameView().windowClipRect());
 }
 
 void RenderWidget::setSelectionState(SelectionState state)
index 4c3bd0d..941d423 100644 (file)
@@ -83,8 +83,6 @@ public:
 protected:
     explicit RenderWidget(HTMLFrameOwnerElement&);
 
-    FrameView* frameView() const { return m_frameView; }
-
     virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OVERRIDE FINAL;
     virtual void layout() OVERRIDE;
     virtual void paint(PaintInfo&, const LayoutPoint&) OVERRIDE;
@@ -112,7 +110,6 @@ private:
 
     WeakPtrFactory<RenderWidget> m_weakPtrFactory;
     RefPtr<Widget> m_widget;
-    FrameView* m_frameView;
     IntRect m_clipRect; // The rectangle needs to remain correct after scrolling, so it is stored in content view coordinates, and not clipped to window.
 };