Title: [225485] trunk/Source/WebCore
Revision
225485
Author
an...@apple.com
Date
2017-12-04 12:31:35 -0800 (Mon, 04 Dec 2017)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (225484 => 225485)


--- trunk/Source/WebCore/ChangeLog	2017-12-04 19:37:00 UTC (rev 225484)
+++ trunk/Source/WebCore/ChangeLog	2017-12-04 20:31:35 UTC (rev 225485)
@@ -1,3 +1,20 @@
+2017-12-04  Antti Koivisto  <an...@apple.com>
+
+        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):
+
 2017-12-04  Youenn Fablet  <you...@apple.com>
 
         Add support https://w3c.github.io/ServiceWorker/#on-client-unload-algorithm

Modified: trunk/Source/WebCore/css/StyleResolver.cpp (225484 => 225485)


--- trunk/Source/WebCore/css/StyleResolver.cpp	2017-12-04 19:37:00 UTC (rev 225484)
+++ trunk/Source/WebCore/css/StyleResolver.cpp	2017-12-04 20:31:35 UTC (rev 225485)
@@ -552,9 +552,9 @@
     }
 }
 
-std::unique_ptr<RenderStyle> StyleResolver::pseudoStyleForElement(const Element& element, const PseudoStyleRequest& pseudoStyleRequest, const RenderStyle& parentStyle)
+std::unique_ptr<RenderStyle> StyleResolver::pseudoStyleForElement(const Element& element, const PseudoStyleRequest& pseudoStyleRequest, const RenderStyle& parentStyle, const SelectorFilter* selectorFilter)
 {
-    m_state = State(element, &parentStyle);
+    m_state = State(element, &parentStyle, m_overrideDocumentElementStyle, selectorFilter);
 
     State& state = m_state;
 

Modified: trunk/Source/WebCore/css/StyleResolver.h (225484 => 225485)


--- trunk/Source/WebCore/css/StyleResolver.h	2017-12-04 19:37:00 UTC (rev 225484)
+++ trunk/Source/WebCore/css/StyleResolver.h	2017-12-04 20:31:35 UTC (rev 225485)
@@ -133,7 +133,7 @@
 
     void keyframeStylesForAnimation(const Element&, const RenderStyle*, KeyframeList&);
 
-    std::unique_ptr<RenderStyle> pseudoStyleForElement(const Element&, const PseudoStyleRequest&, const RenderStyle& parentStyle);
+    std::unique_ptr<RenderStyle> pseudoStyleForElement(const Element&, const PseudoStyleRequest&, const RenderStyle& parentStyle, const SelectorFilter* = nullptr);
 
     std::unique_ptr<RenderStyle> styleForPage(int pageIndex);
     std::unique_ptr<RenderStyle> defaultStyleForElement();

Modified: trunk/Source/WebCore/style/StyleTreeResolver.cpp (225484 => 225485)


--- trunk/Source/WebCore/style/StyleTreeResolver.cpp	2017-12-04 19:37:00 UTC (rev 225484)
+++ trunk/Source/WebCore/style/StyleTreeResolver.cpp	2017-12-04 20:31:35 UTC (rev 225485)
@@ -233,7 +233,7 @@
     if (!elementUpdate.style->hasPseudoStyle(pseudoId))
         return { };
 
-    auto pseudoStyle = scope().styleResolver.pseudoStyleForElement(element, { pseudoId }, *elementUpdate.style);
+    auto pseudoStyle = scope().styleResolver.pseudoStyleForElement(element, { pseudoId }, *elementUpdate.style, &scope().selectorFilter);
     if (!pseudoStyle)
         return { };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to