Allow new CSS parser to handle insertRule, etc via parseRule
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Oct 2016 18:49:43 +0000 (18:49 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Oct 2016 18:49:43 +0000 (18:49 +0000)
https://bugs.webkit.org/show_bug.cgi?id=164122
<rdar://problem/29000101>

Reviewed by Darin Adler.

Call the new CSS parser from CSSParser::parseRule if enabled. This
allows style added via the CSSOM insertRule to go through
the parser.

I tested this across our layout tests that use insertRule. It
works fine, but does cause some filter tests to fail. This is
because the new parser does not generate WebKitCSSFilterValues,
but I think the CSSFunctionValue is good enough. I'll remove
WebKitCSSFilterValue separately.

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseRule): Call CSSParserImpl::parseRule.

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

Source/WebCore/ChangeLog
Source/WebCore/css/parser/CSSParser.cpp

index 1faecd0..c882dee 100644 (file)
@@ -1,3 +1,24 @@
+2016-10-28  Dean Jackson  <dino@apple.com>
+
+        Allow new CSS parser to handle insertRule, etc via parseRule
+        https://bugs.webkit.org/show_bug.cgi?id=164122
+        <rdar://problem/29000101>
+
+        Reviewed by Darin Adler.
+
+        Call the new CSS parser from CSSParser::parseRule if enabled. This
+        allows style added via the CSSOM insertRule to go through
+        the parser.
+
+        I tested this across our layout tests that use insertRule. It
+        works fine, but does cause some filter tests to fail. This is
+        because the new parser does not generate WebKitCSSFilterValues,
+        but I think the CSSFunctionValue is good enough. I'll remove
+        WebKitCSSFilterValue separately.
+
+        * css/parser/CSSParser.cpp:
+        (WebCore::CSSParser::parseRule): Call CSSParserImpl::parseRule.
+
 2016-10-28  Simon Fraser  <simon.fraser@apple.com>
 
         Wrong blur radius for filter: drop-shadow()
index 05fe22c..a953224 100644 (file)
@@ -394,6 +394,8 @@ void CSSParser::parseSheet(StyleSheetContents* sheet, const String& string, cons
 
 RefPtr<StyleRuleBase> CSSParser::parseRule(StyleSheetContents* sheet, const String& string)
 {
+    if (m_context.useNewParser && m_context.mode != UASheetMode)
+        return CSSParserImpl::parseRule(string, m_context, sheet, CSSParserImpl::AllowImportRules);
     setStyleSheet(sheet);
     m_allowNamespaceDeclarations = false;
     setupParser("@-webkit-rule{", string, "} ");