Changeset 143300 in webkit


Ignore:
Timestamp:
Feb 18, 2013 11:31:43 PM (11 years ago)
Author:
tasak@google.com
Message:

:before/:after pseudo elements do not always apply to the proper element
https://bugs.webkit.org/show_bug.cgi?id=93925

Reviewed by Dimitri Glazkov.

Source/WebCore:

Disable sharing a style with siblings if :after or :before pseudo style
is unique.

Test: fast/css/before-after-pseudo-class.html

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::canShareStyleWithElement):
Added a new condition, hasUniquePseudoStyle.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::hasUniquePseudoStyle):
Added to check whether any pseudo style has unique bit or not.
(WebCore):

  • rendering/style/RenderStyle.h:

LayoutTests:

  • fast/css/before-after-pseudo-class-expected.html: Added.
  • fast/css/before-after-pseudo-class.html: Added.
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r143299 r143300  
     12013-02-18  Takashi Sakamoto  <tasak@google.com>
     2
     3        :before/:after pseudo elements do not always apply to the proper element
     4        https://bugs.webkit.org/show_bug.cgi?id=93925
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        * fast/css/before-after-pseudo-class-expected.html: Added.
     9        * fast/css/before-after-pseudo-class.html: Added.
     10
    1112013-02-18  Andy Estes  <aestes@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r143299 r143300  
     12013-02-18  Takashi Sakamoto  <tasak@google.com>
     2
     3        :before/:after pseudo elements do not always apply to the proper element
     4        https://bugs.webkit.org/show_bug.cgi?id=93925
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        Disable sharing a style with siblings if :after or :before pseudo style
     9        is unique.
     10
     11        Test: fast/css/before-after-pseudo-class.html
     12
     13        * css/StyleResolver.cpp:
     14        (WebCore::StyleResolver::canShareStyleWithElement):
     15        Added a new condition, hasUniquePseudoStyle.
     16        * rendering/style/RenderStyle.cpp:
     17        (WebCore::RenderStyle::hasUniquePseudoStyle):
     18        Added to check whether any pseudo style has unique bit or not.
     19        (WebCore):
     20        * rendering/style/RenderStyle.h:
     21
    1222013-02-18  Andy Estes  <aestes@apple.com>
    223
  • trunk/Source/WebCore/css/StyleResolver.cpp

    r142855 r143300  
    10141014    if (style->unique())
    10151015        return false;
     1016    if (style->hasUniquePseudoStyle())
     1017        return false;
    10161018    if (element->tagQName() != state.element()->tagQName())
    10171019        return false;
  • trunk/Source/WebCore/rendering/style/RenderStyle.cpp

    r143232 r143300  
    260260    ASSERT(pseudo < FIRST_INTERNAL_PSEUDOID);
    261261    noninherited_flags._pseudoBits |= pseudoBit(pseudo);
     262}
     263
     264bool RenderStyle::hasUniquePseudoStyle() const
     265{
     266    if (!m_cachedPseudoStyles || styleType() != NOPSEUDO)
     267        return false;
     268
     269    for (size_t i = 0; i < m_cachedPseudoStyles->size(); ++i) {
     270        RenderStyle* pseudoStyle = m_cachedPseudoStyles->at(i).get();
     271        if (pseudoStyle->unique())
     272            return true;
     273    }
     274
     275    return false;
    262276}
    263277
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r143225 r143300  
    424424    bool hasPseudoStyle(PseudoId pseudo) const;
    425425    void setHasPseudoStyle(PseudoId pseudo);
     426    bool hasUniquePseudoStyle() const;
    426427
    427428    // attribute getter methods
Note: See TracChangeset for help on using the changeset viewer.