Bug 1393189 part 2 - Have CounterStyle::GetStyleName return nsIAtom and make it const. r?dholbert draft
authorXidorn Quan <me@upsuper.org>
Tue, 29 Aug 2017 15:21:36 +1000
changeset 656371 ee1fef0b9b5af8718792d532185f4229b9f38a23
parent 656370 cd3dc60cb7a2bf23b6f7a5dbdfb4c992c15796a7
child 656372 0d70e41ac71beb2653e8e9085bbd9ded25dc1ed8
push id77188
push userxquan@mozilla.com
push dateThu, 31 Aug 2017 04:04:58 +0000
reviewersdholbert
bugs1393189
milestone57.0a1
Bug 1393189 part 2 - Have CounterStyle::GetStyleName return nsIAtom and make it const. r?dholbert MozReview-Commit-ID: KmnQSK7ZvND
layout/style/CounterStyleManager.cpp
layout/style/CounterStyleManager.h
layout/style/ServoBindings.cpp
layout/style/nsComputedDOMStyle.cpp
--- a/layout/style/CounterStyleManager.cpp
+++ b/layout/style/CounterStyleManager.cpp
@@ -576,17 +576,17 @@ class BuiltinCounterStyle : public Count
 {
 public:
   constexpr BuiltinCounterStyle(int32_t aStyle, nsIAtom** aName)
     : CounterStyle(aStyle)
     , mName(aName)
   {
   }
 
-  virtual void GetStyleName(nsAString& aResult) override;
+  virtual nsIAtom* GetStyleName() const final;
   virtual void GetPrefix(nsAString& aResult) override;
   virtual void GetSuffix(nsAString& aResult) override;
   virtual void GetSpokenCounterText(CounterValue aOrdinal,
                                     WritingMode aWritingMode,
                                     nsAString& aResult,
                                     bool& aIsBullet) override;
   virtual bool IsBullet() override;
 
@@ -613,24 +613,20 @@ protected:
 private:
   // The atom for the name of the builtin counter style.
   // Extra indirection to point to nsGkAtoms members rather than the
   // nsIAtom, because members of nsGkAtoms are updated at runtime but
   // we want to construct BuiltinCounterStyle at compile time.
   nsIAtom** const mName;
 };
 
-/* virtual */ void
-BuiltinCounterStyle::GetStyleName(nsAString& aResult)
+/* virtual */ nsIAtom*
+BuiltinCounterStyle::GetStyleName() const
 {
-  MOZ_ASSERT(mStyle != NS_STYLE_LIST_STYLE_CUSTOM);
-  const nsCString& str =
-    nsCSSProps::ValueToKeyword(mStyle, nsCSSProps::kListStyleKTable);
-  MOZ_ASSERT(!str.IsEmpty());
-  aResult.Assign(NS_ConvertUTF8toUTF16(str));
+  return *mName;
 }
 
 /* virtual */ void
 BuiltinCounterStyle::GetPrefix(nsAString& aResult)
 {
   aResult.Truncate();
 }
 
@@ -1071,17 +1067,17 @@ public:
   // For counter style extends other, in addition, all fields will be
   // reset to uninitialized state. This method should be called when any
   // other counter style is added, removed, or changed.
   void ResetDependentData();
 
   nsCSSCounterStyleRule* GetRule() const { return mRule; }
   uint32_t GetRuleGeneration() const { return mRuleGeneration; }
 
-  virtual void GetStyleName(nsAString& aResult) override;
+  virtual nsIAtom* GetStyleName() const override;
   virtual void GetPrefix(nsAString& aResult) override;
   virtual void GetSuffix(nsAString& aResult) override;
   virtual void GetSpokenCounterText(CounterValue aOrdinal,
                                     WritingMode aWritingMode,
                                     nsAString& aResult,
                                     bool& aIsBullet) override;
   virtual bool IsBullet() override;
 
@@ -1228,21 +1224,20 @@ CustomCounterStyle::ResetDependentData()
   if (IsExtendsSystem()) {
     mFlags &= ~(FLAG_NEGATIVE_INITED |
                 FLAG_PREFIX_INITED |
                 FLAG_SUFFIX_INITED |
                 FLAG_PAD_INITED);
   }
 }
 
-/* virtual */ void
-CustomCounterStyle::GetStyleName(nsAString& aResult)
+/* virtual */ nsIAtom*
+CustomCounterStyle::GetStyleName() const
 {
-  nsDependentAtomString name(mName);
-  aResult.Assign(name);
+  return mName;
 }
 
 /* virtual */ void
 CustomCounterStyle::GetPrefix(nsAString& aResult)
 {
   if (!(mFlags & FLAG_PREFIX_INITED)) {
     mFlags |= FLAG_PREFIX_INITED;
 
@@ -1752,20 +1747,20 @@ AnonymousCounterStyle::AnonymousCounterS
                                              nsTArray<nsString> aSymbols)
   : CounterStyle(NS_STYLE_LIST_STYLE_CUSTOM)
   , mSingleString(false)
   , mSystem(aSystem)
   , mSymbols(Move(aSymbols))
 {
 }
 
-/* virtual */ void
-AnonymousCounterStyle::GetStyleName(nsAString& aResult)
+/* virtual */ nsIAtom*
+AnonymousCounterStyle::GetStyleName() const
 {
-  aResult.Truncate();
+  return nullptr;
 }
 
 /* virtual */ void
 AnonymousCounterStyle::GetPrefix(nsAString& aResult)
 {
   aResult.Truncate();
 }
 
--- a/layout/style/CounterStyleManager.h
+++ b/layout/style/CounterStyleManager.h
@@ -47,17 +47,17 @@ public:
   constexpr int32_t GetStyle() const { return mStyle; }
   bool IsNone() const { return mStyle == NS_STYLE_LIST_STYLE_NONE; }
   bool IsCustomStyle() const { return mStyle == NS_STYLE_LIST_STYLE_CUSTOM; }
   // A style is dependent if it depends on the counter style manager.
   // Custom styles are certainly dependent. In addition, some builtin
   // styles are dependent for fallback.
   bool IsDependentStyle() const;
 
-  virtual void GetStyleName(nsAString& aResult) = 0;
+  virtual nsIAtom* GetStyleName() const = 0;
   virtual void GetPrefix(nsAString& aResult) = 0;
   virtual void GetSuffix(nsAString& aResult) = 0;
   void GetCounterText(CounterValue aOrdinal,
                       WritingMode aWritingMode,
                       nsAString& aResult,
                       bool& aIsRTL);
   virtual void GetSpokenCounterText(CounterValue aOrdinal,
                                     WritingMode aWritingMode,
@@ -103,17 +103,17 @@ protected:
 
 class AnonymousCounterStyle final : public CounterStyle
 {
 public:
   explicit AnonymousCounterStyle(const nsAString& aContent);
   AnonymousCounterStyle(uint8_t aSystem, nsTArray<nsString> aSymbols);
   explicit AnonymousCounterStyle(const nsCSSValue::Array* aValue);
 
-  virtual void GetStyleName(nsAString& aResult) override;
+  virtual nsIAtom* GetStyleName() const override;
   virtual void GetPrefix(nsAString& aResult) override;
   virtual void GetSuffix(nsAString& aResult) override;
   virtual bool IsBullet() override;
 
   virtual void GetNegative(NegativeType& aResult) override;
   virtual bool IsOrdinalInRange(CounterValue aOrdinal) override;
   virtual bool IsOrdinalInAutoRange(CounterValue aOrdinal) override;
   virtual void GetPad(PadType& aResult) override;
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -1463,17 +1463,18 @@ bool
 Gecko_CounterStyle_IsName(const CounterStylePtr* aPtr) {
   return !Gecko_CounterStyle_IsNone(aPtr) && !(*aPtr)->AsAnonymous();
 }
 
 void
 Gecko_CounterStyle_GetName(const CounterStylePtr* aPtr,
                            nsAString* aResult) {
   MOZ_ASSERT(Gecko_CounterStyle_IsName(aPtr));
-  (*aPtr)->GetStyleName(*aResult);
+  nsIAtom* name = (*aPtr)->GetStyleName();
+  *aResult = nsDependentAtomString(name);
 }
 
 const nsTArray<nsString>&
 Gecko_CounterStyle_GetSymbols(const CounterStylePtr* aPtr) {
   MOZ_ASSERT((*aPtr)->AsAnonymous());
   AnonymousCounterStyle* anonymous = (*aPtr)->AsAnonymous();
   return anonymous->GetSymbols();
 }
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -1320,18 +1320,17 @@ nsComputedDOMStyle::DoGetColumnRuleColor
 }
 
 static void
 AppendCounterStyle(CounterStyle* aStyle, nsAString& aString)
 {
   AnonymousCounterStyle* anonymous = aStyle->AsAnonymous();
   if (!anonymous) {
     // want SetIdent
-    nsString type;
-    aStyle->GetStyleName(type);
+    nsDependentAtomString type(aStyle->GetStyleName());
     nsStyleUtil::AppendEscapedCSSIdent(type, aString);
   } else if (anonymous->IsSingleString()) {
     const nsTArray<nsString>& symbols = anonymous->GetSymbols();
     MOZ_ASSERT(symbols.Length() == 1);
     nsStyleUtil::AppendEscapedCSSString(symbols[0], aString);
   } else {
     aString.AppendLiteral("symbols(");