Bug 1325940 part 1 - Added a constructor for nsCSSValue to accept enumerations. r=xidorn
MozReview-Commit-ID: 5Vns9QGA8c5
--- a/layout/style/nsCSSValue.h
+++ b/layout/style/nsCSSValue.h
@@ -617,16 +617,26 @@ public:
explicit nsCSSValue(mozilla::SharedFontList* aValue);
nsCSSValue(const nsCSSValue& aCopy);
nsCSSValue(nsCSSValue&& aOther)
: mUnit(aOther.mUnit)
, mValue(aOther.mValue)
{
aOther.mUnit = eCSSUnit_Null;
}
+ template<typename T,
+ typename = typename std::enable_if<std::is_enum<T>::value>::type>
+ explicit nsCSSValue(T aValue)
+ : mUnit(eCSSUnit_Enumerated)
+ {
+ static_assert(mozilla::EnumTypeFitsWithin<T, int32_t>::value,
+ "aValue must be an enum that fits within mValue.mInt");
+ mValue.mInt = static_cast<int32_t>(aValue);
+ }
+
~nsCSSValue() { Reset(); }
nsCSSValue& operator=(const nsCSSValue& aCopy);
nsCSSValue& operator=(nsCSSValue&& aCopy);
bool operator==(const nsCSSValue& aOther) const;
bool operator!=(const nsCSSValue& aOther) const
{