Title: [154676] trunk/Source
Revision
154676
Author
[email protected]
Date
2013-08-27 05:31:51 -0700 (Tue, 27 Aug 2013)

Log Message

Document's renderer is always a RenderView.
<https://webkit.org/b/120304>

Reviewed by Darin Adler.

Let's enforce this better by storing a RenderView* instead of a plain RenderObject*.
We should switch callers that grab at Document::renderer() to calling renderView()
instead, but that's better done separately.

* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::Document::~Document):
(WebCore::Document::setRenderView):
(WebCore::Document::createRenderTree):
(WebCore::Document::detach):
(WebCore::Document::setInPageCache):
* dom/Document.h:
(WebCore::Document::renderView):
(WebCore::Document::renderer):
* html/parser/HTMLResourcePreloader.cpp:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::setStyle):
* rendering/RenderView.h:
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::updateCurrentTranslate):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (154675 => 154676)


--- trunk/Source/WebCore/ChangeLog	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebCore/ChangeLog	2013-08-27 12:31:51 UTC (rev 154676)
@@ -1,3 +1,31 @@
+2013-08-26  Andreas Kling  <[email protected]>
+
+        Document's renderer is always a RenderView.
+        <https://webkit.org/b/120304>
+
+        Reviewed by Darin Adler.
+
+        Let's enforce this better by storing a RenderView* instead of a plain RenderObject*.
+        We should switch callers that grab at Document::renderer() to calling renderView()
+        instead, but that's better done separately.
+
+        * dom/Document.cpp:
+        (WebCore::Document::Document):
+        (WebCore::Document::~Document):
+        (WebCore::Document::setRenderView):
+        (WebCore::Document::createRenderTree):
+        (WebCore::Document::detach):
+        (WebCore::Document::setInPageCache):
+        * dom/Document.h:
+        (WebCore::Document::renderView):
+        (WebCore::Document::renderer):
+        * html/parser/HTMLResourcePreloader.cpp:
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::setStyle):
+        * rendering/RenderView.h:
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::updateCurrentTranslate):
+
 2013-08-27  Allan Sandfeld Jensen  <[email protected]>
 
         Font's fast code path doesn't handle partial runs correctly when kerning or ligatures are enabled

Modified: trunk/Source/WebCore/dom/Document.cpp (154675 => 154676)


--- trunk/Source/WebCore/dom/Document.cpp	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebCore/dom/Document.cpp	2013-08-27 12:31:51 UTC (rev 154676)
@@ -434,7 +434,7 @@
     , m_xmlVersion(ASCIILiteral("1.0"))
     , m_xmlStandalone(StandaloneUnspecified)
     , m_hasXMLDeclaration(0)
-    , m_savedRenderer(0)
+    , m_savedRenderView(0)
     , m_designMode(inherit)
 #if ENABLE(DASHBOARD_SUPPORT) || ENABLE(DRAGGABLE_REGION)
     , m_hasAnnotatedRegions(false)
@@ -447,7 +447,7 @@
     , m_isViewSource(false)
     , m_sawElementsInKnownNamespaces(false)
     , m_isSrcdocDocument(false)
-    , m_renderer(0)
+    , m_renderView(0)
     , m_eventQueue(DocumentEventQueue::create(this))
     , m_weakFactory(this)
     , m_idAttributeName(idAttr)
@@ -545,7 +545,7 @@
 {
     ASSERT(!renderer());
     ASSERT(!m_inPageCache);
-    ASSERT(!m_savedRenderer);
+    ASSERT(!m_savedRenderView);
     ASSERT(m_ranges.isEmpty());
     ASSERT(!m_styleRecalcTimer.isActive());
     ASSERT(!m_parentTreeScope);
@@ -1963,6 +1963,12 @@
     m_styleResolver.clear();
 }
 
+void Document::setRenderView(RenderView* renderView)
+{
+    m_renderView = renderView;
+    Node::setRenderer(renderView);
+}
+
 void Document::createRenderTree()
 {
     ASSERT(!attached());
@@ -1972,7 +1978,7 @@
     if (!m_renderArena)
         m_renderArena = RenderArena::create();
     
-    setRenderer(new (m_renderArena.get()) RenderView(this));
+    setRenderView(new (m_renderArena.get()) RenderView(this));
 #if USE(ACCELERATED_COMPOSITING)
     renderView()->setIsInWindow(true);
 #endif
@@ -2087,9 +2093,9 @@
 
     unscheduleStyleRecalc();
 
-    if (renderer())
-        renderer()->destroy();
-    setRenderer(0);
+    if (renderView())
+        renderView()->destroy();
+    setRenderView(0);
 
 #if ENABLE(TOUCH_EVENTS)
     if (m_touchEventTargets && m_touchEventTargets->size() && parentDocument())
@@ -3985,8 +3991,8 @@
     Page* page = this->page();
 
     if (flag) {
-        ASSERT(!m_savedRenderer);
-        m_savedRenderer = renderer();
+        ASSERT(!m_savedRenderView);
+        m_savedRenderView = renderView();
         if (v) {
             // FIXME: There is some scrolling related work that needs to happen whenever a page goes into the
             // page cache and similar work that needs to occur when it comes out. This is where we do the work
@@ -4005,10 +4011,10 @@
         }
         m_styleRecalcTimer.stop();
     } else {
-        ASSERT(!renderer() || renderer() == m_savedRenderer);
+        ASSERT(!renderView() || renderView() == m_savedRenderView);
         ASSERT(m_renderArena);
-        setRenderer(m_savedRenderer);
-        m_savedRenderer = 0;
+        setRenderView(m_savedRenderView);
+        m_savedRenderView = 0;
 
         if (childNeedsStyleRecalc())
             scheduleStyleRecalc();

Modified: trunk/Source/WebCore/dom/Document.h (154675 => 154676)


--- trunk/Source/WebCore/dom/Document.h	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebCore/dom/Document.h	2013-08-27 12:31:51 UTC (rev 154676)
@@ -3,7 +3,7 @@
  *           (C) 1999 Antti Koivisto ([email protected])
  *           (C) 2001 Dirk Mueller ([email protected])
  *           (C) 2006 Alexey Proskuryakov ([email protected])
- * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
  * Copyright (C) 2011 Google Inc. All rights reserved.
@@ -537,15 +537,11 @@
 
     // Implemented in RenderView.h to avoid a cyclic header dependency this just
     // returns renderer so callers can avoid verbose casts.
-    RenderView* renderView() const;
+    RenderView* renderView() const { return m_renderView; }
 
+    // FIXME: Remove this, callers that have a Document* should call renderView().
     // Shadow the implementations on Node to provide faster access for documents.
-    RenderObject* renderer() const { return m_renderer; }
-    void setRenderer(RenderObject* renderer)
-    {
-        m_renderer = renderer;
-        Node::setRenderer(renderer);
-    }
+    RenderView* renderer() const { return m_renderView; }
 
     bool renderTreeBeingDestroyed() const { return m_renderTreeBeingDestroyed; }
 
@@ -1199,6 +1195,9 @@
     friend class Node;
     friend class IgnoreDestructiveWriteCountIncrementer;
 
+    void setRenderer(RenderObject*) WTF_DELETED_FUNCTION;
+    void setRenderView(RenderView*);
+
     virtual void createRenderTree();
     virtual void dispose() OVERRIDE;
 
@@ -1416,7 +1415,7 @@
 
     String m_contentLanguage;
 
-    RenderObject* m_savedRenderer;
+    RenderView* m_savedRenderView;
     
     RefPtr<TextResourceDecoder> m_decoder;
 
@@ -1461,7 +1460,7 @@
     bool m_sawElementsInKnownNamespaces;
     bool m_isSrcdocDocument;
 
-    RenderObject* m_renderer;
+    RenderView* m_renderView;
     RefPtr<DocumentEventQueue> m_eventQueue;
 
     WeakPtrFactory<Document> m_weakFactory;

Modified: trunk/Source/WebCore/html/parser/HTMLResourcePreloader.cpp (154675 => 154676)


--- trunk/Source/WebCore/html/parser/HTMLResourcePreloader.cpp	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebCore/html/parser/HTMLResourcePreloader.cpp	2013-08-27 12:31:51 UTC (rev 154676)
@@ -32,6 +32,7 @@
 #include "MediaList.h"
 #include "MediaQueryEvaluator.h"
 #include "RenderObject.h"
+#include "RenderView.h"
 
 namespace WebCore {
 

Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (154675 => 154676)


--- trunk/Source/WebCore/rendering/RenderObject.cpp	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp	2013-08-27 12:31:51 UTC (rev 154676)
@@ -1853,7 +1853,7 @@
     // We need to ensure that view->maximalOutlineSize() is valid for any repaints that happen
     // during styleDidChange (it's used by clippedOverflowRectForRepaint()).
     if (m_style->outlineWidth() > 0 && m_style->outlineSize() > maximalOutlineSize(PaintPhaseOutline))
-        toRenderView(document().renderer())->setMaximalOutlineSize(m_style->outlineSize());
+        view().setMaximalOutlineSize(m_style->outlineSize());
 
     bool doesNotNeedLayout = !m_parent || isText();
 

Modified: trunk/Source/WebCore/rendering/RenderView.h (154675 => 154676)


--- trunk/Source/WebCore/rendering/RenderView.h	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebCore/rendering/RenderView.h	2013-08-27 12:31:51 UTC (rev 154676)
@@ -363,11 +363,6 @@
 // This will catch anyone doing an unnecessary cast.
 void toRenderView(const RenderView*);
 
-ALWAYS_INLINE RenderView* Document::renderView() const
-{
-    return toRenderView(renderer());
-}
-
 // Stack-based class to assist with LayoutState push/pop
 class LayoutStateMaintainer {
     WTF_MAKE_NONCOPYABLE(LayoutStateMaintainer);

Modified: trunk/Source/WebCore/svg/SVGSVGElement.cpp (154675 => 154676)


--- trunk/Source/WebCore/svg/SVGSVGElement.cpp	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebCore/svg/SVGSVGElement.cpp	2013-08-27 12:31:51 UTC (rev 154676)
@@ -44,6 +44,7 @@
 #include "RenderSVGModelObject.h"
 #include "RenderSVGRoot.h"
 #include "RenderSVGViewportContainer.h"
+#include "RenderView.h"
 #include "SMILTimeContainer.h"
 #include "SVGAngle.h"
 #include "SVGElementInstance.h"
@@ -223,8 +224,8 @@
     if (RenderObject* object = renderer())
         object->setNeedsLayout(true);
 
-    if (parentNode() == document() && document()->renderer())
-        document()->renderer()->repaint();
+    if (parentNode() == document() && document()->renderView())
+        document()->renderView()->repaint();
 }
 
 void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString& value)

Modified: trunk/Source/WebKit/mac/WebView/WebFrame.mm (154675 => 154676)


--- trunk/Source/WebKit/mac/WebView/WebFrame.mm	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebKit/mac/WebView/WebFrame.mm	2013-08-27 12:31:51 UTC (rev 154676)
@@ -1194,7 +1194,7 @@
     if (!_private->coreFrame->view()->documentView())
         return [NSArray array];
 
-    RenderView* root = toRenderView(_private->coreFrame->document()->renderer());
+    RenderView* root = _private->coreFrame->document()->renderView();
     if (!root)
         return [NSArray array];
 

Modified: trunk/Source/WebKit/mac/WebView/WebFrameView.mm (154675 => 154676)


--- trunk/Source/WebKit/mac/WebView/WebFrameView.mm	2013-08-27 12:09:32 UTC (rev 154675)
+++ trunk/Source/WebKit/mac/WebView/WebFrameView.mm	2013-08-27 12:31:51 UTC (rev 154676)
@@ -62,6 +62,7 @@
 #import <WebCore/HistoryItem.h>
 #import <WebCore/Page.h>
 #import <WebCore/RenderPart.h>
+#import <WebCore/RenderView.h>
 #import <WebCore/ThreadCheck.h>
 #import <WebCore/WebCoreFrameView.h>
 #import <WebCore/WebCoreView.h>
@@ -571,7 +572,7 @@
     Document* document = coreFrame->document();
     if (!document)
         return YES;
-    RenderObject* renderView = document->renderer();
+    RenderView* renderView = document->renderView();
     if (!renderView)
         return YES;
     return renderView->style()->isHorizontalWritingMode();
@@ -585,7 +586,7 @@
     Document* document = coreFrame->document();
     if (!document)
         return NO;
-    RenderObject* renderView = document->renderer();
+    RenderView* renderView = document->renderView();
     if (!renderView)
         return NO;
     return renderView->style()->isFlippedBlocksWritingMode();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to