Title: [159989] trunk/Source/WebCore
Revision
159989
Author
[email protected]
Date
2013-12-02 19:19:08 -0800 (Mon, 02 Dec 2013)

Log Message

Avoid setting style twice for generated image content.
<https://webkit.org/b/125128>

Take care of a FIXME I added in r158097 and avoid redundant work in
ImageContentData::createRenderer().

I changed the inheritance helper RenderImage::setPseudoStyle() into
a new createStyleInheritingFromPseudoStyle() function instead so it
can be used from both PseudoElement and ImageContentData.

Reviewed by Antti Koivisto.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (159988 => 159989)


--- trunk/Source/WebCore/ChangeLog	2013-12-03 02:36:08 UTC (rev 159988)
+++ trunk/Source/WebCore/ChangeLog	2013-12-03 03:19:08 UTC (rev 159989)
@@ -1,3 +1,17 @@
+2013-12-02  Andreas Kling  <[email protected]>
+
+        Avoid setting style twice for generated image content.
+        <https://webkit.org/b/125128>
+
+        Take care of a FIXME I added in r158097 and avoid redundant work in
+        ImageContentData::createRenderer().
+
+        I changed the inheritance helper RenderImage::setPseudoStyle() into
+        a new createStyleInheritingFromPseudoStyle() function instead so it
+        can be used from both PseudoElement and ImageContentData.
+
+        Reviewed by Antti Koivisto.
+
 2013-12-02  Samuel White  <[email protected]>
 
         AX: Add AXUIElementCountForSearchPredicate parameterized attribute.

Modified: trunk/Source/WebCore/dom/PseudoElement.cpp (159988 => 159989)


--- trunk/Source/WebCore/dom/PseudoElement.cpp	2013-12-03 02:36:08 UTC (rev 159988)
+++ trunk/Source/WebCore/dom/PseudoElement.cpp	2013-12-03 03:19:08 UTC (rev 159989)
@@ -114,7 +114,7 @@
         // We only manage the style for the generated content which must be images or text.
         if (!child->isImage())
             continue;
-        toRenderImage(child)->setPseudoStyle(&renderer->style());
+        toRenderImage(*child).setStyle(RenderImage::createStyleInheritingFromPseudoStyle(renderer->style()));
     }
 }
 

Modified: trunk/Source/WebCore/rendering/RenderImage.cpp (159988 => 159989)


--- trunk/Source/WebCore/rendering/RenderImage.cpp	2013-12-03 02:36:08 UTC (rev 159988)
+++ trunk/Source/WebCore/rendering/RenderImage.cpp	2013-12-03 03:19:08 UTC (rev 159989)
@@ -74,17 +74,16 @@
     m_imageResource->shutdown();
 }
 
-
-void RenderImage::setPseudoStyle(PassRefPtr<RenderStyle> pseudoStyle)
+PassRef<RenderStyle> RenderImage::createStyleInheritingFromPseudoStyle(const RenderStyle& pseudoStyle)
 {
-    ASSERT(pseudoStyle->styleType() == BEFORE || pseudoStyle->styleType() == AFTER);
+    ASSERT(pseudoStyle.styleType() == BEFORE || pseudoStyle.styleType() == AFTER);
 
     // Images are special and must inherit the pseudoStyle so the width and height of
     // the pseudo element doesn't change the size of the image. In all other cases we
     // can just share the style.
     auto style = RenderStyle::create();
-    style.get().inheritFrom(pseudoStyle.get());
-    setStyle(std::move(style));
+    style.get().inheritFrom(&pseudoStyle);
+    return style;
 }
 
 void RenderImage::setImageResource(PassOwnPtr<RenderImageResource> imageResource)

Modified: trunk/Source/WebCore/rendering/RenderImage.h (159988 => 159989)


--- trunk/Source/WebCore/rendering/RenderImage.h	2013-12-03 02:36:08 UTC (rev 159988)
+++ trunk/Source/WebCore/rendering/RenderImage.h	2013-12-03 03:19:08 UTC (rev 159989)
@@ -39,8 +39,8 @@
     explicit RenderImage(Document&, PassRef<RenderStyle>);
     virtual ~RenderImage();
 
-    // Set the style of the object if it's generated content.
-    void setPseudoStyle(PassRefPtr<RenderStyle>);
+    // Create a RenderStyle for generated content by inheriting from a pseudo style.
+    static PassRef<RenderStyle> createStyleInheritingFromPseudoStyle(const RenderStyle&);
 
     void setImageResource(PassOwnPtr<RenderImageResource>);
 

Modified: trunk/Source/WebCore/rendering/style/ContentData.cpp (159988 => 159989)


--- trunk/Source/WebCore/rendering/style/ContentData.cpp	2013-12-03 02:36:08 UTC (rev 159988)
+++ trunk/Source/WebCore/rendering/style/ContentData.cpp	2013-12-03 03:19:08 UTC (rev 159989)
@@ -49,9 +49,8 @@
 
 RenderObject* ImageContentData::createRenderer(Document& document, RenderStyle& pseudoStyle) const
 {
-    // FIXME: We should find a way to avoid setting the style twice here.
-    RenderImage* image = new RenderImage(document, pseudoStyle);
-    image->setPseudoStyle(&pseudoStyle);
+    RenderImage* image = new RenderImage(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle));
+    image->initializeStyle();
     image->setAltText(altText());
     if (m_image)
         image->setImageResource(RenderImageResourceStyleImage::create(*m_image));
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to