Bug 1420117 - Part 2: Use Servo CSS parser in nsCSSCounterStyleRule::SetName. r?xidorn draft
authorCameron McCormack <cam@mcc.id.au>
Fri, 24 Nov 2017 15:53:00 +0800
changeset 706030 4ad0c98f16c050ca28702eb038f7abd156b8bb13
parent 706029 9c80b2874a56756389e7a511c0b409c3e6b5bd4b
child 706031 7e04248781392dd3f4365828bdf9d11ffc93ed37
push id91668
push userbmo:cam@mcc.id.au
push dateFri, 01 Dec 2017 02:05:28 +0000
reviewersxidorn
bugs1420117
milestone59.0a1
Bug 1420117 - Part 2: Use Servo CSS parser in nsCSSCounterStyleRule::SetName. r?xidorn MozReview-Commit-ID: aZDekSDgq4
layout/style/nsCSSCounterStyleRule.cpp
--- a/layout/style/nsCSSCounterStyleRule.cpp
+++ b/layout/style/nsCSSCounterStyleRule.cpp
@@ -6,16 +6,17 @@
 
 /* a Gecko @counter-style rule */
 
 #include "nsCSSCounterStyleRule.h"
 
 #include "mozAutoDocUpdate.h"
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/dom/CSSCounterStyleRuleBinding.h"
+#include "mozilla/ServoCSSParser.h"
 #include "nsCSSParser.h"
 #include "nsStyleUtil.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 nsCSSCounterStyleRule::nsCSSCounterStyleRule(const nsCSSCounterStyleRule& aCopy)
   : Rule(aCopy)
@@ -127,19 +128,27 @@ nsCSSCounterStyleRule::GetName(nsAString
   nsDependentAtomString name(mName);
   nsStyleUtil::AppendEscapedCSSIdent(name, aName);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCSSCounterStyleRule::SetName(const nsAString& aName)
 {
-  nsCSSParser parser;
-  if (RefPtr<nsAtom> name = parser.ParseCounterStyleName(aName, nullptr)) {
-    nsIDocument* doc = GetDocument();
+  RefPtr<nsAtom> name;
+
+  nsIDocument* doc = GetDocument();
+  if (!doc || doc->IsStyledByServo()) {
+    name = ServoCSSParser::ParseCounterStyleName(aName);
+  } else {
+    nsCSSParser parser;
+    name = parser.ParseCounterStyleName(aName, nullptr);
+  }
+
+  if (name) {
     MOZ_AUTO_DOC_UPDATE(doc, UPDATE_STYLE, true);
 
     mName = name;
 
     if (StyleSheet* sheet = GetStyleSheet()) {
       if (sheet->IsGecko()) {
         sheet->AsGecko()->SetModifiedByChildRule();
       }