Title: [143289] trunk/Source/WebCore
Revision
143289
Author
[email protected]
Date
2013-02-18 19:38:46 -0800 (Mon, 18 Feb 2013)

Log Message

Encapsulate FloatingObject's constructor inside create
https://bugs.webkit.org/show_bug.cgi?id=110169

Reviewed by Darin Adler.

Added FloatingObject::create and made FloatingObject's constructor private.
Also added RenderBlock::ensureFloatingObjects to help lazily creating FloatingObjects.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::insertFloatingObject):
(WebCore::RenderBlock::addOverhangingFloats):
(WebCore::RenderBlock::addIntrudingFloats):
(WebCore::RenderBlock::ensureFloatingObjects):
(WebCore::RenderBlock::FloatingObjects::create):
(WebCore::RenderBlock::FloatingObjects::FloatingObjects):
* rendering/RenderBlock.h:
(FloatingObjects):
(RenderBlock):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (143288 => 143289)


--- trunk/Source/WebCore/ChangeLog	2013-02-19 03:20:50 UTC (rev 143288)
+++ trunk/Source/WebCore/ChangeLog	2013-02-19 03:38:46 UTC (rev 143289)
@@ -1,3 +1,24 @@
+2013-02-18  Ryosuke Niwa  <[email protected]>
+
+        Encapsulate FloatingObject's constructor inside create
+        https://bugs.webkit.org/show_bug.cgi?id=110169
+
+        Reviewed by Darin Adler.
+
+        Added FloatingObject::create and made FloatingObject's constructor private.
+        Also added RenderBlock::ensureFloatingObjects to help lazily creating FloatingObjects.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::insertFloatingObject):
+        (WebCore::RenderBlock::addOverhangingFloats):
+        (WebCore::RenderBlock::addIntrudingFloats):
+        (WebCore::RenderBlock::ensureFloatingObjects):
+        (WebCore::RenderBlock::FloatingObjects::create):
+        (WebCore::RenderBlock::FloatingObjects::FloatingObjects):
+        * rendering/RenderBlock.h:
+        (FloatingObjects):
+        (RenderBlock):
+
 2013-02-18  Anders Carlsson  <[email protected]>
 
         Add a DefaultHash for RefPtr<SecurityOrigin>

Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (143288 => 143289)


--- trunk/Source/WebCore/rendering/RenderBlock.cpp	2013-02-19 03:20:50 UTC (rev 143288)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp	2013-02-19 03:38:46 UTC (rev 143289)
@@ -3888,7 +3888,7 @@
 
     // Create the list of special objects if we don't aleady have one
     if (!m_floatingObjects)
-        m_floatingObjects = adoptPtr(new FloatingObjects(this, isHorizontalWritingMode()));
+        createFloatingObjects();
     else {
         // Don't insert the object again if it's already in the list
         const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
@@ -4655,8 +4655,7 @@
 
                 // We create the floating object list lazily.
                 if (!m_floatingObjects)
-                    m_floatingObjects = adoptPtr(new FloatingObjects(this, isHorizontalWritingMode()));
-
+                    createFloatingObjects();
                 m_floatingObjects->add(floatingObj);
             }
         } else {
@@ -4728,7 +4727,7 @@
                 
                 // We create the floating object list lazily.
                 if (!m_floatingObjects)
-                    m_floatingObjects = adoptPtr(new FloatingObjects(this, isHorizontalWritingMode()));
+                    createFloatingObjects();
                 m_floatingObjects->add(floatingObj);
             }
         }
@@ -7760,6 +7759,27 @@
     return "RenderBlock";
 }
 
+inline RenderBlock::FloatingObjects::FloatingObjects(const RenderBlock* renderer, bool horizontalWritingMode)
+    : m_placedFloatsTree(UninitializedTree)
+    , m_leftObjectsCount(0)
+    , m_rightObjectsCount(0)
+    , m_horizontalWritingMode(horizontalWritingMode)
+    , m_renderer(renderer)
+{
+}
+
+inline PassOwnPtr<RenderBlock::FloatingObjects> RenderBlock::FloatingObjects::create(const RenderBlock* renderer, bool horizontalWritingMode)
+{
+    return adoptPtr(new FloatingObjects(renderer, horizontalWritingMode));
+}
+
+void RenderBlock::createFloatingObjects()
+{
+    if (m_floatingObjects)
+        return;
+    m_floatingObjects = FloatingObjects::create(this, isHorizontalWritingMode());
+}
+
 inline void RenderBlock::FloatingObjects::clear()
 {
     m_set.clear();

Modified: trunk/Source/WebCore/rendering/RenderBlock.h (143288 => 143289)


--- trunk/Source/WebCore/rendering/RenderBlock.h	2013-02-19 03:20:50 UTC (rev 143288)
+++ trunk/Source/WebCore/rendering/RenderBlock.h	2013-02-19 03:38:46 UTC (rev 143289)
@@ -1139,16 +1139,9 @@
     };
 
     class FloatingObjects {
+        WTF_MAKE_NONCOPYABLE(FloatingObjects); WTF_MAKE_FAST_ALLOCATED;
     public:
-        FloatingObjects(const RenderBlock* renderer, bool horizontalWritingMode)
-            : m_placedFloatsTree(UninitializedTree)
-            , m_leftObjectsCount(0)
-            , m_rightObjectsCount(0)
-            , m_horizontalWritingMode(horizontalWritingMode)
-            , m_renderer(renderer)
-        {
-        }
-
+        static PassOwnPtr<FloatingObjects> create(const RenderBlock*, bool horizontalWritingMode);
         void clear();
         void add(FloatingObject*);
         void remove(FloatingObject*);
@@ -1165,6 +1158,7 @@
             return m_placedFloatsTree; 
         }
     private:
+        FloatingObjects(const RenderBlock*, bool horizontalWritingMode);
         void computePlacedFloatsTree();
         inline void computePlacedFloatsTreeIfNeeded()
         {
@@ -1182,8 +1176,12 @@
         bool m_horizontalWritingMode;
         const RenderBlock* m_renderer;
     };
+
     OwnPtr<FloatingObjects> m_floatingObjects;
 
+    void createFloatingObjects();
+
+
     // Allocated only when some of these fields have non-default values
     struct RenderBlockRareData {
         WTF_MAKE_NONCOPYABLE(RenderBlockRareData); WTF_MAKE_FAST_ALLOCATED;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to