Bug 1463386: Remove eCSSUnit_Image. r?heycam draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Tue, 22 May 2018 13:34:17 +0200
changeset 798082 5e0f36130c6d14339e57a59e928500ad745ec11d
parent 798081 c9902fef3d633441d255655d620e1fe2f375d68b
child 798083 b1f04486772b837a72558a2cfa812923b525f04a
push id110668
push userbmo:emilio@crisal.io
push dateTue, 22 May 2018 11:36:48 +0000
reviewersheycam
bugs1463386
milestone62.0a1
Bug 1463386: Remove eCSSUnit_Image. r?heycam MozReview-Commit-ID: 9OX6iW7Lr5Q
layout/style/nsCSSValue.cpp
layout/style/nsCSSValue.h
layout/style/nsStyleStruct.cpp
--- a/layout/style/nsCSSValue.cpp
+++ b/layout/style/nsCSSValue.cpp
@@ -96,23 +96,16 @@ nsCSSValue::nsCSSValue(nsCSSValue::Array
 
 nsCSSValue::nsCSSValue(mozilla::css::URLValue* aValue)
   : mUnit(eCSSUnit_URL)
 {
   mValue.mURL = aValue;
   mValue.mURL->AddRef();
 }
 
-nsCSSValue::nsCSSValue(mozilla::css::ImageValue* aValue)
-  : mUnit(eCSSUnit_Image)
-{
-  mValue.mImage = aValue;
-  mValue.mImage->AddRef();
-}
-
 nsCSSValue::nsCSSValue(mozilla::css::GridTemplateAreasValue* aValue)
   : mUnit(eCSSUnit_GridTemplateAreas)
 {
   mValue.mGridTemplateAreas = aValue;
   mValue.mGridTemplateAreas->AddRef();
 }
 
 nsCSSValue::nsCSSValue(SharedFontList* aValue)
@@ -160,20 +153,16 @@ nsCSSValue::nsCSSValue(const nsCSSValue&
   else if (UnitHasArrayValue()) {
     mValue.mArray = aCopy.mValue.mArray;
     mValue.mArray->AddRef();
   }
   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_Pair == mUnit) {
     mValue.mPair = aCopy.mValue.mPair;
     mValue.mPair->AddRef();
   }
   else if (eCSSUnit_List == mUnit) {
     mValue.mList = aCopy.mValue.mList;
     mValue.mList->AddRef();
   }
@@ -259,19 +248,16 @@ bool nsCSSValue::operator==(const nsCSSV
       return mValue.mInt == aOther.mValue.mInt;
     }
     else if (UnitHasArrayValue()) {
       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_Pair == mUnit) {
       return *mValue.mPair == *aOther.mValue.mPair;
     }
     else if (eCSSUnit_List == mUnit) {
       return nsCSSValueList::Equal(mValue.mList, aOther.mValue.mList);
     }
     else if (eCSSUnit_SharedList == mUnit) {
       return *mValue.mSharedList == *aOther.mValue.mSharedList;
@@ -335,33 +321,16 @@ nsCSSValue::GetAngleValueInDegrees() con
     case eCSSUnit_Turn:   return angle * 360.0;
 
     default:
       MOZ_ASSERT(false, "unrecognized angular unit");
       return 0.0;
   }
 }
 
-imgRequestProxy* nsCSSValue::GetImageValue(nsIDocument* aDocument) const
-{
-  MOZ_ASSERT(mUnit == eCSSUnit_Image, "not an Image value");
-  return mValue.mImage->mRequests.GetWeak(aDocument);
-}
-
-already_AddRefed<imgRequestProxy>
-nsCSSValue::GetPossiblyStaticImageValue(nsIDocument* aDocument,
-                                        nsPresContext* aPresContext) const
-{
-  imgRequestProxy* req = GetImageValue(aDocument);
-  if (aPresContext->IsDynamic()) {
-    return do_AddRef(req);
-  }
-  return nsContentUtils::GetStaticRequest(aDocument, req);
-}
-
 nscoord nsCSSValue::GetPixelLength() const
 {
   MOZ_ASSERT(IsPixelLengthUnit(), "not a fixed length unit");
 
   double scaleFactor;
   switch (mUnit) {
   case eCSSUnit_Pixel: return nsPresContext::CSSPixelsToAppUnits(mValue.mFloat);
   case eCSSUnit_Pica: scaleFactor = 16.0; break;
@@ -391,18 +360,16 @@ nscoord nsCSSValue::GetPixelLength() con
 void nsCSSValue::DoReset()
 {
   if (UnitHasStringValue()) {
     mValue.mString->Release();
   } 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_Pair == mUnit) {
     DO_RELEASE(mPair);
   } else if (eCSSUnit_List == mUnit) {
     DO_RELEASE(mList);
   } else if (eCSSUnit_SharedList == mUnit) {
     DO_RELEASE(mSharedList);
   } else if (eCSSUnit_PairList == mUnit) {
     DO_RELEASE(mPairList);
@@ -486,24 +453,16 @@ void nsCSSValue::SetArrayValue(nsCSSValu
 void nsCSSValue::SetURLValue(mozilla::css::URLValue* aValue)
 {
   Reset();
   mUnit = eCSSUnit_URL;
   mValue.mURL = aValue;
   mValue.mURL->AddRef();
 }
 
-void nsCSSValue::SetImageValue(mozilla::css::ImageValue* aValue)
-{
-  Reset();
-  mUnit = eCSSUnit_Image;
-  mValue.mImage = aValue;
-  mValue.mImage->AddRef();
-}
-
 void nsCSSValue::SetGridTemplateAreas(mozilla::css::GridTemplateAreasValue* aValue)
 {
   Reset();
   mUnit = eCSSUnit_GridTemplateAreas;
   mValue.mGridTemplateAreas = aValue;
   mValue.mGridTemplateAreas->AddRef();
 }
 
@@ -899,21 +858,16 @@ nsCSSValue::SizeOfExcludingThis(mozilla:
     case eCSSUnit_Calc_Divided:
       break;
 
     // URL
     case eCSSUnit_URL:
       n += mValue.mURL->SizeOfIncludingThis(aMallocSizeOf);
       break;
 
-    // Image
-    case eCSSUnit_Image:
-      n += mValue.mImage->SizeOfIncludingThis(aMallocSizeOf);
-      break;
-
     // Pair
     case eCSSUnit_Pair:
       n += mValue.mPair->SizeOfIncludingThis(aMallocSizeOf);
       break;
 
     // List
     case eCSSUnit_List:
       n += mValue.mList->SizeOfIncludingThis(aMallocSizeOf);
--- a/layout/style/nsCSSValue.h
+++ b/layout/style/nsCSSValue.h
@@ -374,17 +374,16 @@ enum nsCSSUnit {
   // elements.  a + b + c + d is grouped as ((a + b) + c) + d
   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_GridTemplateAreas   = 44,   // (GridTemplateAreasValue*)
                                        // for grid-template-areas
 
   eCSSUnit_Pair         = 50,     // (nsCSSValuePair*) pair of values
   eCSSUnit_List         = 53,     // (nsCSSValueList*) list of values
   eCSSUnit_ListDep      = 54,     // (nsCSSValueList*) same as List
                                   //   but does not own the list
   eCSSUnit_SharedList   = 55,     // (nsCSSValueSharedList*) same as list
@@ -613,20 +612,18 @@ public:
   Array* GetArrayValue() const
   {
     MOZ_ASSERT(UnitHasArrayValue(), "not an array value");
     return mValue.mArray;
   }
 
   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();
+    MOZ_ASSERT(mUnit == eCSSUnit_URL, "not a URL value");
+    return mValue.mURL->GetURI();
   }
 
   nsCSSValueSharedList* GetSharedListValue() const
   {
     MOZ_ASSERT(mUnit == eCSSUnit_SharedList, "not a shared list value");
     return mValue.mSharedList;
   }
 
@@ -670,22 +667,16 @@ public:
   mozilla::css::URLValue* GetURLStructValue() const
   {
     // Not allowing this for Image values, because if the caller takes
     // a ref to them they won't be able to delete them properly.
     MOZ_ASSERT(mUnit == eCSSUnit_URL, "not a URL value");
     return mValue.mURL;
   }
 
-  mozilla::css::ImageValue* GetImageStructValue() const
-  {
-    MOZ_ASSERT(mUnit == eCSSUnit_Image, "not an Image value");
-    return mValue.mImage;
-  }
-
   mozilla::css::GridTemplateAreasValue* GetGridTemplateAreas() const
   {
     MOZ_ASSERT(mUnit == eCSSUnit_GridTemplateAreas,
                "not a grid-template-areas value");
     return mValue.mGridTemplateAreas;
   }
 
   // Not making this inline because that would force us to include
@@ -726,17 +717,16 @@ public:
   void SetPercentValue(float aValue);
   void SetFloatValue(float aValue, nsCSSUnit aUnit);
   void SetStringValue(const nsString& aValue, nsCSSUnit aUnit);
   void SetAtomIdentValue(already_AddRefed<nsAtom> aValue);
   // converts the nscoord to pixels
   void SetIntegerCoordValue(nscoord aCoord);
   void SetArrayValue(nsCSSValue::Array* aArray, nsCSSUnit aUnit);
   void SetURLValue(mozilla::css::URLValue* aURI);
-  void SetImageValue(mozilla::css::ImageValue* aImage);
   void SetGridTemplateAreas(mozilla::css::GridTemplateAreasValue* aValue);
   void SetFontFamilyListValue(already_AddRefed<mozilla::SharedFontList> aFontListValue);
   void SetFontStretch(mozilla::FontStretch aStretch);
   void SetFontSlantStyle(mozilla::FontSlantStyle aStyle);
   void SetFontWeight(mozilla::FontWeight aWeight);
   void SetPairValue(const nsCSSValuePair* aPair);
   void SetPairValue(const nsCSSValue& xValue, const nsCSSValue& yValue);
   void SetSharedListValue(nsCSSValueSharedList* aList);
@@ -799,17 +789,16 @@ protected:
     int32_t    mInt;
     float      mFloat;
     // Note: the capacity of the buffer may exceed the length of the string.
     // If we're of a string type, mString is not null.
     nsStringBuffer* MOZ_OWNING_REF mString;
     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;
     nsCSSValuePair_heap* MOZ_OWNING_REF mPair;
     nsCSSValueList_heap* MOZ_OWNING_REF mList;
     nsCSSValueList* mListDependent;
     nsCSSValueSharedList* MOZ_OWNING_REF mSharedList;
     nsCSSValuePairList_heap* MOZ_OWNING_REF mPairList;
     nsCSSValuePairList* mPairListDependent;
     mozilla::SharedFontList* MOZ_OWNING_REF mFontFamilyList;
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -2174,21 +2174,22 @@ nsStyleImageRequest::Resolve(
     MOZ_ASSERT(mModeFlags == aOldImageRequest->mModeFlags);
 
     mDocGroup = aOldImageRequest->mDocGroup;
     mImageValue = aOldImageRequest->mImageValue;
     mRequestProxy = aOldImageRequest->mRequestProxy;
   } else {
     mDocGroup = doc->GetDocGroup();
     mImageValue->Initialize(doc);
-
-    nsCSSValue value;
-    value.SetImageValue(mImageValue);
-    mRequestProxy = value.GetPossiblyStaticImageValue(aPresContext->Document(),
-                                                      aPresContext);
+    imgRequestProxy* request = mImageValue->mRequests.GetWeak(doc);
+    if (aPresContext->IsDynamic()) {
+      mRequestProxy = request;
+    } else if (request) {
+      request->GetStaticRequest(doc, getter_AddRefs(mRequestProxy));
+    }
   }
 
   if (!mRequestProxy) {
     // The URL resolution or image load failed.
     return false;
   }
 
   if (mModeFlags & Mode::Track) {