--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -375,17 +375,17 @@ static inline bool
IsFlexOrGridContainer(const nsIFrame* aFrame)
{
const LayoutFrameType t = aFrame->Type();
return t == LayoutFrameType::FlexContainer ||
t == LayoutFrameType::GridContainer;
}
// Returns true IFF the given nsIFrame is a nsFlexContainerFrame and
-// represents a -webkit-{inline-}box container.
+// represents a -webkit-{inline-}box or -moz-{inline-}box container.
static inline bool
IsFlexContainerForLegacyBox(const nsIFrame* aFrame)
{
return aFrame->IsFlexContainerFrame() &&
aFrame->HasAnyStateBits(NS_STATE_FLEX_IS_EMULATING_LEGACY_BOX);
}
#if DEBUG
@@ -10027,21 +10027,21 @@ nsCSSFrameConstructor::CreateNeededAnonF
nsFrameConstructorState& aState,
FrameConstructionItemList& aItems,
nsIFrame* aParentFrame)
{
if (aItems.IsEmpty() || !::IsFlexOrGridContainer(aParentFrame)) {
return;
}
- const bool isWebkitBox = IsFlexContainerForLegacyBox(aParentFrame);
+ const bool isLegacyBox = IsFlexContainerForLegacyBox(aParentFrame);
FCItemIterator iter(aItems);
do {
// Advance iter past children that don't want to be wrapped
- if (iter.SkipItemsThatDontNeedAnonFlexOrGridItem(aState, isWebkitBox)) {
+ if (iter.SkipItemsThatDontNeedAnonFlexOrGridItem(aState, isLegacyBox)) {
// Hit the end of the items without finding any remaining children that
// need to be wrapped. We're finished!
return;
}
// If our next potentially-wrappable child is whitespace, then see if
// there's anything wrappable immediately after it. If not, we just drop
// the whitespace and move on. (We're not supposed to create any anonymous
@@ -10054,41 +10054,41 @@ nsCSSFrameConstructor::CreateNeededAnonF
// the CSS grid & flexbox specs. I'm not bothering with that at this point,
// since it's a pretty extreme edge case.
if (!aParentFrame->IsGeneratedContentFrame() &&
iter.item().IsWhitespace(aState)) {
FCItemIterator afterWhitespaceIter(iter);
bool hitEnd = afterWhitespaceIter.SkipWhitespace(aState);
bool nextChildNeedsAnonItem =
!hitEnd &&
- afterWhitespaceIter.item().NeedsAnonFlexOrGridItem(aState, isWebkitBox);
+ afterWhitespaceIter.item().NeedsAnonFlexOrGridItem(aState, isLegacyBox);
if (!nextChildNeedsAnonItem) {
// There's nothing after the whitespace that we need to wrap, so we
// just drop this run of whitespace.
iter.DeleteItemsTo(this, afterWhitespaceIter);
if (hitEnd) {
// Nothing left to do -- we're finished!
return;
}
// else, we have a next child and it does not want to be wrapped. So,
// we jump back to the beginning of the loop to skip over that child
// (and anything else non-wrappable after it)
MOZ_ASSERT(!iter.IsDone() &&
- !iter.item().NeedsAnonFlexOrGridItem(aState, isWebkitBox),
+ !iter.item().NeedsAnonFlexOrGridItem(aState, isLegacyBox),
"hitEnd and/or nextChildNeedsAnonItem lied");
continue;
}
}
// Now |iter| points to the first child that needs to be wrapped in an
// anonymous flex/grid item. Now we see how many children after it also want
// to be wrapped in an anonymous flex/grid item.
FCItemIterator endIter(iter); // iterator to find the end of the group
- endIter.SkipItemsThatNeedAnonFlexOrGridItem(aState, isWebkitBox);
+ endIter.SkipItemsThatNeedAnonFlexOrGridItem(aState, isLegacyBox);
NS_ASSERTION(iter != endIter,
"Should've had at least one wrappable child to seek past");
// Now, we create the anonymous flex or grid item to contain the children
// between |iter| and |endIter|.
nsAtom* pseudoType = (aParentFrame->IsFlexContainerFrame())
? nsCSSAnonBoxes::anonymousFlexItem
@@ -10715,18 +10715,18 @@ FrameWantsToBeInAnonymousItem(const nsIF
MOZ_ASSERT(::IsFlexOrGridContainer(aContainerFrame));
// Any line-participant frames (e.g. text) definitely want to be wrapped in
// an anonymous flex/grid item.
if (aFrame->IsFrameOfType(nsIFrame::eLineParticipant)) {
return true;
}
- // If the container is a -webkit-box/-webkit-inline-box, then placeholders
- // also need to be wrapped, for compatibility.
+ // If the container is a -webkit-{inline-}box or -moz-{inline-}box container,
+ // then placeholders also need to be wrapped, for compatibility.
if (IsFlexContainerForLegacyBox(aContainerFrame) &&
aFrame->IsPlaceholderFrame()) {
return true;
}
return false;
}
#endif
@@ -12397,30 +12397,30 @@ nsCSSFrameConstructor::WipeContainingBlo
// flex or grid item.
LayoutFrameType frameType = aFrame->Type();
if (frameType == LayoutFrameType::FlexContainer ||
frameType == LayoutFrameType::GridContainer) {
FCItemIterator iter(aItems);
// Check if we're adding to-be-wrapped content right *after* an existing
// anonymous flex or grid item (which would need to absorb this content).
- const bool isWebkitBox = IsFlexContainerForLegacyBox(aFrame);
+ const bool isLegacyBox = IsFlexContainerForLegacyBox(aFrame);
if (aPrevSibling && IsAnonymousFlexOrGridItem(aPrevSibling) &&
- iter.item().NeedsAnonFlexOrGridItem(aState, isWebkitBox)) {
+ iter.item().NeedsAnonFlexOrGridItem(aState, isLegacyBox)) {
RecreateFramesForContent(aFrame->GetContent(), InsertionKind::Async);
return true;
}
// Check if we're adding to-be-wrapped content right *before* an existing
// anonymous flex or grid item (which would need to absorb this content).
if (nextSibling && IsAnonymousFlexOrGridItem(nextSibling)) {
// Jump to the last entry in the list
iter.SetToEnd();
iter.Prev();
- if (iter.item().NeedsAnonFlexOrGridItem(aState, isWebkitBox)) {
+ if (iter.item().NeedsAnonFlexOrGridItem(aState, isLegacyBox)) {
RecreateFramesForContent(aFrame->GetContent(), InsertionKind::Async);
return true;
}
}
}
// Situation #3 is an anonymous flex or grid item that's getting new children
// who don't want to be wrapped.
@@ -12435,18 +12435,18 @@ nsCSSFrameConstructor::WipeContainingBlo
// _flex/grid container_ as its parent in the content tree.
nsFrameConstructorSaveState floatSaveState;
aState.PushFloatContainingBlock(nullptr, floatSaveState);
FCItemIterator iter(aItems);
// Skip over things that _do_ need an anonymous flex item, because
// they're perfectly happy to go here -- they won't cause a reframe.
nsIFrame* containerFrame = aFrame->GetParent();
- const bool isWebkitBox = IsFlexContainerForLegacyBox(containerFrame);
- if (!iter.SkipItemsThatNeedAnonFlexOrGridItem(aState, isWebkitBox)) {
+ const bool isLegacyBox = IsFlexContainerForLegacyBox(containerFrame);
+ if (!iter.SkipItemsThatNeedAnonFlexOrGridItem(aState, isLegacyBox)) {
// We hit something that _doesn't_ need an anonymous flex item!
// Rebuild the flex container to bust it out.
RecreateFramesForContent(containerFrame->GetContent(), InsertionKind::Async);
return true;
}
// If we get here, then everything in |aItems| needs to be wrapped in
// an anonymous flex or grid item. That's where it's already going - good!
@@ -12879,72 +12879,73 @@ Iterator::SkipItemsNotWantingParentType(
Next();
if (IsDone()) {
return true;
}
}
return false;
}
-// Note: we implement -webkit-box & -webkit-inline-box using
-// nsFlexContainerFrame, but we use different rules for what gets wrapped in an
-// anonymous flex item.
+// Note: we implement -webkit-{inline-}box (and optionally -moz-{inline-}box)
+// using nsFlexContainerFrame, but we use different rules for what gets wrapped
+// in an anonymous flex item.
bool
nsCSSFrameConstructor::FrameConstructionItem::
NeedsAnonFlexOrGridItem(const nsFrameConstructorState& aState,
- bool aIsWebkitBox)
+ bool aIsLegacyBox)
{
if (mFCData->mBits & FCDATA_IS_LINE_PARTICIPANT) {
// This will be an inline non-replaced box.
return true;
}
- if (aIsWebkitBox) {
+ if (aIsLegacyBox) {
if (mStyleContext->StyleDisplay()->IsInlineOutsideStyle()) {
- // In a -webkit-box, all inline-level content gets wrapped in anon item.
+ // In an emulated legacy box, all inline-level content gets wrapped in an
+ // anonymous flex item.
return true;
}
if (!(mFCData->mBits & FCDATA_DISALLOW_OUT_OF_FLOW) &&
aState.GetGeometricParent(mStyleContext->StyleDisplay(), nullptr)) {
// We're abspos or fixedpos, which means we'll spawn a placeholder which
- // (because our container is a -webkit-box) we'll need to wrap in an
- // anonymous flex item. So, we just treat _this_ frame as if _it_ needs
- // to be wrapped in an anonymous flex item, and then when we spawn the
- // placeholder, it'll end up in the right spot.
+ // (because our container is an emulated legacy box) we'll need to wrap
+ // in an anonymous flex item. So, we just treat _this_ frame as if _it_
+ // needs to be wrapped in an anonymous flex item, and then when we spawn
+ // the placeholder, it'll end up in the right spot.
return true;
}
}
return false;
}
inline bool
nsCSSFrameConstructor::FrameConstructionItemList::
Iterator::SkipItemsThatNeedAnonFlexOrGridItem(
const nsFrameConstructorState& aState,
- bool aIsWebkitBox)
+ bool aIsLegacyBox)
{
NS_PRECONDITION(!IsDone(), "Shouldn't be done yet");
- while (item().NeedsAnonFlexOrGridItem(aState, aIsWebkitBox)) {
+ while (item().NeedsAnonFlexOrGridItem(aState, aIsLegacyBox)) {
Next();
if (IsDone()) {
return true;
}
}
return false;
}
inline bool
nsCSSFrameConstructor::FrameConstructionItemList::
Iterator::SkipItemsThatDontNeedAnonFlexOrGridItem(
const nsFrameConstructorState& aState,
- bool aIsWebkitBox)
+ bool aIsLegacyBox)
{
NS_PRECONDITION(!IsDone(), "Shouldn't be done yet");
- while (!(item().NeedsAnonFlexOrGridItem(aState, aIsWebkitBox))) {
+ while (!(item().NeedsAnonFlexOrGridItem(aState, aIsLegacyBox))) {
Next();
if (IsDone()) {
return true;
}
}
return false;
}