Title: [153688] trunk/Source/WebCore
Revision
153688
Author
[email protected]
Date
2013-08-03 03:15:12 -0700 (Sat, 03 Aug 2013)

Log Message

RenderBoxModelObject::firstLetterRemainingText should be a RenderTextFragment*.
<http://webkit.org/b/119181>

Reviewed by Sam Weinig.

De-generalize this code a bit since we know that the firstLetterRemainingText() is always
going to be a RenderTextFragment.

* rendering/RenderBoxModelObject.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::firstLetterRemainingText):
(WebCore::RenderBoxModelObject::setFirstLetterRemainingText):

    Make these two deal in RenderTextFragment*.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::updateFirstLetterStyle):

    Tighten up some pointer types so we don't have to cast as much.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (153687 => 153688)


--- trunk/Source/WebCore/ChangeLog	2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/ChangeLog	2013-08-03 10:15:12 UTC (rev 153688)
@@ -1,3 +1,25 @@
+2013-08-03  Andreas Kling  <[email protected]>
+
+        RenderBoxModelObject::firstLetterRemainingText should be a RenderTextFragment*.
+        <http://webkit.org/b/119181>
+
+        Reviewed by Sam Weinig.
+
+        De-generalize this code a bit since we know that the firstLetterRemainingText() is always
+        going to be a RenderTextFragment.
+
+        * rendering/RenderBoxModelObject.h:
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::firstLetterRemainingText):
+        (WebCore::RenderBoxModelObject::setFirstLetterRemainingText):
+
+            Make these two deal in RenderTextFragment*.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::updateFirstLetterStyle):
+
+            Tighten up some pointer types so we don't have to cast as much.
+
 2013-08-02  Gyuyoung Kim  <[email protected]>
 
         Introduce toSVGMaskElement(), and use it

Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (153687 => 153688)


--- trunk/Source/WebCore/rendering/RenderBlock.cpp	2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp	2013-08-03 10:15:12 UTC (rev 153688)
@@ -6750,7 +6750,7 @@
 
     if (Node::diff(firstLetter->style(), pseudoStyle, document()) == Node::Detach) {
         // The first-letter renderer needs to be replaced. Create a new renderer of the right type.
-        RenderObject* newFirstLetter;
+        RenderBoxModelObject* newFirstLetter;
         if (pseudoStyle->display() == INLINE)
             newFirstLetter = RenderInline::createAnonymous(document());
         else
@@ -6766,16 +6766,12 @@
             newFirstLetter->addChild(child, 0);
         }
 
-        RenderTextFragment* remainingText = 0;
         RenderObject* nextSibling = firstLetter->nextSibling();
-        RenderObject* remainingTextObject = toRenderBoxModelObject(firstLetter)->firstLetterRemainingText();
-        if (remainingTextObject && remainingTextObject->isText() && toRenderText(remainingTextObject)->isTextFragment())
-            remainingText = toRenderTextFragment(remainingTextObject);
-        if (remainingText) {
+        if (RenderTextFragment* remainingText = toRenderBoxModelObject(firstLetter)->firstLetterRemainingText()) {
             ASSERT(remainingText->isAnonymous() || remainingText->node()->renderer() == remainingText);
             // Replace the old renderer with the new one.
             remainingText->setFirstLetter(newFirstLetter);
-            toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingText(remainingText);
+            newFirstLetter->setFirstLetterRemainingText(remainingText);
         }
         // To prevent removal of single anonymous block in RenderBlock::removeChild and causing
         // |nextSibling| to go stale, we remove the old first letter using removeChildNode first.

Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (153687 => 153688)


--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2013-08-03 10:15:12 UTC (rev 153688)
@@ -71,7 +71,7 @@
 
 // This HashMap is similar to the continuation map, but connects first-letter
 // renderers to their remaining text fragments.
-typedef HashMap<const RenderBoxModelObject*, RenderObject*> FirstLetterRemainingTextMap;
+typedef HashMap<const RenderBoxModelObject*, RenderTextFragment*> FirstLetterRemainingTextMap;
 static FirstLetterRemainingTextMap* firstLetterRemainingTextMap = 0;
 
 class ImageQualityController {
@@ -2801,14 +2801,14 @@
     }
 }
 
-RenderObject* RenderBoxModelObject::firstLetterRemainingText() const
+RenderTextFragment* RenderBoxModelObject::firstLetterRemainingText() const
 {
     if (!firstLetterRemainingTextMap)
         return 0;
     return firstLetterRemainingTextMap->get(this);
 }
 
-void RenderBoxModelObject::setFirstLetterRemainingText(RenderObject* remainingText)
+void RenderBoxModelObject::setFirstLetterRemainingText(RenderTextFragment* remainingText)
 {
     if (remainingText) {
         if (!firstLetterRemainingTextMap)

Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.h (153687 => 153688)


--- trunk/Source/WebCore/rendering/RenderBoxModelObject.h	2013-08-03 05:11:54 UTC (rev 153687)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.h	2013-08-03 10:15:12 UTC (rev 153688)
@@ -53,6 +53,7 @@
 
 class KeyframeList;
 class InlineFlowBox;
+class RenderTextFragment;
 class StickyPositionViewportConstraints;
 
 // This class is the base for all objects that adhere to the CSS box model as described
@@ -273,8 +274,8 @@
 
 public:
     // For RenderBlocks and RenderInlines with m_style->styleType() == FIRST_LETTER, this tracks their remaining text fragments
-    RenderObject* firstLetterRemainingText() const;
-    void setFirstLetterRemainingText(RenderObject*);
+    RenderTextFragment* firstLetterRemainingText() const;
+    void setFirstLetterRemainingText(RenderTextFragment*);
 
     // These functions are only used internally to manipulate the render tree structure via remove/insert/appendChildNode.
     // Since they are typically called only to move objects around within anonymous blocks (which only have layers in
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to