Changeset 225485 in webkit


Ignore:
Timestamp:
Dec 4, 2017 12:31:35 PM (6 years ago)
Author:
Antti Koivisto
Message:

Enable selector filtering for ::before and ::after pseudo element resolution
https://bugs.webkit.org/show_bug.cgi?id=180364

Reviewed by Ryosuke Niwa.

Since these pseudo elements are now resolved by TreeResolver we can use selector filter for them.

This is 10%+ progression in StyleBench pseudo element subtest.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::pseudoStyleForElement):

  • css/StyleResolver.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolvePseudoStyle):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r225483 r225485  
     12017-12-04  Antti Koivisto  <antti@apple.com>
     2
     3        Enable selector filtering for ::before and ::after pseudo element resolution
     4        https://bugs.webkit.org/show_bug.cgi?id=180364
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Since these pseudo elements are now resolved by TreeResolver we can use selector filter for them.
     9
     10        This is 10%+ progression in StyleBench pseudo element subtest.
     11
     12        * css/StyleResolver.cpp:
     13        (WebCore::StyleResolver::pseudoStyleForElement):
     14        * css/StyleResolver.h:
     15        * style/StyleTreeResolver.cpp:
     16        (WebCore::Style::TreeResolver::resolvePseudoStyle):
     17
    1182017-12-04  Youenn Fablet  <youenn@apple.com>
    219
  • trunk/Source/WebCore/css/StyleResolver.cpp

    r224840 r225485  
    553553}
    554554
    555 std::unique_ptr<RenderStyle> StyleResolver::pseudoStyleForElement(const Element& element, const PseudoStyleRequest& pseudoStyleRequest, const RenderStyle& parentStyle)
    556 {
    557     m_state = State(element, &parentStyle);
     555std::unique_ptr<RenderStyle> StyleResolver::pseudoStyleForElement(const Element& element, const PseudoStyleRequest& pseudoStyleRequest, const RenderStyle& parentStyle, const SelectorFilter* selectorFilter)
     556{
     557    m_state = State(element, &parentStyle, m_overrideDocumentElementStyle, selectorFilter);
    558558
    559559    State& state = m_state;
  • trunk/Source/WebCore/css/StyleResolver.h

    r224840 r225485  
    134134    void keyframeStylesForAnimation(const Element&, const RenderStyle*, KeyframeList&);
    135135
    136     std::unique_ptr<RenderStyle> pseudoStyleForElement(const Element&, const PseudoStyleRequest&, const RenderStyle& parentStyle);
     136    std::unique_ptr<RenderStyle> pseudoStyleForElement(const Element&, const PseudoStyleRequest&, const RenderStyle& parentStyle, const SelectorFilter* = nullptr);
    137137
    138138    std::unique_ptr<RenderStyle> styleForPage(int pageIndex);
  • trunk/Source/WebCore/style/StyleTreeResolver.cpp

    r225049 r225485  
    234234        return { };
    235235
    236     auto pseudoStyle = scope().styleResolver.pseudoStyleForElement(element, { pseudoId }, *elementUpdate.style);
     236    auto pseudoStyle = scope().styleResolver.pseudoStyleForElement(element, { pseudoId }, *elementUpdate.style, &scope().selectorFilter);
    237237    if (!pseudoStyle)
    238238        return { };
Note: See TracChangeset for help on using the changeset viewer.