Bug 1287755 - Replace NS_STYLE_CLIP_SHAPE_SIZING_* with an enum class; r=heycam
MozReview-Commit-ID: KutLb8H9JOk
--- a/layout/style/StyleAnimationValue.cpp
+++ b/layout/style/StyleAnimationValue.cpp
@@ -3568,17 +3568,18 @@ StyleClipBasicShapeToCSSArray(const nsSt
functionArray->Item(functionArray->Count() - 1).
SetArrayValue(radiusArray, eCSSUnit_Array);
break;
}
default:
MOZ_ASSERT_UNREACHABLE("Unknown shape type");
return false;
}
- aResult->Item(1).SetIntValue(aClipPath.GetSizingBox(), eCSSUnit_Enumerated);
+ aResult->Item(1).SetIntValue(uint8_t(aClipPath.GetSizingBox()),
+ eCSSUnit_Enumerated);
return true;
}
bool
StyleAnimationValue::ExtractComputedValue(nsCSSProperty aProperty,
nsStyleContext* aStyleContext,
StyleAnimationValue& aComputedValue)
{
@@ -3958,17 +3959,18 @@ StyleAnimationValue::ExtractComputedValu
new mozilla::css::URLValue(clipPath.GetURL(),
uriAsStringBuffer,
doc->GetDocumentURI(),
doc->NodePrincipal());
auto result = MakeUnique<nsCSSValue>();
result->SetURLValue(url);
aComputedValue.SetAndAdoptCSSValueValue(result.release(), eUnit_URL);
} else if (type == NS_STYLE_CLIP_PATH_BOX) {
- aComputedValue.SetIntValue(clipPath.GetSizingBox(), eUnit_Enumerated);
+ aComputedValue.SetIntValue(uint8_t(clipPath.GetSizingBox()),
+ eUnit_Enumerated);
} else if (type == NS_STYLE_CLIP_PATH_SHAPE) {
RefPtr<nsCSSValue::Array> result = nsCSSValue::Array::Create(2);
if (!StyleClipBasicShapeToCSSArray(clipPath, result)) {
return false;
}
aComputedValue.SetCSSValueArrayValue(result, eUnit_Shape);
} else {
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -2295,23 +2295,23 @@ const KTableEntry nsCSSProps::kDominantB
const KTableEntry nsCSSProps::kFillRuleKTable[] = {
{ eCSSKeyword_nonzero, NS_STYLE_FILL_RULE_NONZERO },
{ eCSSKeyword_evenodd, NS_STYLE_FILL_RULE_EVENODD },
{ eCSSKeyword_UNKNOWN, -1 }
};
const KTableEntry nsCSSProps::kClipShapeSizingKTable[] = {
- { eCSSKeyword_content_box, NS_STYLE_CLIP_SHAPE_SIZING_CONTENT },
- { eCSSKeyword_padding_box, NS_STYLE_CLIP_SHAPE_SIZING_PADDING },
- { eCSSKeyword_border_box, NS_STYLE_CLIP_SHAPE_SIZING_BORDER },
- { eCSSKeyword_margin_box, NS_STYLE_CLIP_SHAPE_SIZING_MARGIN },
- { eCSSKeyword_fill_box, NS_STYLE_CLIP_SHAPE_SIZING_FILL },
- { eCSSKeyword_stroke_box, NS_STYLE_CLIP_SHAPE_SIZING_STROKE },
- { eCSSKeyword_view_box, NS_STYLE_CLIP_SHAPE_SIZING_VIEW },
+ { eCSSKeyword_content_box, uint8_t(StyleClipShapeSizing::Content) },
+ { eCSSKeyword_padding_box, uint8_t(StyleClipShapeSizing::Padding) },
+ { eCSSKeyword_border_box, uint8_t(StyleClipShapeSizing::Border) },
+ { eCSSKeyword_margin_box, uint8_t(StyleClipShapeSizing::Margin) },
+ { eCSSKeyword_fill_box, uint8_t(StyleClipShapeSizing::Fill) },
+ { eCSSKeyword_stroke_box, uint8_t(StyleClipShapeSizing::Stroke) },
+ { eCSSKeyword_view_box, uint8_t(StyleClipShapeSizing::View) },
{ eCSSKeyword_UNKNOWN, -1 }
};
const KTableEntry nsCSSProps::kShapeRadiusKTable[] = {
{ eCSSKeyword_closest_side, NS_RADIUS_CLOSEST_SIDE },
{ eCSSKeyword_farthest_side, NS_RADIUS_FARTHEST_SIDE },
{ eCSSKeyword_UNKNOWN, -1 }
};
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -5970,31 +5970,32 @@ nsComputedDOMStyle::CreatePrimitiveValue
shapeFunctionString.Append(')');
RefPtr<nsROCSSPrimitiveValue> functionValue = new nsROCSSPrimitiveValue;
functionValue->SetString(shapeFunctionString);
return functionValue.forget();
}
already_AddRefed<CSSValue>
nsComputedDOMStyle::CreatePrimitiveValueForClipPath(
- const nsStyleBasicShape* aStyleBasicShape, uint8_t aSizingBox)
+ const nsStyleBasicShape* aStyleBasicShape,
+ mozilla::StyleClipShapeSizing aSizingBox)
{
RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
if (aStyleBasicShape) {
valueList->AppendCSSValue(
CreatePrimitiveValueForBasicShape(aStyleBasicShape));
}
- if (aSizingBox == NS_STYLE_CLIP_SHAPE_SIZING_NOBOX) {
+ if (aSizingBox == StyleClipShapeSizing::NoBox) {
return valueList.forget();
}
nsAutoString boxString;
AppendASCIItoUTF16(
- nsCSSProps::ValueToKeyword(aSizingBox,
+ nsCSSProps::ValueToKeyword(uint8_t(aSizingBox),
nsCSSProps::kClipShapeSizingKTable),
boxString);
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
val->SetString(boxString);
valueList->AppendCSSValue(val.forget());
return valueList.forget();
}
--- a/layout/style/nsComputedDOMStyle.h
+++ b/layout/style/nsComputedDOMStyle.h
@@ -638,17 +638,18 @@ private:
bool GetFrameBorderRectHeight(nscoord& aHeight);
/* Helper functions for computing the filter property style. */
void SetCssTextToCoord(nsAString& aCssText, const nsStyleCoord& aCoord);
already_AddRefed<CSSValue> CreatePrimitiveValueForStyleFilter(
const nsStyleFilter& aStyleFilter);
already_AddRefed<CSSValue> CreatePrimitiveValueForClipPath(
- const nsStyleBasicShape* aStyleBasicShape, uint8_t aSizingBox);
+ const nsStyleBasicShape* aStyleBasicShape,
+ mozilla::StyleClipShapeSizing aSizingBox);
// Helper function for computing basic shape styles.
already_AddRefed<CSSValue> CreatePrimitiveValueForBasicShape(
const nsStyleBasicShape* aStyleBasicShape);
void BoxValuesToString(nsAString& aString,
const nsTArray<nsStyleCoord>& aBoxValues);
void BasicShapeRadiiToString(nsAString& aCssText,
const nsStyleCorners& aCorners);
--- a/layout/style/nsRuleNode.cpp
+++ b/layout/style/nsRuleNode.cpp
@@ -9696,27 +9696,27 @@ nsRuleNode::SetStyleClipPathToCSSValue(n
{
MOZ_ASSERT(aValue->GetUnit() == eCSSUnit_Array,
"expected a basic shape or reference box");
const nsCSSValue::Array* array = aValue->GetArrayValue();
MOZ_ASSERT(array->Count() == 1 || array->Count() == 2,
"Expect one or both of a shape function and geometry-box");
- uint8_t sizingBox = NS_STYLE_CLIP_SHAPE_SIZING_NOBOX;
+ StyleClipShapeSizing sizingBox = StyleClipShapeSizing::NoBox;
RefPtr<nsStyleBasicShape> basicShape;
for (size_t i = 0; i < array->Count(); ++i) {
if (array->Item(i).GetUnit() == eCSSUnit_Enumerated) {
int32_t type = array->Item(i).GetIntValue();
- if (type > NS_STYLE_CLIP_SHAPE_SIZING_VIEW ||
- type < NS_STYLE_CLIP_SHAPE_SIZING_NOBOX) {
+ if (type > uint8_t(StyleClipShapeSizing::View) ||
+ type < uint8_t(StyleClipShapeSizing::NoBox)) {
NS_NOTREACHED("unexpected reference box");
return;
}
- sizingBox = (uint8_t)type;
+ sizingBox = static_cast<StyleClipShapeSizing>(type);
} else if (array->Item(i).GetUnit() == eCSSUnit_Function) {
basicShape = GetStyleBasicShapeFromCSSValue(array->Item(i), aStyleContext,
aPresContext, aConditions);
} else {
NS_NOTREACHED("unexpected value");
return;
}
}
--- a/layout/style/nsStyleConsts.h
+++ b/layout/style/nsStyleConsts.h
@@ -56,24 +56,26 @@ static inline css::Side operator++(css::
// box-sizing
enum class StyleBoxSizing : uint8_t {
Content,
Border
};
// clip-path sizing
-#define NS_STYLE_CLIP_SHAPE_SIZING_NOBOX 0
-#define NS_STYLE_CLIP_SHAPE_SIZING_CONTENT 1
-#define NS_STYLE_CLIP_SHAPE_SIZING_PADDING 2
-#define NS_STYLE_CLIP_SHAPE_SIZING_BORDER 3
-#define NS_STYLE_CLIP_SHAPE_SIZING_MARGIN 4
-#define NS_STYLE_CLIP_SHAPE_SIZING_FILL 5
-#define NS_STYLE_CLIP_SHAPE_SIZING_STROKE 6
-#define NS_STYLE_CLIP_SHAPE_SIZING_VIEW 7
+enum class StyleClipShapeSizing : uint8_t {
+ NoBox,
+ Content,
+ Padding,
+ Border,
+ Margin,
+ Fill,
+ Stroke,
+ View,
+};
// Basic Shapes
#define NS_STYLE_BASIC_SHAPE_POLYGON 0
#define NS_STYLE_BASIC_SHAPE_CIRCLE 1
#define NS_STYLE_BASIC_SHAPE_ELLIPSE 2
#define NS_STYLE_BASIC_SHAPE_INSET 3
// box-shadow
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -1002,24 +1002,24 @@ nsStyleBasicShape::GetShapeTypeName() co
}
// --------------------
// nsStyleClipPath
//
nsStyleClipPath::nsStyleClipPath()
: mType(NS_STYLE_CLIP_PATH_NONE)
, mURL(nullptr)
- , mSizingBox(NS_STYLE_CLIP_SHAPE_SIZING_NOBOX)
+ , mSizingBox(mozilla::StyleClipShapeSizing::NoBox)
{
}
nsStyleClipPath::nsStyleClipPath(const nsStyleClipPath& aSource)
: mType(NS_STYLE_CLIP_PATH_NONE)
, mURL(nullptr)
- , mSizingBox(NS_STYLE_CLIP_SHAPE_SIZING_NOBOX)
+ , mSizingBox(mozilla::StyleClipShapeSizing::NoBox)
{
if (aSource.mType == NS_STYLE_CLIP_PATH_URL) {
SetURL(aSource.mURL);
} else if (aSource.mType == NS_STYLE_CLIP_PATH_SHAPE) {
SetBasicShape(aSource.mBasicShape, aSource.mSizingBox);
} else if (aSource.mType == NS_STYLE_CLIP_PATH_BOX) {
SetSizingBox(aSource.mSizingBox);
}
@@ -1040,17 +1040,17 @@ nsStyleClipPath::operator=(const nsStyle
if (aOther.mType == NS_STYLE_CLIP_PATH_URL) {
SetURL(aOther.mURL);
} else if (aOther.mType == NS_STYLE_CLIP_PATH_SHAPE) {
SetBasicShape(aOther.mBasicShape, aOther.mSizingBox);
} else if (aOther.mType == NS_STYLE_CLIP_PATH_BOX) {
SetSizingBox(aOther.mSizingBox);
} else {
ReleaseRef();
- mSizingBox = NS_STYLE_CLIP_SHAPE_SIZING_NOBOX;
+ mSizingBox = mozilla::StyleClipShapeSizing::NoBox;
mType = NS_STYLE_CLIP_PATH_NONE;
}
return *this;
}
bool
nsStyleClipPath::operator==(const nsStyleClipPath& aOther) const
{
@@ -1091,28 +1091,29 @@ nsStyleClipPath::SetURL(nsIURI* aURL)
NS_ASSERTION(aURL, "expected pointer");
ReleaseRef();
mURL = aURL;
mURL->AddRef();
mType = NS_STYLE_CLIP_PATH_URL;
}
void
-nsStyleClipPath::SetBasicShape(nsStyleBasicShape* aBasicShape, uint8_t aSizingBox)
+nsStyleClipPath::SetBasicShape(nsStyleBasicShape* aBasicShape,
+ mozilla::StyleClipShapeSizing aSizingBox)
{
NS_ASSERTION(aBasicShape, "expected pointer");
ReleaseRef();
mBasicShape = aBasicShape;
mBasicShape->AddRef();
mSizingBox = aSizingBox;
mType = NS_STYLE_CLIP_PATH_SHAPE;
}
void
-nsStyleClipPath::SetSizingBox(uint8_t aSizingBox)
+nsStyleClipPath::SetSizingBox(mozilla::StyleClipShapeSizing aSizingBox)
{
ReleaseRef();
mSizingBox = aSizingBox;
mType = NS_STYLE_CLIP_PATH_BOX;
}
// --------------------
// nsStyleFilter
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -3517,31 +3517,32 @@ struct nsStyleClipPath
void SetURL(nsIURI* aURL);
nsStyleBasicShape* GetBasicShape() const {
NS_ASSERTION(mType == NS_STYLE_CLIP_PATH_SHAPE, "wrong clip-path type");
return mBasicShape;
}
void SetBasicShape(nsStyleBasicShape* mBasicShape,
- uint8_t aSizingBox = NS_STYLE_CLIP_SHAPE_SIZING_NOBOX);
-
- uint8_t GetSizingBox() const { return mSizingBox; }
- void SetSizingBox(uint8_t aSizingBox);
+ mozilla::StyleClipShapeSizing aSizingBox =
+ mozilla::StyleClipShapeSizing::NoBox);
+
+ mozilla::StyleClipShapeSizing GetSizingBox() const { return mSizingBox; }
+ void SetSizingBox(mozilla::StyleClipShapeSizing aSizingBox);
private:
void ReleaseRef();
void* operator new(size_t) = delete;
int32_t mType; // see NS_STYLE_CLIP_PATH_* constants in nsStyleConsts.h
union {
nsStyleBasicShape* mBasicShape;
nsIURI* mURL;
};
- uint8_t mSizingBox; // see NS_STYLE_CLIP_SHAPE_SIZING_* constants in nsStyleConsts.h
+ mozilla::StyleClipShapeSizing mSizingBox;
};
struct nsStyleFilter
{
nsStyleFilter();
nsStyleFilter(const nsStyleFilter& aSource);
~nsStyleFilter();
--- a/layout/svg/nsCSSClipPathInstance.cpp
+++ b/layout/svg/nsCSSClipPathInstance.cpp
@@ -63,23 +63,23 @@ nsCSSClipPathInstance::HitTestBasicShape
}
already_AddRefed<Path>
nsCSSClipPathInstance::CreateClipPath(DrawTarget* aDrawTarget)
{
nsRect r;
// XXXkrit SVG needs to use different boxes.
switch (mClipPathStyle.GetSizingBox()) {
- case NS_STYLE_CLIP_SHAPE_SIZING_CONTENT:
+ case StyleClipShapeSizing::Content:
r = mTargetFrame->GetContentRectRelativeToSelf();
break;
- case NS_STYLE_CLIP_SHAPE_SIZING_PADDING:
+ case StyleClipShapeSizing::Padding:
r = mTargetFrame->GetPaddingRectRelativeToSelf();
break;
- case NS_STYLE_CLIP_SHAPE_SIZING_MARGIN:
+ case StyleClipShapeSizing::Margin:
r = mTargetFrame->GetMarginRectRelativeToSelf();
break;
default: // Use the border box
r = mTargetFrame->GetRectRelativeToSelf();
}
if (mClipPathStyle.GetType() != NS_STYLE_CLIP_PATH_SHAPE) {
// TODO Clip to border-radius/reference box if no shape