Nothing should return std::unique_ptr<InlineBox>.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Nov 2013 03:30:11 +0000 (03:30 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Nov 2013 03:30:11 +0000 (03:30 +0000)
<https://webkit.org/b/123936>

Made RenderBox, RenderLineBreak and RenderListMarker return tightly
typed InlineElementBoxes instead.

Reviewed by Anders Carlsson.

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

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderBlockLineLayout.cpp
Source/WebCore/rendering/RenderBox.cpp
Source/WebCore/rendering/RenderBox.h
Source/WebCore/rendering/RenderLineBreak.cpp
Source/WebCore/rendering/RenderLineBreak.h
Source/WebCore/rendering/RenderListMarker.cpp
Source/WebCore/rendering/RenderListMarker.h

index e6b8d12..5073e7b 100644 (file)
@@ -1,3 +1,13 @@
+2013-11-06  Andreas Kling  <akling@apple.com>
+
+        Nothing should return std::unique_ptr<InlineBox>.
+        <https://webkit.org/b/123936>
+
+        Made RenderBox, RenderLineBreak and RenderListMarker return tightly
+        typed InlineElementBoxes instead.
+
+        Reviewed by Anders Carlsson.
+
 2013-11-06  Daniel Bates  <dabates@apple.com>
 
         [iOS] Upstream Letterpress effect
index ea6770f..4270d6f 100644 (file)
@@ -27,6 +27,7 @@
 #include "BidiResolver.h"
 #include "FloatingObjects.h"
 #include "Hyphenation.h"
+#include "InlineElementBox.h"
 #include "InlineIterator.h"
 #include "InlineTextBox.h"
 #include "LineInfo.h"
@@ -318,7 +319,7 @@ static inline InlineBox* createInlineBoxForRenderer(RenderObject* obj, bool isRo
 
     if (obj->isLineBreak()) {
         // FIXME: This is terrible. This branch returns an *owned* pointer!
-        InlineBox* inlineBox = toRenderLineBreak(obj)->createInlineBox().release();
+        auto inlineBox = toRenderLineBreak(obj)->createInlineBox().release();
         // We only treat a box as text for a <br> if we are on a line by ourself or in strict mode
         // (Note the use of strict mode. In "almost strict" mode, we don't treat the box for <br> as text.)
         inlineBox->setBehavesLikeText(isOnlyRun || obj->document().inNoQuirksMode() || obj->isLineBreakOpportunity());
index 8e2fd19..55ad854 100644 (file)
@@ -1940,7 +1940,7 @@ LayoutSize RenderBox::offsetFromContainer(RenderObject* o, const LayoutPoint& po
     return offset;
 }
 
-std::unique_ptr<InlineBox> RenderBox::createInlineBox()
+std::unique_ptr<InlineElementBox> RenderBox::createInlineBox()
 {
     return std::make_unique<InlineElementBox>(*this);
 }
index 65f9e44..5993818 100644 (file)
@@ -32,6 +32,7 @@
 
 namespace WebCore {
 
+class InlineElementBox;
 class RenderBlockFlow;
 class RenderBoxRegionInfo;
 class RenderRegion;
@@ -373,7 +374,7 @@ public:
     
     void positionLineBox(InlineBox*);
 
-    virtual std::unique_ptr<InlineBox> createInlineBox();
+    virtual std::unique_ptr<InlineElementBox> createInlineBox();
     void dirtyLineBoxes(bool fullLayout);
 
     // For inline replaced elements, this function returns the inline box that owns us.  Enables
index c2289c9..f4f72ea 100644 (file)
@@ -68,7 +68,7 @@ int RenderLineBreak::baselinePosition(FontBaseline baselineType, bool firstLine,
     return fontMetrics.ascent(baselineType) + (lineHeight(firstLine, direction, linePositionMode) - fontMetrics.height()) / 2;
 }
 
-std::unique_ptr<InlineBox> RenderLineBreak::createInlineBox()
+std::unique_ptr<InlineElementBox> RenderLineBreak::createInlineBox()
 {
     return std::make_unique<InlineElementBox>(*this);
 }
index f55cecb..e5da08b 100644 (file)
@@ -26,6 +26,7 @@
 
 namespace WebCore {
 
+class InlineElementBox;
 class HTMLElement;
 class Position;
 
@@ -39,7 +40,7 @@ public:
 
     virtual bool isWBR() const OVERRIDE { return m_isWBR; }
 
-    std::unique_ptr<InlineBox> createInlineBox();
+    std::unique_ptr<InlineElementBox> createInlineBox();
     InlineBox* inlineBoxWrapper() const { return m_inlineBoxWrapper; }
     void setInlineBoxWrapper(InlineBox*);
     void deleteInlineBoxWrapper();
index 2edb0c5..66dd0ce 100644 (file)
@@ -28,6 +28,7 @@
 #include "Document.h"
 #include "Font.h"
 #include "GraphicsContext.h"
+#include "InlineElementBox.h"
 #include "RenderLayer.h"
 #include "RenderListItem.h"
 #include "RenderView.h"
@@ -1148,7 +1149,7 @@ void RenderListMarker::styleDidChange(StyleDifference diff, const RenderStyle* o
     }
 }
 
-std::unique_ptr<InlineBox> RenderListMarker::createInlineBox()
+std::unique_ptr<InlineElementBox> RenderListMarker::createInlineBox()
 {
     auto box = RenderBox::createInlineBox();
     box->setBehavesLikeText(isText());
index 03a79de..1ffc6d5 100644 (file)
@@ -60,7 +60,7 @@ private:
 
     virtual void imageChanged(WrappedImagePtr, const IntRect* = 0) OVERRIDE;
 
-    virtual std::unique_ptr<InlineBox> createInlineBox() OVERRIDE;
+    virtual std::unique_ptr<InlineElementBox> createInlineBox() OVERRIDE;
 
     virtual LayoutUnit lineHeight(bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const OVERRIDE;
     virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const OVERRIDE;