--- a/layout/base/nsBidiPresUtils.cpp
+++ b/layout/base/nsBidiPresUtils.cpp
@@ -1548,17 +1548,17 @@ nsBidiPresUtils::RepositionFrame(nsIFram
LogicalMargin borderPadding = aFrame->GetLogicalUsedBorderAndPadding(frameWM);
// Since the visual order of frame could be different from the continuation
// order, we need to remove any inline border/padding [that is already applied
// based on continuation order] and then add it back based on the visual order
// (i.e. isFirst/isLast) to get the correct isize for the current frame.
// We don't need to do that for 'box-decoration-break:clone' because then all
// continuations have border/padding/margin applied.
if (aFrame->StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_SLICE) {
+ StyleBoxDecorationBreak::Slice) {
// First remove the border/padding that was applied based on logical order.
if (!aFrame->GetPrevContinuation()) {
frameISize -= borderPadding.IStart(frameWM);
}
if (!aFrame->GetNextContinuation()) {
frameISize -= borderPadding.IEnd(frameWM);
}
// Set margin/border/padding based on visual order.
--- a/layout/base/nsCSSRendering.cpp
+++ b/layout/base/nsCSSRendering.cpp
@@ -579,18 +579,17 @@ JoinBoxesForSlice(nsIFrame* aFrame, cons
aBorderArea.TopLeft();
}
return JoinBoxesForVerticalSlice(aFrame, aBorderArea);
}
static bool
IsBoxDecorationSlice(const nsStyleBorder& aStyleBorder)
{
- return aStyleBorder.mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_SLICE;
+ return aStyleBorder.mBoxDecorationBreak == StyleBoxDecorationBreak::Slice;
}
static nsRect
BoxDecorationRectForBorder(nsIFrame* aFrame, const nsRect& aBorderArea,
Sides aSkipSides,
const nsStyleBorder* aStyleBorder = nullptr)
{
if (!aStyleBorder) {
--- a/layout/base/nsDisplayList.cpp
+++ b/layout/base/nsDisplayList.cpp
@@ -2918,23 +2918,23 @@ nsDisplayBackgroundImage::GetOpaqueRegio
nsRegion result;
*aSnap = false;
if (!mBackgroundStyle)
return result;
*aSnap = true;
- // For NS_STYLE_BOX_DECORATION_BREAK_SLICE, don't try to optimize here, since
+ // For StyleBoxDecorationBreak::Slice, don't try to optimize here, since
// this could easily lead to O(N^2) behavior inside InlineBackgroundData,
// which expects frames to be sent to it in content order, not reverse
// content order which we'll produce here.
// Of course, if there's only one frame in the flow, it doesn't matter.
if (mFrame->StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE ||
+ StyleBoxDecorationBreak::Clone ||
(!mFrame->GetPrevContinuation() && !mFrame->GetNextContinuation())) {
const nsStyleImageLayers::Layer& layer = mBackgroundStyle->mImage.mLayers[mLayer];
if (layer.mImage.IsOpaque() && layer.mBlendMode == NS_STYLE_BLEND_NORMAL &&
layer.mRepeat.mXRepeat != NS_STYLE_IMAGELAYER_REPEAT_SPACE &&
layer.mRepeat.mYRepeat != NS_STYLE_IMAGELAYER_REPEAT_SPACE &&
layer.mClip != NS_STYLE_IMAGELAYER_CLIP_TEXT) {
result = GetInsideClipRegion(this, layer.mClip, mBounds, mBackgroundRect);
}
--- a/layout/generic/BlockReflowInput.cpp
+++ b/layout/generic/BlockReflowInput.cpp
@@ -202,17 +202,17 @@ BlockReflowInput::ComputeReplacedBlockOf
static nscoord
GetBEndMarginClone(nsIFrame* aFrame,
nsRenderingContext* aRenderingContext,
const LogicalRect& aContentArea,
WritingMode aWritingMode)
{
if (aFrame->StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE) {
+ StyleBoxDecorationBreak::Clone) {
SizeComputationInput os(aFrame, aRenderingContext, aWritingMode,
aContentArea.ISize(aWritingMode));
return os.ComputedLogicalMargin().
ConvertTo(aWritingMode,
aFrame->GetWritingMode()).BEnd(aWritingMode);
}
return 0;
}
--- a/layout/generic/nsBlockFrame.cpp
+++ b/layout/generic/nsBlockFrame.cpp
@@ -3078,17 +3078,17 @@ nsBlockFrame::ShouldApplyBStartMargin(Bl
{
if (aState.mFlags.mShouldApplyBStartMargin) {
// Apply short-circuit check to avoid searching the line list
return true;
}
if (!aState.IsAdjacentWithTop() ||
aChildFrame->StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE) {
+ StyleBoxDecorationBreak::Clone) {
// If we aren't at the start block-coordinate then something of non-zero
// height must have been placed. Therefore the childs block-start margin
// applies.
aState.mFlags.mShouldApplyBStartMargin = true;
return true;
}
// Determine if this line is "essentially" the first line
@@ -3144,17 +3144,17 @@ nsBlockFrame::ReflowBlockFrame(BlockRefl
// Clear past floats before the block if the clear style is not none
aLine->SetBreakTypeBefore(breakType);
// See if we should apply the block-start margin. If the block frame being
// reflowed is a continuation (non-null prev-in-flow) then we don't
// apply its block-start margin because it's not significant unless it has
// 'box-decoration-break:clone'. Otherwise, dig deeper.
bool applyBStartMargin = (frame->StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE ||
+ StyleBoxDecorationBreak::Clone ||
!frame->GetPrevInFlow()) &&
ShouldApplyBStartMargin(aState, aLine, frame);
if (applyBStartMargin) {
// The HasClearance setting is only valid if ShouldApplyBStartMargin
// returned false (in which case the block-start margin-root set our
// clearance flag). Otherwise clear it now. We'll set it later on
// ourselves if necessary.
aLine->ClearHasClearance();
--- a/layout/generic/nsContainerFrame.cpp
+++ b/layout/generic/nsContainerFrame.cpp
@@ -847,17 +847,17 @@ nsContainerFrame::DoInlineIntrinsicISize
// first line.
// This frame is a first-in-flow, but it might have a previous bidi
// continuation, in which case that continuation should handle the startSide
// border.
// For box-decoration-break:clone we setup clonePBM = startPBM + endPBM and
// add that to each line. For box-decoration-break:slice clonePBM is zero.
nscoord clonePBM = 0; // PBM = PaddingBorderMargin
const bool sliceBreak =
- styleBorder->mBoxDecorationBreak == NS_STYLE_BOX_DECORATION_BREAK_SLICE;
+ styleBorder->mBoxDecorationBreak == StyleBoxDecorationBreak::Slice;
if (!GetPrevContinuation()) {
nscoord startPBM =
// clamp negative calc() to 0
std::max(GetCoord(stylePadding->mPadding.Get(startSide), 0), 0) +
styleBorder->GetComputedBorderWidth(startSide) +
GetCoord(styleMargin->mMargin.Get(startSide), 0);
if (MOZ_LIKELY(sliceBreak)) {
aData->mCurrentLine += startPBM;
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -1044,17 +1044,17 @@ nsIFrame::GetUsedPadding() const
}
return padding;
}
nsIFrame::Sides
nsIFrame::GetSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE) &&
+ StyleBoxDecorationBreak::Clone) &&
!(GetStateBits() & NS_FRAME_IS_OVERFLOW_CONTAINER)) {
return Sides();
}
// Convert the logical skip sides to physical sides using the frame's
// writing mode
WritingMode writingMode = GetWritingMode();
LogicalSides logicalSkip = GetLogicalSkipSides(aReflowInput);
@@ -1945,17 +1945,17 @@ nsIFrame::GetClipPropClipRect(const nsSt
if (!(aEffects->mClipFlags & NS_STYLE_CLIP_RECT) ||
!(aDisp->IsAbsolutelyPositioned(this) || IsSVGContentWithCSSClip(this))) {
return false;
}
*aRect = aEffects->mClip;
if (MOZ_LIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_SLICE)) {
+ StyleBoxDecorationBreak::Slice)) {
// The clip applies to the joined boxes so it's relative the first
// continuation.
nscoord y = 0;
for (nsIFrame* f = GetPrevContinuation(); f; f = f->GetPrevContinuation()) {
y += f->GetRect().height;
}
aRect->MoveBy(nsPoint(0, -y));
}
--- a/layout/generic/nsGridContainerFrame.cpp
+++ b/layout/generic/nsGridContainerFrame.cpp
@@ -4804,17 +4804,17 @@ nsGridContainerFrame::ReflowInFragmentai
}
// The available size for children - we'll set this to the edge of the last
// row in most cases below, but for now use the full size.
nscoord childAvailableSize = aFragmentainer.mToFragmentainerEnd;
const uint32_t startRow = aState.mStartRow;
const uint32_t numRows = aState.mRows.mSizes.Length();
bool isBDBClone = aState.mReflowInput->mStyleBorder->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE;
+ StyleBoxDecorationBreak::Clone;
nscoord bpBEnd = aState.mBorderPadding.BEnd(aState.mWM);
// Set |endRow| to the first row that doesn't fit.
uint32_t endRow = numRows;
for (uint32_t row = startRow; row < numRows; ++row) {
auto& sz = aState.mRows.mSizes[row];
const nscoord bEnd = sz.mPosition + sz.mBase;
nscoord remainingAvailableSize = childAvailableSize - bEnd;
@@ -4994,17 +4994,17 @@ nsGridContainerFrame::ReflowRowsInFragme
uint32_t aEndRow,
nscoord aBSize,
nscoord aAvailableSize)
{
FrameHashtable pushedItems;
FrameHashtable incompleteItems;
FrameHashtable overflowIncompleteItems;
bool isBDBClone = aState.mReflowInput->mStyleBorder->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE;
+ StyleBoxDecorationBreak::Clone;
bool didGrowRow = false;
// As we walk across rows, we track whether the current row is at the top
// of its grid-fragment, to help decide whether we can break before it. When
// this function starts, our row is at the top of the current fragment if:
// - we're starting with a nonzero row (i.e. we're a continuation)
// OR:
// - we're starting with the first row, & we're not allowed to break before
// it (which makes it effectively at the top of its grid-fragment).
@@ -5609,17 +5609,17 @@ nsGridContainerFrame::Reflow(nsPresConte
bSize = ReflowChildren(gridReflowInput, contentArea, aDesiredSize, aStatus);
bSize = std::max(bSize - consumedBSize, 0);
// Skip our block-end border if we're INCOMPLETE.
if (!NS_FRAME_IS_COMPLETE(aStatus) &&
!gridReflowInput.mSkipSides.BEnd() &&
StyleBorder()->mBoxDecorationBreak !=
- NS_STYLE_BOX_DECORATION_BREAK_CLONE) {
+ StyleBoxDecorationBreak::Clone) {
bp.BEnd(wm) = nscoord(0);
}
LogicalSize desiredSize(wm, computedISize + bp.IStartEnd(wm),
bSize + bp.BStartEnd(wm));
aDesiredSize.SetSize(wm, desiredSize);
aDesiredSize.mOverflowAreas.UnionAllWith(nsRect(0, 0,
aDesiredSize.Width(),
--- a/layout/generic/nsImageFrame.cpp
+++ b/layout/generic/nsImageFrame.cpp
@@ -2150,17 +2150,17 @@ nsImageFrame::List(FILE* out, const char
fprintf_stderr(out, "%s\n", str.get());
}
#endif
nsIFrame::LogicalSides
nsImageFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
if (nullptr != GetPrevInFlow()) {
skip |= eLogicalSideBitsBStart;
}
if (nullptr != GetNextInFlow()) {
skip |= eLogicalSideBitsBEnd;
--- a/layout/generic/nsInlineFrame.cpp
+++ b/layout/generic/nsInlineFrame.cpp
@@ -132,18 +132,17 @@ nsInlineFrame::IsSelfEmpty()
border->GetComputedBorderWidth(NS_SIDE_RIGHT) != 0 ||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetRight()) ||
!IsMarginZero(margin->mMargin.GetRight());
}
if (haveStart || haveEnd) {
// We skip this block and return false for box-decoration-break:clone since
// in that case all the continuations will have the border/padding/margin.
if ((GetStateBits() & NS_FRAME_PART_OF_IBSPLIT) &&
- StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_SLICE) {
+ StyleBorder()->mBoxDecorationBreak == StyleBoxDecorationBreak::Slice) {
// When direction=rtl, we need to consider logical rather than visual
// start and end, so swap the flags.
if (!wm.IsBidiLTR()) {
Swap(haveStart, haveEnd);
}
// For ib-split frames, ignore things we know we'll skip in GetSkipSides.
// XXXbz should we be doing this for non-ib-split frames too, in a more
// general way?
@@ -580,17 +579,17 @@ nsInlineFrame::ReflowFrames(nsPresContex
bool inFirstLine = aReflowInput.mLineLayout->GetInFirstLine();
RestyleManagerHandle restyleManager = aPresContext->RestyleManager();
WritingMode frameWM = aReflowInput.GetWritingMode();
WritingMode lineWM = aReflowInput.mLineLayout->mRootSpan->mWritingMode;
LogicalMargin framePadding = aReflowInput.ComputedLogicalBorderPadding();
nscoord startEdge = 0;
const bool boxDecorationBreakClone =
MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE);
+ StyleBoxDecorationBreak::Clone);
// Don't offset by our start borderpadding if we have a prev continuation or
// if we're in a part of an {ib} split other than the first one. For
// box-decoration-break:clone we always offset our start since all
// continuations have border/padding.
if ((!GetPrevContinuation() && !FrameIsNonFirstInIBSplit()) ||
boxDecorationBreakClone) {
startEdge = framePadding.IStart(frameWM);
}
@@ -939,17 +938,17 @@ nsInlineFrame::PushFrames(nsPresContext*
//////////////////////////////////////////////////////////////////////
nsIFrame::LogicalSides
nsInlineFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
if (!IsFirst()) {
nsInlineFrame* prev = (nsInlineFrame*) GetPrevContinuation();
if ((GetStateBits() & NS_INLINE_FRAME_BIDI_VISUAL_STATE_IS_SET) ||
(prev && (prev->mRect.height || prev->mRect.width))) {
--- a/layout/generic/nsLineLayout.cpp
+++ b/layout/generic/nsLineLayout.cpp
@@ -1183,17 +1183,17 @@ nsLineLayout::AllowForStartMargin(PerFra
// in an ib split. Note that the ib sibling (block-in-inline
// sibling) annotations only live on the first continuation, but we
// don't want to apply the start margin for later continuations
// anyway. For box-decoration-break:clone we apply the start-margin
// on all continuations.
if ((pfd->mFrame->GetPrevContinuation() ||
pfd->mFrame->FrameIsNonFirstInIBSplit()) &&
aReflowInput.mStyleBorder->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_SLICE) {
+ StyleBoxDecorationBreak::Slice) {
// Zero this out so that when we compute the max-element-width of
// the frame we will properly avoid adding in the starting margin.
pfd->mMargin.IStart(lineWM) = 0;
} else if (NS_UNCONSTRAINEDSIZE == aReflowInput.ComputedISize()) {
NS_WARN_IF_FALSE(NS_UNCONSTRAINEDSIZE != aReflowInput.AvailableISize(),
"have unconstrained inline-size; this should only result "
"from very large sizes, not attempts at intrinsic "
"inline-size calculation");
@@ -1297,17 +1297,17 @@ nsLineLayout::CanPlaceFrame(PerFrameData
* For box-decoration-break:clone we apply the end margin on all
* continuations (that are not letter frames).
*/
if ((NS_FRAME_IS_NOT_COMPLETE(aStatus) ||
pfd->mFrame->LastInFlow()->GetNextContinuation() ||
pfd->mFrame->FrameIsNonLastInIBSplit()) &&
!pfd->mIsLetterFrame &&
pfd->mFrame->StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_SLICE) {
+ StyleBoxDecorationBreak::Slice) {
pfd->mMargin.IEnd(lineWM) = 0;
}
// Apply the start margin to the frame bounds.
nscoord startMargin = pfd->mMargin.IStart(lineWM);
nscoord endMargin = pfd->mMargin.IEnd(lineWM);
pfd->mBounds.IStart(lineWM) += startMargin;
--- a/layout/generic/nsRubyFrame.cpp
+++ b/layout/generic/nsRubyFrame.cpp
@@ -113,17 +113,17 @@ nsRubyFrame::Reflow(nsPresContext* aPres
mBStartLeading = mBEndLeading = 0;
// Begin the span for the ruby frame
WritingMode frameWM = aReflowInput.GetWritingMode();
WritingMode lineWM = aReflowInput.mLineLayout->GetWritingMode();
LogicalMargin borderPadding = aReflowInput.ComputedLogicalBorderPadding();
nscoord startEdge = 0;
const bool boxDecorationBreakClone =
- StyleBorder()->mBoxDecorationBreak == NS_STYLE_BOX_DECORATION_BREAK_CLONE;
+ StyleBorder()->mBoxDecorationBreak == StyleBoxDecorationBreak::Clone;
if (boxDecorationBreakClone || !GetPrevContinuation()) {
startEdge = borderPadding.IStart(frameWM);
}
NS_ASSERTION(aReflowInput.AvailableISize() != NS_UNCONSTRAINEDSIZE,
"should no longer use available widths");
nscoord availableISize = aReflowInput.AvailableISize();
availableISize -= startEdge + borderPadding.IEnd(frameWM);
aReflowInput.mLineLayout->BeginSpan(this, &aReflowInput,
--- a/layout/generic/nsSplittableFrame.cpp
+++ b/layout/generic/nsSplittableFrame.cpp
@@ -238,17 +238,17 @@ nsSplittableFrame::GetEffectiveComputedB
nsIFrame::LogicalSides
nsSplittableFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (IS_TRUE_OVERFLOW_CONTAINER(this)) {
return LogicalSides(eLogicalSideBitsBBoth);
}
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
if (GetPrevInFlow()) {
skip |= eLogicalSideBitsBStart;
}
@@ -279,17 +279,17 @@ nsSplittableFrame::GetLogicalSkipSides(c
LogicalSides
nsSplittableFrame::PreReflowBlockLevelLogicalSkipSides() const
{
if (MOZ_UNLIKELY(IS_TRUE_OVERFLOW_CONTAINER(this))) {
return LogicalSides(mozilla::eLogicalSideBitsBBoth);
}
if (MOZ_LIKELY(StyleBorder()->mBoxDecorationBreak !=
- NS_STYLE_BOX_DECORATION_BREAK_CLONE) &&
+ StyleBoxDecorationBreak::Clone) &&
GetPrevInFlow()) {
return LogicalSides(mozilla::eLogicalSideBitsBStart);
}
return LogicalSides();
}
#ifdef DEBUG
void
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -1026,18 +1026,18 @@ const KTableEntry nsCSSProps::kBorderSty
const KTableEntry nsCSSProps::kBorderWidthKTable[] = {
{ eCSSKeyword_thin, NS_STYLE_BORDER_WIDTH_THIN },
{ eCSSKeyword_medium, NS_STYLE_BORDER_WIDTH_MEDIUM },
{ eCSSKeyword_thick, NS_STYLE_BORDER_WIDTH_THICK },
{ eCSSKeyword_UNKNOWN, -1 }
};
const KTableEntry nsCSSProps::kBoxDecorationBreakKTable[] = {
- { eCSSKeyword_slice, NS_STYLE_BOX_DECORATION_BREAK_SLICE },
- { eCSSKeyword_clone, NS_STYLE_BOX_DECORATION_BREAK_CLONE },
+ { eCSSKeyword_slice, StyleBoxDecorationBreak::Slice },
+ { eCSSKeyword_clone, StyleBoxDecorationBreak::Clone },
{ eCSSKeyword_UNKNOWN, -1 }
};
const KTableEntry nsCSSProps::kBoxShadowTypeKTable[] = {
{ eCSSKeyword_inset, uint8_t(StyleBoxShadowType::Inset) },
{ eCSSKeyword_UNKNOWN, -1 }
};
--- a/layout/style/nsRuleNode.cpp
+++ b/layout/style/nsRuleNode.cpp
@@ -1330,16 +1330,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(StyleBoxDecorationBreak, Slice, Clone)
DEFINE_ENUM_CLASS_SETTER(StyleBoxPack, Start, Justify)
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)
@@ -7464,17 +7465,17 @@ nsRuleNode::ComputeBorderData(void* aSta
{
COMPUTE_START_RESET(Border, border, parentBorder)
// box-decoration-break: enum, inherit, initial
SetValue(*aRuleData->ValueForBoxDecorationBreak(),
border->mBoxDecorationBreak, conditions,
SETVAL_ENUMERATED | SETVAL_UNSET_INITIAL,
parentBorder->mBoxDecorationBreak,
- NS_STYLE_BOX_DECORATION_BREAK_SLICE);
+ StyleBoxDecorationBreak::Slice);
// border-width, border-*-width: length, enum, inherit
nsStyleCoord coord;
{
const nsCSSPropertyID* subprops =
nsCSSProps::SubpropertyEntryFor(eCSSProperty_border_width);
NS_FOR_CSS_SIDES(side) {
const nsCSSValue& value = *aRuleData->ValueFor(subprops[side]);
--- a/layout/style/nsStyleConsts.h
+++ b/layout/style/nsStyleConsts.h
@@ -66,16 +66,22 @@ enum class StyleBasicShapeType : uint8_t
enum class StyleBoxAlign : uint8_t {
Stretch,
Start,
Center,
Baseline,
End,
};
+// box-decoration-break
+enum class StyleBoxDecorationBreak : uint8_t {
+ Slice,
+ Clone,
+};
+
// box-pack
enum class StyleBoxPack : uint8_t {
Start,
Center,
End,
Justify,
};
@@ -180,20 +186,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-decoration-break
-#define NS_STYLE_BOX_DECORATION_BREAK_SLICE 0
-#define NS_STYLE_BOX_DECORATION_BREAK_CLONE 1
-
// box-direction
#define NS_STYLE_BOX_DIRECTION_NORMAL 0
#define NS_STYLE_BOX_DIRECTION_REVERSE 1
// box-orient
#define NS_STYLE_BOX_ORIENT_HORIZONTAL 0
#define NS_STYLE_BOX_ORIENT_VERTICAL 1
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -435,17 +435,17 @@ nsStylePadding::CalcDifference(const nsS
}
nsStyleBorder::nsStyleBorder(StyleStructContext aContext)
: mBorderColors(nullptr)
, mBorderImageFill(NS_STYLE_BORDER_IMAGE_SLICE_NOFILL)
, mBorderImageRepeatH(NS_STYLE_BORDER_IMAGE_REPEAT_STRETCH)
, mBorderImageRepeatV(NS_STYLE_BORDER_IMAGE_REPEAT_STRETCH)
, mFloatEdge(StyleFloatEdge::ContentBox)
- , mBoxDecorationBreak(NS_STYLE_BOX_DECORATION_BREAK_SLICE)
+ , mBoxDecorationBreak(StyleBoxDecorationBreak::Slice)
, mComputedBorder(0, 0, 0, 0)
{
MOZ_COUNT_CTOR(nsStyleBorder);
NS_FOR_CSS_HALF_CORNERS (corner) {
mBorderRadius.Set(corner, nsStyleCoord(0, nsStyleCoord::CoordConstructor));
}
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -1327,17 +1327,17 @@ public:
nsStyleSides mBorderImageSlice; // [reset] factor, percent
nsStyleSides mBorderImageWidth; // [reset] length, factor, percent, auto
nsStyleSides mBorderImageOutset; // [reset] length, factor
uint8_t mBorderImageFill; // [reset]
uint8_t mBorderImageRepeatH; // [reset] see nsStyleConsts.h
uint8_t mBorderImageRepeatV; // [reset]
mozilla::StyleFloatEdge mFloatEdge; // [reset]
- uint8_t mBoxDecorationBreak; // [reset] see nsStyleConsts.h
+ mozilla::StyleBoxDecorationBreak mBoxDecorationBreak; // [reset]
protected:
// mComputedBorder holds the CSS2.1 computed border-width values.
// In particular, these widths take into account the border-style
// for the relevant side, and the values are rounded to the nearest
// device pixel (which is not part of the definition of computed
// values). The presence or absence of a border-image does not
// affect border-width values.
--- a/layout/tables/nsTableCellFrame.cpp
+++ b/layout/tables/nsTableCellFrame.cpp
@@ -559,17 +559,17 @@ nsTableCellFrame::BuildDisplayList(nsDis
// event handling).
BuildDisplayListForChild(aBuilder, kid, aDirtyRect, aLists);
}
nsIFrame::LogicalSides
nsTableCellFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
if (nullptr != GetPrevInFlow()) {
skip |= eLogicalSideBitsBStart;
}
if (nullptr != GetNextInFlow()) {
--- a/layout/tables/nsTableColGroupFrame.cpp
+++ b/layout/tables/nsTableColGroupFrame.cpp
@@ -328,17 +328,17 @@ nsTableColGroupFrame::RemoveFrame(ChildL
mFrames.DestroyFrame(aOldFrame);
}
}
nsIFrame::LogicalSides
nsTableColGroupFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
if (nullptr != GetPrevInFlow()) {
skip |= eLogicalSideBitsBStart;
}
if (nullptr != GetNextInFlow()) {
--- a/layout/tables/nsTableFrame.cpp
+++ b/layout/tables/nsTableFrame.cpp
@@ -1413,17 +1413,17 @@ nsTableFrame::PaintTableBorderBackground
return result;
}
nsIFrame::LogicalSides
nsTableFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
// frame attribute was accounted for in nsHTMLTableElement::MapTableBorderInto
// account for pagination
if (nullptr != GetPrevInFlow()) {
skip |= eLogicalSideBitsBStart;
--- a/layout/tables/nsTableRowFrame.cpp
+++ b/layout/tables/nsTableRowFrame.cpp
@@ -621,17 +621,17 @@ nsTableRowFrame::BuildDisplayList(nsDisp
}
nsTableFrame::DisplayGenericTablePart(aBuilder, this, aDirtyRect, aLists, item);
}
nsIFrame::LogicalSides
nsTableRowFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
if (nullptr != GetPrevInFlow()) {
skip |= eLogicalSideBitsBStart;
}
if (nullptr != GetNextInFlow()) {
--- a/layout/tables/nsTableRowGroupFrame.cpp
+++ b/layout/tables/nsTableRowGroupFrame.cpp
@@ -263,17 +263,17 @@ nsTableRowGroupFrame::BuildDisplayList(n
nsTableFrame::DisplayGenericTablePart(aBuilder, this, aDirtyRect,
aLists, item, DisplayRows);
}
nsIFrame::LogicalSides
nsTableRowGroupFrame::GetLogicalSkipSides(const ReflowInput* aReflowInput) const
{
if (MOZ_UNLIKELY(StyleBorder()->mBoxDecorationBreak ==
- NS_STYLE_BOX_DECORATION_BREAK_CLONE)) {
+ StyleBoxDecorationBreak::Clone)) {
return LogicalSides();
}
LogicalSides skip;
if (nullptr != GetPrevInFlow()) {
skip |= eLogicalSideBitsBStart;
}
if (nullptr != GetNextInFlow()) {