REGRESSION (r230223): LayoutTest http/tests/contentextensions/css-display-none-overfl...
authoryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 6 Apr 2018 05:23:19 +0000 (05:23 +0000)
committeryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 6 Apr 2018 05:23:19 +0000 (05:23 +0000)
https://bugs.webkit.org/show_bug.cgi?id=184306

Reviewed by Ryosuke Niwa.

Source/WebCore:

Add an option to not compile CSS rules since they are not useful in NetworkProcess.
Covered by tests no longer crashing in Debug WK2 bots.

* contentextensions/ContentExtension.cpp:
(WebCore::ContentExtensions::ContentExtension::create):
(WebCore::ContentExtensions::ContentExtension::ContentExtension):
* contentextensions/ContentExtension.h:
* contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::addContentExtension):
* contentextensions/ContentExtensionsBackend.h:

Source/WebKit:

* NetworkProcess/NetworkContentRuleListManager.cpp:
(WebKit::NetworkContentRuleListManager::addContentRuleLists):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230326 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/contentextensions/ContentExtension.cpp
Source/WebCore/contentextensions/ContentExtension.h
Source/WebCore/contentextensions/ContentExtensionsBackend.cpp
Source/WebCore/contentextensions/ContentExtensionsBackend.h
Source/WebKit/ChangeLog
Source/WebKit/NetworkProcess/NetworkContentRuleListManager.cpp

index 3e5db17..d1decea 100644 (file)
@@ -1,3 +1,21 @@
+2018-04-05  Youenn Fablet  <youenn@apple.com>
+
+        REGRESSION (r230223): LayoutTest http/tests/contentextensions/css-display-none-overflows-rule-data-1.html is crashing
+        https://bugs.webkit.org/show_bug.cgi?id=184306
+
+        Reviewed by Ryosuke Niwa.
+
+        Add an option to not compile CSS rules since they are not useful in NetworkProcess.
+        Covered by tests no longer crashing in Debug WK2 bots.
+
+        * contentextensions/ContentExtension.cpp:
+        (WebCore::ContentExtensions::ContentExtension::create):
+        (WebCore::ContentExtensions::ContentExtension::ContentExtension):
+        * contentextensions/ContentExtension.h:
+        * contentextensions/ContentExtensionsBackend.cpp:
+        (WebCore::ContentExtensions::ContentExtensionsBackend::addContentExtension):
+        * contentextensions/ContentExtensionsBackend.h:
+
 2018-04-05  Brent Fulgham  <bfulgham@apple.com>
 
         WebContent process is calling CGDisplayUsesInvertedPolarity
index d882259..610e1b8 100644 (file)
 namespace WebCore {
 namespace ContentExtensions {
 
-Ref<ContentExtension> ContentExtension::create(const String& identifier, Ref<CompiledContentExtension>&& compiledExtension)
+Ref<ContentExtension> ContentExtension::create(const String& identifier, Ref<CompiledContentExtension>&& compiledExtension, ShouldCompileCSS shouldCompileCSS)
 {
-    return adoptRef(*new ContentExtension(identifier, WTFMove(compiledExtension)));
+    return adoptRef(*new ContentExtension(identifier, WTFMove(compiledExtension), shouldCompileCSS));
 }
 
-ContentExtension::ContentExtension(const String& identifier, Ref<CompiledContentExtension>&& compiledExtension)
+ContentExtension::ContentExtension(const String& identifier, Ref<CompiledContentExtension>&& compiledExtension, ShouldCompileCSS shouldCompileCSS)
     : m_identifier(identifier)
     , m_compiledExtension(WTFMove(compiledExtension))
 {
@@ -55,8 +55,9 @@ ContentExtension::ContentExtension(const String& identifier, Ref<CompiledContent
         ASSERT((action & ~IfConditionFlag) == static_cast<uint32_t>(action));
         m_universalActionsWithConditions.append(action);
     }
-    
-    compileGlobalDisplayNoneStyleSheet();
+
+    if (shouldCompileCSS == ShouldCompileCSS::Yes)
+        compileGlobalDisplayNoneStyleSheet();
     m_universalActionsWithoutConditions.shrinkToFit();
     m_universalActionsWithConditions.shrinkToFit();
 }
index d5a0dcd..5af1ada 100644 (file)
@@ -41,7 +41,8 @@ class CompiledContentExtension;
 
 class ContentExtension : public RefCounted<ContentExtension> {
 public:
-    static Ref<ContentExtension> create(const String& identifier, Ref<CompiledContentExtension>&&);
+    enum class ShouldCompileCSS { No, Yes };
+    static Ref<ContentExtension> create(const String& identifier, Ref<CompiledContentExtension>&&, ShouldCompileCSS = ShouldCompileCSS::Yes);
 
     const String& identifier() const { return m_identifier; }
     const CompiledContentExtension& compiledExtension() const { return m_compiledExtension.get(); }
@@ -51,7 +52,7 @@ public:
     const Vector<uint32_t>& universalActionsWithConditions(const URL& topURL);
 
 private:
-    ContentExtension(const String& identifier, Ref<CompiledContentExtension>&&);
+    ContentExtension(const String& identifier, Ref<CompiledContentExtension>&&, ShouldCompileCSS);
     uint32_t findFirstIgnorePreviousRules() const;
     
     String m_identifier;
index eb105a8..a662615 100644 (file)
@@ -50,13 +50,13 @@ namespace WebCore {
 
 namespace ContentExtensions {
     
-void ContentExtensionsBackend::addContentExtension(const String& identifier, Ref<CompiledContentExtension> compiledContentExtension)
+void ContentExtensionsBackend::addContentExtension(const String& identifier, Ref<CompiledContentExtension> compiledContentExtension, ContentExtension::ShouldCompileCSS shouldCompileCSS)
 {
     ASSERT(!identifier.isEmpty());
     if (identifier.isEmpty())
         return;
     
-    auto contentExtension = ContentExtension::create(identifier, WTFMove(compiledContentExtension));
+    auto contentExtension = ContentExtension::create(identifier, WTFMove(compiledContentExtension), shouldCompileCSS);
     m_contentExtensions.set(identifier, WTFMove(contentExtension));
 }
 
index 56158eb..0004845 100644 (file)
@@ -56,7 +56,7 @@ public:
 
     // Set a list of rules for a given name. If there were existing rules for the name, they are overriden.
     // The identifier cannot be empty.
-    WEBCORE_EXPORT void addContentExtension(const String& identifier, Ref<CompiledContentExtension>);
+    WEBCORE_EXPORT void addContentExtension(const String& identifier, Ref<CompiledContentExtension>, ContentExtension::ShouldCompileCSS = ContentExtension::ShouldCompileCSS::Yes);
     WEBCORE_EXPORT void removeContentExtension(const String& identifier);
     WEBCORE_EXPORT void removeAllContentExtensions();
 
index a279931..feb5c6f 100644 (file)
@@ -1,3 +1,13 @@
+2018-04-05  Youenn Fablet  <youenn@apple.com>
+
+        REGRESSION (r230223): LayoutTest http/tests/contentextensions/css-display-none-overflows-rule-data-1.html is crashing
+        https://bugs.webkit.org/show_bug.cgi?id=184306
+
+        Reviewed by Ryosuke Niwa.
+
+        * NetworkProcess/NetworkContentRuleListManager.cpp:
+        (WebKit::NetworkContentRuleListManager::addContentRuleLists):
+
 2018-04-05  Brent Fulgham  <bfulgham@apple.com>
 
         WebContent process is calling CGDisplayUsesInvertedPolarity
index 8523e03..c56a557 100644 (file)
@@ -72,7 +72,7 @@ void NetworkContentRuleListManager::addContentRuleLists(UserContentControllerIde
     for (const auto& contentRuleList : contentRuleLists) {
         WebCompiledContentRuleListData contentRuleListData = contentRuleList.second;
         auto compiledContentRuleList = WebCompiledContentRuleList::create(WTFMove(contentRuleListData));
-        backend.addContentExtension(contentRuleList.first, WTFMove(compiledContentRuleList));
+        backend.addContentExtension(contentRuleList.first, WTFMove(compiledContentRuleList), ContentExtensions::ContentExtension::ShouldCompileCSS::No);
     }
 
     auto pendingCallbacks = m_pendingCallbacks.take(identifier);