Bug 1420117 - Part 4: Use Servo CSS parser in nsCSSCounterStyleRule::SetDescriptor. r?xidorn draft
authorCameron McCormack <cam@mcc.id.au>
Fri, 24 Nov 2017 17:26:57 +0800
changeset 706032 006489b0dc4c5b1e0b6ad9d31792ea465e507579
parent 706031 7e04248781392dd3f4365828bdf9d11ffc93ed37
child 742540 cb23998fa33a5f559ac11fc1dacee725de0c5ced
push id91668
push userbmo:cam@mcc.id.au
push dateFri, 01 Dec 2017 02:05:28 +0000
reviewersxidorn
bugs1420117
milestone59.0a1
Bug 1420117 - Part 4: Use Servo CSS parser in nsCSSCounterStyleRule::SetDescriptor. r?xidorn MozReview-Commit-ID: GNJMe4kGQPB
layout/style/nsCSSCounterStyleRule.cpp
--- a/layout/style/nsCSSCounterStyleRule.cpp
+++ b/layout/style/nsCSSCounterStyleRule.cpp
@@ -417,30 +417,43 @@ nsCSSCounterStyleRule::CheckDescValue(in
       return true;
   }
 }
 
 nsresult
 nsCSSCounterStyleRule::SetDescriptor(nsCSSCounterDesc aDescID,
                                      const nsAString& aValue)
 {
-  nsCSSParser parser;
   nsCSSValue value;
-  nsIURI* baseURL = nullptr;
-  nsIPrincipal* principal = nullptr;
-  if (StyleSheet* sheet = GetStyleSheet()) {
-    baseURL = sheet->GetBaseURI();
-    principal = sheet->Principal();
+  bool ok;
+
+  StyleSheet* sheet = GetStyleSheet();
+
+#ifdef MOZ_STYLO
+  bool useServo = !sheet || sheet->IsServo();
+#else
+  bool useServo = false;
+#endif
+
+  if (useServo) {
+    URLExtraData* data = sheet ? sheet->AsServo()->URLData() : nullptr;
+    ok = ServoCSSParser::ParseCounterStyleDescriptor(aDescID, aValue, data,
+                                                     value);
+  } else {
+    nsCSSParser parser;
+    nsIURI* baseURL = sheet ? sheet->GetBaseURI() : nullptr;
+    nsIPrincipal* principal = sheet ? sheet->Principal() : nullptr;
+    ok = parser.ParseCounterDescriptor(aDescID, aValue, nullptr,
+                                       baseURL, principal, value);
   }
-  if (parser.ParseCounterDescriptor(aDescID, aValue, nullptr,
-                                    baseURL, principal, value)) {
-    if (CheckDescValue(GetSystem(), aDescID, value)) {
-      SetDesc(aDescID, value);
-    }
+
+  if (ok && CheckDescValue(GetSystem(), aDescID, value)) {
+    SetDesc(aDescID, value);
   }
+
   return NS_OK;
 }
 
 #define CSS_COUNTER_DESC_SETTER(name_)                        \
 NS_IMETHODIMP                                                 \
 nsCSSCounterStyleRule::Set##name_(const nsAString& a##name_)  \
 {                                                             \
   return SetDescriptor(eCSSCounterDesc_##name_, a##name_);    \