Bug 1448763 part 4 - Remove nsCSSValueGradient and its friends. r?emilio draft
authorXidorn Quan <me@upsuper.org>
Thu, 05 Apr 2018 14:06:03 +1000
changeset 777685 3828ab2228036b67dee6460f2d897afd2f188451
parent 777684 485f40d2e8245ddafcececc08f0fc1a6eed0de79
child 777686 5dc71ab2cdb639617b6e9b4160e922bd42d1f6ad
push id105263
push userxquan@mozilla.com
push dateThu, 05 Apr 2018 05:22:06 +0000
reviewersemilio
bugs1448763
milestone61.0a1
Bug 1448763 part 4 - Remove nsCSSValueGradient and its friends. r?emilio MozReview-Commit-ID: JoYZyud2Wtu
layout/style/ServoBindings.toml
layout/style/nsCSSValue.cpp
layout/style/nsCSSValue.h
--- a/layout/style/ServoBindings.toml
+++ b/layout/style/ServoBindings.toml
@@ -280,18 +280,16 @@ whitelist-types = [
     "nsCSSFontDesc",
     "nsCSSKeyword",
     "nsCSSPropertyID",
     "nsCSSPropertyIDSet",
     "nsCSSProps",
     "nsCSSShadowArray",
     "nsCSSValue",
     "nsCSSValueFloatColor",
-    "nsCSSValueGradient",
-    "nsCSSValueGradientStop",
     "nsCSSValueList",
     "nsCSSValueList_heap",
     "nsCSSValuePair_heap",
     "nsCSSValuePairList",
     "nsCSSValuePairList_heap",
     "nsCSSValueTriplet_heap",
     "nsCursorImage",
     "nsFont",
--- a/layout/style/nsCSSValue.cpp
+++ b/layout/style/nsCSSValue.cpp
@@ -105,23 +105,16 @@ nsCSSValue::nsCSSValue(mozilla::css::URL
 
 nsCSSValue::nsCSSValue(mozilla::css::ImageValue* aValue)
   : mUnit(eCSSUnit_Image)
 {
   mValue.mImage = aValue;
   mValue.mImage->AddRef();
 }
 
-nsCSSValue::nsCSSValue(nsCSSValueGradient* aValue)
-  : mUnit(eCSSUnit_Gradient)
-{
-  mValue.mGradient = aValue;
-  mValue.mGradient->AddRef();
-}
-
 nsCSSValue::nsCSSValue(mozilla::css::GridTemplateAreasValue* aValue)
   : mUnit(eCSSUnit_GridTemplateAreas)
 {
   mValue.mGridTemplateAreas = aValue;
   mValue.mGridTemplateAreas->AddRef();
 }
 
 nsCSSValue::nsCSSValue(SharedFontList* aValue)
@@ -166,20 +159,16 @@ nsCSSValue::nsCSSValue(const nsCSSValue&
   else if (eCSSUnit_URL == mUnit) {
     mValue.mURL = aCopy.mValue.mURL;
     mValue.mURL->AddRef();
   }
   else if (eCSSUnit_Image == mUnit) {
     mValue.mImage = aCopy.mValue.mImage;
     mValue.mImage->AddRef();
   }
-  else if (eCSSUnit_Gradient == mUnit) {
-    mValue.mGradient = aCopy.mValue.mGradient;
-    mValue.mGradient->AddRef();
-  }
   else if (eCSSUnit_Pair == mUnit) {
     mValue.mPair = aCopy.mValue.mPair;
     mValue.mPair->AddRef();
   }
   else if (eCSSUnit_Triplet == mUnit) {
     mValue.mTriplet = aCopy.mValue.mTriplet;
     mValue.mTriplet->AddRef();
   }
@@ -276,19 +265,16 @@ bool nsCSSValue::operator==(const nsCSSV
       return *mValue.mArray == *aOther.mValue.mArray;
     }
     else if (eCSSUnit_URL == mUnit) {
       return mValue.mURL->Equals(*aOther.mValue.mURL);
     }
     else if (eCSSUnit_Image == mUnit) {
       return mValue.mImage->Equals(*aOther.mValue.mImage);
     }
-    else if (eCSSUnit_Gradient == mUnit) {
-      return *mValue.mGradient == *aOther.mValue.mGradient;
-    }
     else if (eCSSUnit_Pair == mUnit) {
       return *mValue.mPair == *aOther.mValue.mPair;
     }
     else if (eCSSUnit_Triplet == mUnit) {
       return *mValue.mTriplet == *aOther.mValue.mTriplet;
     }
     else if (eCSSUnit_Rect == mUnit) {
       return *mValue.mRect == *aOther.mValue.mRect;
@@ -411,18 +397,16 @@ void nsCSSValue::DoReset()
   } else if (eCSSUnit_ComplexColor == mUnit) {
     DO_RELEASE(mComplexColor);
   } else if (UnitHasArrayValue()) {
     DO_RELEASE(mArray);
   } else if (eCSSUnit_URL == mUnit) {
     DO_RELEASE(mURL);
   } else if (eCSSUnit_Image == mUnit) {
     DO_RELEASE(mImage);
-  } else if (eCSSUnit_Gradient == mUnit) {
-    DO_RELEASE(mGradient);
   } else if (eCSSUnit_Pair == mUnit) {
     DO_RELEASE(mPair);
   } else if (eCSSUnit_Triplet == mUnit) {
     DO_RELEASE(mTriplet);
   } else if (eCSSUnit_Rect == mUnit) {
     DO_RELEASE(mRect);
   } else if (eCSSUnit_List == mUnit) {
     DO_RELEASE(mList);
@@ -564,24 +548,16 @@ void nsCSSValue::SetURLValue(mozilla::cs
 void nsCSSValue::SetImageValue(mozilla::css::ImageValue* aValue)
 {
   Reset();
   mUnit = eCSSUnit_Image;
   mValue.mImage = aValue;
   mValue.mImage->AddRef();
 }
 
-void nsCSSValue::SetGradientValue(nsCSSValueGradient* aValue)
-{
-  Reset();
-  mUnit = eCSSUnit_Gradient;
-  mValue.mGradient = aValue;
-  mValue.mGradient->AddRef();
-}
-
 void nsCSSValue::SetGridTemplateAreas(mozilla::css::GridTemplateAreasValue* aValue)
 {
   Reset();
   mUnit = eCSSUnit_GridTemplateAreas;
   mValue.mGridTemplateAreas = aValue;
   mValue.mGridTemplateAreas->AddRef();
 }
 
@@ -1048,21 +1024,16 @@ nsCSSValue::SizeOfExcludingThis(mozilla:
       n += mValue.mURL->SizeOfIncludingThis(aMallocSizeOf);
       break;
 
     // Image
     case eCSSUnit_Image:
       n += mValue.mImage->SizeOfIncludingThis(aMallocSizeOf);
       break;
 
-    // Gradient
-    case eCSSUnit_Gradient:
-      n += mValue.mGradient->SizeOfIncludingThis(aMallocSizeOf);
-      break;
-
     // Pair
     case eCSSUnit_Pair:
       n += mValue.mPair->SizeOfIncludingThis(aMallocSizeOf);
       break;
 
     // Triplet
     case eCSSUnit_Triplet:
       n += mValue.mTriplet->SizeOfIncludingThis(aMallocSizeOf);
@@ -1912,79 +1883,16 @@ css::ComplexColorValue::SizeOfIncludingT
   // Only measure it if it's unshared, to avoid double-counting.
   size_t n = 0;
   if (mRefCnt <= 1) {
     n += aMallocSizeOf(this);
   }
   return n;
 }
 
-nsCSSValueGradientStop::nsCSSValueGradientStop()
-  : mLocation(eCSSUnit_None),
-    mColor(eCSSUnit_Null),
-    mIsInterpolationHint(false)
-{
-  MOZ_COUNT_CTOR(nsCSSValueGradientStop);
-}
-
-nsCSSValueGradientStop::nsCSSValueGradientStop(const nsCSSValueGradientStop& aOther)
-  : mLocation(aOther.mLocation),
-    mColor(aOther.mColor),
-    mIsInterpolationHint(aOther.mIsInterpolationHint)
-{
-  MOZ_COUNT_CTOR(nsCSSValueGradientStop);
-}
-
-nsCSSValueGradientStop::~nsCSSValueGradientStop()
-{
-  MOZ_COUNT_DTOR(nsCSSValueGradientStop);
-}
-
-size_t
-nsCSSValueGradientStop::SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
-{
-  size_t n = 0;
-  n += mLocation.SizeOfExcludingThis(aMallocSizeOf);
-  n += mColor   .SizeOfExcludingThis(aMallocSizeOf);
-  return n;
-}
-
-nsCSSValueGradient::nsCSSValueGradient(bool aIsRadial,
-                                       bool aIsRepeating)
-  : mIsRadial(aIsRadial),
-    mIsRepeating(aIsRepeating),
-    mIsLegacySyntax(false),
-    mIsMozLegacySyntax(false),
-    mIsExplicitSize(false),
-    mBgPos(eCSSUnit_None),
-    mAngle(eCSSUnit_None)
-{
-  mRadialValues[0].SetNoneValue();
-  mRadialValues[1].SetNoneValue();
-}
-
-size_t
-nsCSSValueGradient::SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
-{
-  // Only measure it if it's unshared, to avoid double-counting.
-  size_t n = 0;
-  if (mRefCnt <= 1) {
-    n += aMallocSizeOf(this);
-    n += mBgPos.SizeOfExcludingThis(aMallocSizeOf);
-    n += mAngle.SizeOfExcludingThis(aMallocSizeOf);
-    n += mRadialValues[0].SizeOfExcludingThis(aMallocSizeOf);
-    n += mRadialValues[1].SizeOfExcludingThis(aMallocSizeOf);
-    n += mStops.ShallowSizeOfExcludingThis(aMallocSizeOf);
-    for (uint32_t i = 0; i < mStops.Length(); i++) {
-      n += mStops[i].SizeOfExcludingThis(aMallocSizeOf);
-    }
-  }
-  return n;
-}
-
 // --- nsCSSValueFloatColor -------------
 
 bool
 nsCSSValueFloatColor::operator==(nsCSSValueFloatColor& aOther) const
 {
   return mComponent1 == aOther.mComponent1 &&
          mComponent2 == aOther.mComponent2 &&
          mComponent3 == aOther.mComponent3 &&
--- a/layout/style/nsCSSValue.h
+++ b/layout/style/nsCSSValue.h
@@ -495,17 +495,16 @@ enum nsCSSUnit {
   eCSSUnit_Calc_Plus    = 31,     // (nsCSSValue::Array*) + node within calc()
   eCSSUnit_Calc_Minus   = 32,     // (nsCSSValue::Array*) - within calc
   eCSSUnit_Calc_Times_L = 33,     // (nsCSSValue::Array*) num * val within calc
   eCSSUnit_Calc_Times_R = 34,     // (nsCSSValue::Array*) val * num within calc
   eCSSUnit_Calc_Divided = 35,     // (nsCSSValue::Array*) / within calc
 
   eCSSUnit_URL          = 40,     // (nsCSSValue::URL*) value
   eCSSUnit_Image        = 41,     // (nsCSSValue::Image*) value
-  eCSSUnit_Gradient     = 42,     // (nsCSSValueGradient*) value
   eCSSUnit_GridTemplateAreas   = 44,   // (GridTemplateAreasValue*)
                                        // for grid-template-areas
 
   eCSSUnit_Pair         = 50,     // (nsCSSValuePair*) pair of values
   eCSSUnit_Triplet      = 51,     // (nsCSSValueTriplet*) triplet of values
   eCSSUnit_Rect         = 52,     // (nsCSSRect*) rectangle (four values)
   eCSSUnit_List         = 53,     // (nsCSSValueList*) list of values
   eCSSUnit_ListDep      = 54,     // (nsCSSValueList*) same as List
@@ -581,17 +580,16 @@ enum nsCSSUnit {
   // Time units
   eCSSUnit_Seconds      = 3000,    // (float) Standard time
   eCSSUnit_Milliseconds = 3001,    // (float) 1/1000 second
 
   // Flexible fraction (CSS Grid)
   eCSSUnit_FlexFraction = 4000     // (float) Fraction of free space
 };
 
-struct nsCSSValueGradient;
 struct nsCSSValuePair;
 struct nsCSSValuePair_heap;
 struct nsCSSRect;
 struct nsCSSRect_heap;
 struct nsCSSValueList;
 struct nsCSSValueList_heap;
 struct nsCSSValueSharedList;
 struct nsCSSValuePairList;
@@ -617,17 +615,16 @@ public:
   }
 
   nsCSSValue(int32_t aValue, nsCSSUnit aUnit);
   nsCSSValue(float aValue, nsCSSUnit aUnit);
   nsCSSValue(const nsString& aValue, nsCSSUnit aUnit);
   nsCSSValue(Array* aArray, nsCSSUnit aUnit);
   explicit nsCSSValue(mozilla::css::URLValue* aValue);
   explicit nsCSSValue(mozilla::css::ImageValue* aValue);
-  explicit nsCSSValue(nsCSSValueGradient* aValue);
   explicit nsCSSValue(mozilla::css::GridTemplateAreasValue* aValue);
   explicit nsCSSValue(mozilla::SharedFontList* aValue);
   nsCSSValue(const nsCSSValue& aCopy);
   nsCSSValue(nsCSSValue&& aOther)
     : mUnit(aOther.mUnit)
     , mValue(aOther.mValue)
   {
     aOther.mUnit = eCSSUnit_Null;
@@ -800,22 +797,16 @@ public:
   nsIURI* GetURLValue() const
   {
     MOZ_ASSERT(mUnit == eCSSUnit_URL || mUnit == eCSSUnit_Image,
                "not a URL value");
     return mUnit == eCSSUnit_URL ?
       mValue.mURL->GetURI() : mValue.mImage->GetURI();
   }
 
-  nsCSSValueGradient* GetGradientValue() const
-  {
-    MOZ_ASSERT(mUnit == eCSSUnit_Gradient, "not a gradient value");
-    return mValue.mGradient;
-  }
-
   nsCSSValueSharedList* GetSharedListValue() const
   {
     MOZ_ASSERT(mUnit == eCSSUnit_SharedList, "not a shared list value");
     return mValue.mSharedList;
   }
 
   mozilla::NotNull<mozilla::SharedFontList*> GetFontFamilyListValue() const
   {
@@ -927,17 +918,16 @@ public:
                           float aComponent3,
                           float aAlpha, nsCSSUnit aUnit);
   void SetRGBAColorValue(const mozilla::css::RGBAColorData& aValue);
   void SetComplexColorValue(
     already_AddRefed<mozilla::css::ComplexColorValue> aValue);
   void SetArrayValue(nsCSSValue::Array* aArray, nsCSSUnit aUnit);
   void SetURLValue(mozilla::css::URLValue* aURI);
   void SetImageValue(mozilla::css::ImageValue* aImage);
-  void SetGradientValue(nsCSSValueGradient* aGradient);
   void SetGridTemplateAreas(mozilla::css::GridTemplateAreasValue* aValue);
   void SetFontFamilyListValue(already_AddRefed<mozilla::SharedFontList> aFontListValue);
   void SetPairValue(const nsCSSValuePair* aPair);
   void SetPairValue(const nsCSSValue& xValue, const nsCSSValue& yValue);
   void SetSharedListValue(nsCSSValueSharedList* aList);
   void SetDependentListValue(nsCSSValueList* aList);
   void SetDependentPairListValue(nsCSSValuePairList* aList);
   void SetTripletValue(const nsCSSValueTriplet* aTriplet);
@@ -1003,17 +993,16 @@ protected:
     // If we're of a string type, mString is not null.
     nsStringBuffer* MOZ_OWNING_REF mString;
     nscolor    mColor;
     nsAtom* MOZ_OWNING_REF mAtom;
     Array* MOZ_OWNING_REF mArray;
     mozilla::css::URLValue* MOZ_OWNING_REF mURL;
     mozilla::css::ImageValue* MOZ_OWNING_REF mImage;
     mozilla::css::GridTemplateAreasValue* MOZ_OWNING_REF mGridTemplateAreas;
-    nsCSSValueGradient* MOZ_OWNING_REF mGradient;
     nsCSSValuePair_heap* MOZ_OWNING_REF mPair;
     nsCSSRect_heap* MOZ_OWNING_REF mRect;
     nsCSSValueTriplet_heap* MOZ_OWNING_REF mTriplet;
     nsCSSValueList_heap* MOZ_OWNING_REF mList;
     nsCSSValueList* mListDependent;
     nsCSSValueSharedList* MOZ_OWNING_REF mSharedList;
     nsCSSValuePairList_heap* MOZ_OWNING_REF mPairList;
     nsCSSValuePairList* mPairListDependent;
@@ -1562,151 +1551,16 @@ nsCSSValue::GetPairListValue() const
   if (mUnit == eCSSUnit_PairList)
     return mValue.mPairList;
   else {
     MOZ_ASSERT (mUnit == eCSSUnit_PairListDep, "not a pairlist value");
     return mValue.mPairListDependent;
   }
 }
 
-struct nsCSSValueGradientStop {
-public:
-  nsCSSValueGradientStop();
-  // needed to keep bloat logs happy when we use the TArray
-  // in nsCSSValueGradient
-  nsCSSValueGradientStop(const nsCSSValueGradientStop& aOther);
-  ~nsCSSValueGradientStop();
-
-  nsCSSValue mLocation;
-  nsCSSValue mColor;
-  // If mIsInterpolationHint is true, there is no color, just
-  // a location.
-  bool mIsInterpolationHint;
-
-  bool operator==(const nsCSSValueGradientStop& aOther) const
-  {
-    return (mLocation == aOther.mLocation &&
-            mIsInterpolationHint == aOther.mIsInterpolationHint &&
-            (mIsInterpolationHint || mColor == aOther.mColor));
-  }
-
-  bool operator!=(const nsCSSValueGradientStop& aOther) const
-  {
-    return !(*this == aOther);
-  }
-
-  size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
-};
-
-struct nsCSSValueGradient final {
-  nsCSSValueGradient(bool aIsRadial, bool aIsRepeating);
-
-  // true if gradient is radial, false if it is linear
-  bool mIsRadial;
-  bool mIsRepeating;
-  bool mIsLegacySyntax; // If true, serialization should use a vendor prefix.
-  // XXXdholbert This will hopefully be going away soon, if bug 1337655 sticks:
-  bool mIsMozLegacySyntax; // (Only makes sense when mIsLegacySyntax is true.)
-                           // If true, serialization should use -moz prefix.
-                           // Else, serialization should use -webkit prefix.
-  bool mIsExplicitSize;
-  // line position and angle
-  nsCSSValuePair mBgPos;
-  nsCSSValue mAngle;
-
-  // Only meaningful if mIsRadial is true
-private:
-  nsCSSValue mRadialValues[2];
-public:
-  nsCSSValue& GetRadialShape()
-  {
-    MOZ_ASSERT(!mIsExplicitSize);
-    return mRadialValues[0];
-  }
-  const nsCSSValue& GetRadialShape() const
-  {
-    MOZ_ASSERT(!mIsExplicitSize);
-    return mRadialValues[0];
-  }
-  nsCSSValue& GetRadialSize()
-  {
-    MOZ_ASSERT(!mIsExplicitSize);
-    return mRadialValues[1];
-  }
-  const nsCSSValue& GetRadialSize() const
-  {
-    MOZ_ASSERT(!mIsExplicitSize);
-    return mRadialValues[1];
-  }
-  nsCSSValue& GetRadiusX()
-  {
-    MOZ_ASSERT(mIsExplicitSize);
-    return mRadialValues[0];
-  }
-  const nsCSSValue& GetRadiusX() const
-  {
-    MOZ_ASSERT(mIsExplicitSize);
-    return mRadialValues[0];
-  }
-  nsCSSValue& GetRadiusY()
-  {
-    MOZ_ASSERT(mIsExplicitSize);
-    return mRadialValues[1];
-  }
-  const nsCSSValue& GetRadiusY() const
-  {
-    MOZ_ASSERT(mIsExplicitSize);
-    return mRadialValues[1];
-  }
-
-  InfallibleTArray<nsCSSValueGradientStop> mStops;
-
-  bool operator==(const nsCSSValueGradient& aOther) const
-  {
-    if (mIsRadial != aOther.mIsRadial ||
-        mIsRepeating != aOther.mIsRepeating ||
-        mIsLegacySyntax != aOther.mIsLegacySyntax ||
-        mIsMozLegacySyntax != aOther.mIsMozLegacySyntax ||
-        mIsExplicitSize != aOther.mIsExplicitSize ||
-        mBgPos != aOther.mBgPos ||
-        mAngle != aOther.mAngle ||
-        mRadialValues[0] != aOther.mRadialValues[0] ||
-        mRadialValues[1] != aOther.mRadialValues[1])
-      return false;
-
-    if (mStops.Length() != aOther.mStops.Length())
-      return false;
-
-    for (uint32_t i = 0; i < mStops.Length(); i++) {
-      if (mStops[i] != aOther.mStops[i])
-        return false;
-    }
-
-    return true;
-  }
-
-  bool operator!=(const nsCSSValueGradient& aOther) const
-  {
-    return !(*this == aOther);
-  }
-
-  NS_INLINE_DECL_REFCOUNTING(nsCSSValueGradient)
-
-  size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
-
-private:
-  // Private destructor, to discourage deletion outside of Release():
-  ~nsCSSValueGradient()
-  {
-  }
-
-  nsCSSValueGradient(const nsCSSValueGradient& aOther) = delete;
-  nsCSSValueGradient& operator=(const nsCSSValueGradient& aOther) = delete;
-};
-
 class nsCSSValueFloatColor final {
 public:
   nsCSSValueFloatColor(float aComponent1, float aComponent2, float aComponent3,
                        float aAlpha)
     : mComponent1(aComponent1)
     , mComponent2(aComponent2)
     , mComponent3(aComponent3)
     , mAlpha(aAlpha)