Changeset 159989 in webkit


Ignore:
Timestamp:
Dec 2, 2013 7:19:08 PM (10 years ago)
Author:
akling@apple.com
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.

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r159986 r159989  
     12013-12-02  Andreas Kling  <akling@apple.com>
     2
     3        Avoid setting style twice for generated image content.
     4        <https://webkit.org/b/125128>
     5
     6        Take care of a FIXME I added in r158097 and avoid redundant work in
     7        ImageContentData::createRenderer().
     8
     9        I changed the inheritance helper RenderImage::setPseudoStyle() into
     10        a new createStyleInheritingFromPseudoStyle() function instead so it
     11        can be used from both PseudoElement and ImageContentData.
     12
     13        Reviewed by Antti Koivisto.
     14
    1152013-12-02  Samuel White  <samuel_white@apple.com>
    216
  • trunk/Source/WebCore/dom/PseudoElement.cpp

    r158368 r159989  
    115115        if (!child->isImage())
    116116            continue;
    117         toRenderImage(child)->setPseudoStyle(&renderer->style());
     117        toRenderImage(*child).setStyle(RenderImage::createStyleInheritingFromPseudoStyle(renderer->style()));
    118118    }
    119119}
  • trunk/Source/WebCore/rendering/RenderImage.cpp

    r159027 r159989  
    7575}
    7676
    77 
    78 void RenderImage::setPseudoStyle(PassRefPtr<RenderStyle> pseudoStyle)
    79 {
    80     ASSERT(pseudoStyle->styleType() == BEFORE || pseudoStyle->styleType() == AFTER);
     77PassRef<RenderStyle> RenderImage::createStyleInheritingFromPseudoStyle(const RenderStyle& pseudoStyle)
     78{
     79    ASSERT(pseudoStyle.styleType() == BEFORE || pseudoStyle.styleType() == AFTER);
    8180
    8281    // Images are special and must inherit the pseudoStyle so the width and height of
     
    8483    // can just share the style.
    8584    auto style = RenderStyle::create();
    86     style.get().inheritFrom(pseudoStyle.get());
    87     setStyle(std::move(style));
     85    style.get().inheritFrom(&pseudoStyle);
     86    return style;
    8887}
    8988
  • trunk/Source/WebCore/rendering/RenderImage.h

    r159591 r159989  
    4040    virtual ~RenderImage();
    4141
    42     // Set the style of the object if it's generated content.
    43     void setPseudoStyle(PassRefPtr<RenderStyle>);
     42    // Create a RenderStyle for generated content by inheriting from a pseudo style.
     43    static PassRef<RenderStyle> createStyleInheritingFromPseudoStyle(const RenderStyle&);
    4444
    4545    void setImageResource(PassOwnPtr<RenderImageResource>);
  • trunk/Source/WebCore/rendering/style/ContentData.cpp

    r159591 r159989  
    5050RenderObject* ImageContentData::createRenderer(Document& document, RenderStyle& pseudoStyle) const
    5151{
    52     // FIXME: We should find a way to avoid setting the style twice here.
    53     RenderImage* image = new RenderImage(document, pseudoStyle);
    54     image->setPseudoStyle(&pseudoStyle);
     52    RenderImage* image = new RenderImage(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle));
     53    image->initializeStyle();
    5554    image->setAltText(altText());
    5655    if (m_image)
Note: See TracChangeset for help on using the changeset viewer.