Bug 1420117 - Part 4: Use Servo CSS parser in nsCSSCounterStyleRule::SetDescriptor. r?xidorn
MozReview-Commit-ID: GNJMe4kGQPB
--- 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_); \