Bug 1297982 - Replace NS_STYLE_BOX_ALIGN_* with enum class; r?xidorn
MozReview-Commit-ID: EO8hXmXooft
--- a/layout/generic/nsFlexContainerFrame.cpp
+++ b/layout/generic/nsFlexContainerFrame.cpp
@@ -119,25 +119,25 @@ IsLegacyBox(const nsStyleDisplay* aStyle
// Returns the "align-items" value that's equivalent to the legacy "box-align"
// value in the given style struct.
static uint8_t
ConvertLegacyStyleToAlignItems(const nsStyleXUL* aStyleXUL)
{
// -[moz|webkit]-box-align corresponds to modern "align-items"
switch (aStyleXUL->mBoxAlign) {
- case NS_STYLE_BOX_ALIGN_STRETCH:
+ case StyleBoxAlign::Stretch:
return NS_STYLE_ALIGN_STRETCH;
- case NS_STYLE_BOX_ALIGN_START:
+ case StyleBoxAlign::Start:
return NS_STYLE_ALIGN_FLEX_START;
- case NS_STYLE_BOX_ALIGN_CENTER:
+ case StyleBoxAlign::Center:
return NS_STYLE_ALIGN_CENTER;
- case NS_STYLE_BOX_ALIGN_BASELINE:
+ case StyleBoxAlign::Baseline:
return NS_STYLE_ALIGN_BASELINE;
- case NS_STYLE_BOX_ALIGN_END:
+ case StyleBoxAlign::End:
return NS_STYLE_ALIGN_FLEX_END;
}
MOZ_ASSERT_UNREACHABLE("Unrecognized mBoxAlign enum value");
// Fall back to default value of "align-items" property:
return NS_STYLE_ALIGN_STRETCH;
}
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -2237,21 +2237,21 @@ const KTableEntry nsCSSProps::kWritingMo
{ eCSSKeyword_rl_tb, NS_STYLE_WRITING_MODE_HORIZONTAL_TB },
{ eCSSKeyword_tb, NS_STYLE_WRITING_MODE_VERTICAL_RL },
{ eCSSKeyword_tb_rl, NS_STYLE_WRITING_MODE_VERTICAL_RL },
{ eCSSKeyword_UNKNOWN, -1 }
};
// Specific keyword tables for XUL.properties
const KTableEntry nsCSSProps::kBoxAlignKTable[] = {
- { eCSSKeyword_stretch, NS_STYLE_BOX_ALIGN_STRETCH },
- { eCSSKeyword_start, NS_STYLE_BOX_ALIGN_START },
- { eCSSKeyword_center, NS_STYLE_BOX_ALIGN_CENTER },
- { eCSSKeyword_baseline, NS_STYLE_BOX_ALIGN_BASELINE },
- { eCSSKeyword_end, NS_STYLE_BOX_ALIGN_END },
+ { eCSSKeyword_stretch, StyleBoxAlign::Stretch },
+ { eCSSKeyword_start, StyleBoxAlign::Start },
+ { eCSSKeyword_center, StyleBoxAlign::Center },
+ { eCSSKeyword_baseline, StyleBoxAlign::Baseline },
+ { eCSSKeyword_end, StyleBoxAlign::End },
{ eCSSKeyword_UNKNOWN, -1 }
};
const KTableEntry nsCSSProps::kBoxDirectionKTable[] = {
{ eCSSKeyword_normal, NS_STYLE_BOX_DIRECTION_NORMAL },
{ eCSSKeyword_reverse, NS_STYLE_BOX_DIRECTION_REVERSE },
{ eCSSKeyword_UNKNOWN, -1 }
};
--- a/layout/style/nsRuleNode.cpp
+++ b/layout/style/nsRuleNode.cpp
@@ -1329,16 +1329,17 @@ struct SetEnumValueHelper
{ \
auto value = aValue.GetIntValue(); \
MOZ_ASSERT(value >= static_cast<decltype(value)>(type_::min_) && \
value <= static_cast<decltype(value)>(type_::max_), \
"inappropriate value"); \
aField = static_cast<type_>(value); \
}
+ DEFINE_ENUM_CLASS_SETTER(StyleBoxAlign, Stretch, End)
DEFINE_ENUM_CLASS_SETTER(StyleBoxSizing, Content, Border)
DEFINE_ENUM_CLASS_SETTER(StyleFillRule, Nonzero, Evenodd)
DEFINE_ENUM_CLASS_SETTER(StyleFloat, None_, InlineEnd)
DEFINE_ENUM_CLASS_SETTER(StyleFloatEdge, ContentBox, MarginBox)
DEFINE_ENUM_CLASS_SETTER(StyleUserFocus, None_, SelectMenu)
DEFINE_ENUM_CLASS_SETTER(StyleUserSelect, None_, MozText)
#undef DEF_SET_ENUMERATED_VALUE
@@ -9088,17 +9089,17 @@ nsRuleNode::ComputeXULData(void* aStartS
{
COMPUTE_START_RESET(XUL, xul, parentXUL)
// box-align: enum, inherit, initial
SetValue(*aRuleData->ValueForBoxAlign(),
xul->mBoxAlign, conditions,
SETVAL_ENUMERATED | SETVAL_UNSET_INITIAL,
parentXUL->mBoxAlign,
- NS_STYLE_BOX_ALIGN_STRETCH);
+ StyleBoxAlign::Stretch);
// box-direction: enum, inherit, initial
SetValue(*aRuleData->ValueForBoxDirection(),
xul->mBoxDirection, conditions,
SETVAL_ENUMERATED | SETVAL_UNSET_INITIAL,
parentXUL->mBoxDirection,
NS_STYLE_BOX_DIRECTION_NORMAL);
--- a/layout/style/nsStyleConsts.h
+++ b/layout/style/nsStyleConsts.h
@@ -57,16 +57,25 @@ static inline css::Side operator++(css::
// Basic shapes
enum class StyleBasicShapeType : uint8_t {
Polygon,
Circle,
Ellipse,
Inset,
};
+// box-align
+enum class StyleBoxAlign : uint8_t {
+ Stretch,
+ Start,
+ Center,
+ Baseline,
+ End,
+};
+
// box-sizing
enum class StyleBoxSizing : uint8_t {
Content,
Border
};
// box-shadow
enum class StyleBoxShadowType : uint8_t {
@@ -163,23 +172,16 @@ enum class StyleUserSelect : uint8_t {
#define NS_STYLE_USER_MODIFY_READ_WRITE 1
#define NS_STYLE_USER_MODIFY_WRITE_ONLY 2
// -moz-window-dragging
#define NS_STYLE_WINDOW_DRAGGING_DEFAULT 0
#define NS_STYLE_WINDOW_DRAGGING_DRAG 1
#define NS_STYLE_WINDOW_DRAGGING_NO_DRAG 2
-// box-align
-#define NS_STYLE_BOX_ALIGN_STRETCH 0
-#define NS_STYLE_BOX_ALIGN_START 1
-#define NS_STYLE_BOX_ALIGN_CENTER 2
-#define NS_STYLE_BOX_ALIGN_BASELINE 3
-#define NS_STYLE_BOX_ALIGN_END 4
-
// box-pack
#define NS_STYLE_BOX_PACK_START 0
#define NS_STYLE_BOX_PACK_CENTER 1
#define NS_STYLE_BOX_PACK_END 2
#define NS_STYLE_BOX_PACK_JUSTIFY 3
// box-decoration-break
#define NS_STYLE_BOX_DECORATION_BREAK_SLICE 0
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -823,17 +823,17 @@ nsStyleList::sNoneQuotes;
// --------------------
// nsStyleXUL
//
nsStyleXUL::nsStyleXUL(StyleStructContext aContext)
: mBoxFlex(0.0f)
, mBoxOrdinal(1)
- , mBoxAlign(NS_STYLE_BOX_ALIGN_STRETCH)
+ , mBoxAlign(StyleBoxAlign::Stretch)
, mBoxDirection(NS_STYLE_BOX_DIRECTION_NORMAL)
, mBoxOrient(NS_STYLE_BOX_ORIENT_HORIZONTAL)
, mBoxPack(NS_STYLE_BOX_PACK_START)
, mStretchStack(true)
{
MOZ_COUNT_CTOR(nsStyleXUL);
}
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -3431,17 +3431,17 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsSt
// handled for descendants as hints not handled for descendants.
return nsChangeHint_NeedReflow |
nsChangeHint_ReflowChangesSizeOrPosition |
nsChangeHint_ClearAncestorIntrinsics;
}
float mBoxFlex; // [reset] see nsStyleConsts.h
uint32_t mBoxOrdinal; // [reset] see nsStyleConsts.h
- uint8_t mBoxAlign; // [reset] see nsStyleConsts.h
+ mozilla::StyleBoxAlign mBoxAlign; // [reset]
uint8_t mBoxDirection; // [reset] see nsStyleConsts.h
uint8_t mBoxOrient; // [reset] see nsStyleConsts.h
uint8_t mBoxPack; // [reset] see nsStyleConsts.h
bool mStretchStack; // [reset] see nsStyleConsts.h
};
struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleColumn
{
--- a/layout/xul/nsBoxFrame.cpp
+++ b/layout/xul/nsBoxFrame.cpp
@@ -348,23 +348,23 @@ nsBoxFrame::GetInitialHAlignment(nsBoxFr
aHalign = nsBoxFrame::hAlign_Right;
return true;
default: // Nonsensical value. Just bail.
return false;
}
}
else {
switch (boxInfo->mBoxAlign) {
- case NS_STYLE_BOX_ALIGN_START:
+ case StyleBoxAlign::Start:
aHalign = nsBoxFrame::hAlign_Left;
return true;
- case NS_STYLE_BOX_ALIGN_CENTER:
+ case StyleBoxAlign::Center:
aHalign = nsBoxFrame::hAlign_Center;
return true;
- case NS_STYLE_BOX_ALIGN_END:
+ case StyleBoxAlign::End:
aHalign = nsBoxFrame::hAlign_Right;
return true;
default: // Nonsensical value. Just bail.
return false;
}
}
return false;
@@ -408,26 +408,26 @@ nsBoxFrame::GetInitialVAlignment(nsBoxFr
}
// Now that we've checked for the attribute it's time to check CSS. For
// horizontal boxes we're checking ALIGN. For vertical boxes we are checking
// PACK.
const nsStyleXUL* boxInfo = StyleXUL();
if (IsXULHorizontal()) {
switch (boxInfo->mBoxAlign) {
- case NS_STYLE_BOX_ALIGN_START:
+ case StyleBoxAlign::Start:
aValign = nsBoxFrame::vAlign_Top;
return true;
- case NS_STYLE_BOX_ALIGN_CENTER:
+ case StyleBoxAlign::Center:
aValign = nsBoxFrame::vAlign_Middle;
return true;
- case NS_STYLE_BOX_ALIGN_BASELINE:
+ case StyleBoxAlign::Baseline:
aValign = nsBoxFrame::vAlign_BaseLine;
return true;
- case NS_STYLE_BOX_ALIGN_END:
+ case StyleBoxAlign::End:
aValign = nsBoxFrame::vAlign_Bottom;
return true;
default: // Nonsensical value. Just bail.
return false;
}
}
else {
switch (boxInfo->mBoxPack) {
@@ -542,17 +542,17 @@ nsBoxFrame::GetInitialAutoStretch(bool&
strings, eCaseMatters);
if (index != nsIContent::ATTR_MISSING && index != 0) {
aStretch = index == 1;
return true;
}
// Check the CSS box-align property.
const nsStyleXUL* boxInfo = StyleXUL();
- aStretch = (boxInfo->mBoxAlign == NS_STYLE_BOX_ALIGN_STRETCH);
+ aStretch = (boxInfo->mBoxAlign == StyleBoxAlign::Stretch);
return true;
}
void
nsBoxFrame::DidReflow(nsPresContext* aPresContext,
const ReflowInput* aReflowInput,
nsDidReflowStatus aStatus)