Bug 1420117 - Part 2: Use Servo CSS parser in nsCSSCounterStyleRule::SetName. r?xidorn
MozReview-Commit-ID: aZDekSDgq4
--- 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();
}