Bug 1674774 Part 2 - Fix the border-box size which is used to position flex container's children. r=mats
☠☠ backed out by d9b010547747 ☠ ☠
authorTing-Yu Lin <tlin@mozilla.com>
Mon, 30 Nov 2020 18:03:09 +0000
changeset 558738 52c3e2fefc0331b27e852ea8ac361d3edb5c4882
parent 558737 d4fa50b48efd8768bd9015a343966d0520862241
child 558739 edf35fea5913c869fd35f1e523967478edfcaa18
push id131753
push useraethanyc@gmail.com
push dateMon, 30 Nov 2020 18:10:05 +0000
treeherderautoland@edf35fea5913 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmats
bugs1674774
milestone85.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1674774 Part 2 - Fix the border-box size which is used to position flex container's children. r=mats If the flex container frame's tentative border-box size is different from its final size, and it's in vertical-rl writing mode, we need to adjust children's position. This is implemented in Part 3. Differential Revision: https://phabricator.services.mozilla.com/D97521
layout/generic/nsFlexContainerFrame.cpp
layout/generic/nsFlexContainerFrame.h
layout/reftests/flexbox/pagination/reftest.list
--- a/layout/generic/nsFlexContainerFrame.cpp
+++ b/layout/generic/nsFlexContainerFrame.cpp
@@ -4478,33 +4478,49 @@ void nsFlexContainerFrame::Reflow(nsPres
       effectiveContentBSize > availableSizeForItems.BSize(wm);
   if (mayNeedNextInFlow) {
     if (aReflowInput.mStyleBorder->mBoxDecorationBreak ==
         StyleBoxDecorationBreak::Slice) {
       borderPadding.BEnd(wm) = 0;
     }
   }
 
+  // Determine this frame's tentative border-box size. This is used for logical
+  // to physical coordinate conversion when positioning children.
+  //
+  // Note that vertical-rl writing-mode is the only case where the block flow
+  // direction progresses in a negative physical direction, and therefore block
+  // direction coordinate conversion depends on knowing the width of the
+  // coordinate space in order to translate between the logical and physical
+  // origins. As a result, if our final border-box block-size is different from
+  // this tentative one, and we are in vertical-rl writing mode, we need to
+  // adjust our children's position after reflowing them.
+  const LogicalSize tentativeBorderBoxSize(
+      wm, contentBoxSize.ISize(wm) + borderPadding.IStartEnd(wm),
+      std::min(effectiveContentBSize + borderPadding.BStartEnd(wm),
+               aReflowInput.AvailableBSize()));
+  const nsSize containerSize = tentativeBorderBoxSize.GetPhysicalSize(wm);
+
   const auto* prevInFlow = static_cast<nsFlexContainerFrame*>(GetPrevInFlow());
   OverflowAreas ocBounds;
   nsReflowStatus ocStatus;
   nscoord sumOfChildrenBlockSize;
   if (prevInFlow) {
-    ReflowOverflowContainerChildren(aPresContext, aReflowInput, ocBounds,
-                                    ReflowChildFlags::Default, ocStatus,
-                                    MergeSortedFrameListsFor);
+    ReflowOverflowContainerChildren(
+        aPresContext, aReflowInput, ocBounds, ReflowChildFlags::Default,
+        ocStatus, MergeSortedFrameListsFor, Some(containerSize));
     sumOfChildrenBlockSize =
         prevInFlow->GetProperty(SumOfChildrenBlockSizeProperty());
   } else {
     sumOfChildrenBlockSize = 0;
   }
 
   const auto [maxBlockEndEdgeOfChildren, areChildrenComplete] =
       ReflowChildren(aReflowInput, contentBoxMainSize, contentBoxCrossSize,
-                     availableSizeForItems, borderPadding,
+                     containerSize, availableSizeForItems, borderPadding,
                      sumOfChildrenBlockSize, flexContainerAscent, lines,
                      placeholders, axisTracker, hasLineClampEllipsis);
 
   // maxBlockEndEdgeOfChildren is relative to border-box, so we need to subtract
   // block-start border and padding to make it relative to our content-box. Note
   // that if there is a packing space in between the last flex item's block-end
   // edge and the available space's block-end edge, we want to record the
   // available size of item to consume part of the packing space.
@@ -5052,36 +5068,30 @@ void nsFlexContainerFrame::DoFlexLayout(
       crossAxisPosnTracker.TraverseGap();
     }
     ++lineIndex;
   }
 }
 
 std::tuple<nscoord, bool> nsFlexContainerFrame::ReflowChildren(
     const ReflowInput& aReflowInput, const nscoord aContentBoxMainSize,
-    const nscoord aContentBoxCrossSize,
+    const nscoord aContentBoxCrossSize, const nsSize& aContainerSize,
     const LogicalSize& aAvailableSizeForItems,
     const LogicalMargin& aBorderPadding,
     const nscoord aSumOfPrevInFlowsChildrenBlockSize,
     nscoord& aFlexContainerAscent, nsTArray<FlexLine>& aLines,
     nsTArray<nsIFrame*>& aPlaceholders, const FlexboxAxisTracker& aAxisTracker,
     bool aHasLineClampEllipsis) {
   // Before giving each child a final reflow, calculate the origin of the
   // flex container's content box (with respect to its border-box), so that
   // we can compute our flex item's final positions.
   WritingMode flexWM = aReflowInput.GetWritingMode();
   const LogicalPoint containerContentBoxOrigin(
       flexWM, aBorderPadding.IStart(flexWM), aBorderPadding.BStart(flexWM));
 
-  // Determine flex container's border-box size (used in positioning children):
-  LogicalSize logSize = aAxisTracker.LogicalSizeFromFlexRelativeSizes(
-      aContentBoxMainSize, aContentBoxCrossSize);
-  logSize += aBorderPadding.Size(flexWM);
-  nsSize containerSize = logSize.GetPhysicalSize(flexWM);
-
   // If the flex container has no baseline-aligned items, it will use the first
   // item to determine its baseline:
   const FlexItem* firstItem =
       aLines[0].IsEmpty() ? nullptr : &aLines[0].FirstItem();
 
   // The block-end of children is relative to the flex container's border-box.
   nscoord maxBlockEndEdgeOfChildren = containerContentBoxOrigin.B(flexWM);
 
@@ -5149,28 +5159,28 @@ std::tuple<nscoord, bool> nsFlexContaine
       } else if (item.NeedsFinalReflow(availableBSizeForItem)) {
         // The available size must be in item's writing-mode.
         const WritingMode itemWM = item.GetWritingMode();
         const auto availableSize =
             LogicalSize(flexWM, aAvailableSizeForItems.ISize(flexWM),
                         availableBSizeForItem)
                 .ConvertTo(itemWM, flexWM);
 
-        const nsReflowStatus childReflowStatus =
-            ReflowFlexItem(aAxisTracker, aReflowInput, item, framePos,
-                           availableSize, containerSize, aHasLineClampEllipsis);
+        const nsReflowStatus childReflowStatus = ReflowFlexItem(
+            aAxisTracker, aReflowInput, item, framePos, availableSize,
+            aContainerSize, aHasLineClampEllipsis);
 
         if (childReflowStatus.IsIncomplete()) {
           incompleteItems.PutEntry(item.Frame());
         } else if (childReflowStatus.IsOverflowIncomplete()) {
           overflowIncompleteItems.PutEntry(item.Frame());
         }
       } else {
         MoveFlexItemToFinalPosition(aReflowInput, item, framePos,
-                                    containerSize);
+                                    aContainerSize);
         // We didn't perform a final reflow of the item. If we still have a
         // -webkit-line-clamp ellipsis hanging around, but we shouldn't have
         // one any more, we need to clear that now.  Technically, we only need
         // to do this if we *didn't* do a bsize measuring reflow of the item
         // earlier (since that is normally when we deal with -webkit-line-clamp
         // ellipses) but not all flex items need such a reflow.
         // XXXdholbert This comment implies that we could skip this if
         // HadMeasuringReflow() is true.  Maybe we should try doing that?
@@ -5205,17 +5215,17 @@ std::tuple<nscoord, bool> nsFlexContaine
       if (&item == firstItem && aFlexContainerAscent == nscoord_MIN) {
         aFlexContainerAscent = itemNormalBPos + item.ResolvedAscent(true);
       }
     }
   }
 
   if (!aPlaceholders.IsEmpty()) {
     ReflowPlaceholders(aReflowInput, aPlaceholders, containerContentBoxOrigin,
-                       containerSize);
+                       aContainerSize);
   }
 
   const bool anyChildIncomplete = PushIncompleteChildren(
       pushedItems, incompleteItems, overflowIncompleteItems);
 
   if (!pushedItems.IsEmpty()) {
     AddStateBits(NS_STATE_FLEX_DID_PUSH_ITEMS);
   }
--- a/layout/generic/nsFlexContainerFrame.h
+++ b/layout/generic/nsFlexContainerFrame.h
@@ -541,16 +541,18 @@ class nsFlexContainerFrame final : publi
 
   /**
    * Perform a final Reflow for our child frames.
    *
    * @param aContentBoxMainSize the final content-box main-size of the flex
    *                            container.
    * @param aContentBoxCrossSize the final content-box cross-size of the flex
    *                             container.
+   * @param aContainerSize this frame's tentative physical border-box size, used
+   *                       only for logical to physical coordinate conversion.
    * @param aAvailableSizeForItems the size of the available space for our
    *                               children to reflow into.
    * @param aBorderPadding the border and padding for this frame (possibly with
    *                       some sides skipped as-appropriate, if we're in a
    *                       continuation chain).
    * @param aSumOfPrevInFlowsChildrenBlockSize See the comment for
    *                                           SumOfChildrenBlockSizeProperty.
    * @param aFlexContainerAscent [in/out] initially, the "tentative" flex
@@ -561,17 +563,17 @@ class nsFlexContainerFrame final : publi
    *                             flex item (if there are any flex items).
    * @return nscoord the maximum block-end edge of children of this fragment in
    *                 flex container's coordinate space.
    * @return bool true if any child being reflowed is incomplete; false
    *              otherwise.
    */
   std::tuple<nscoord, bool> ReflowChildren(
       const ReflowInput& aReflowInput, const nscoord aContentBoxMainSize,
-      const nscoord aContentBoxCrossSize,
+      const nscoord aContentBoxCrossSize, const nsSize& aContainerSize,
       const mozilla::LogicalSize& aAvailableSizeForItems,
       const mozilla::LogicalMargin& aBorderPadding,
       const nscoord aSumOfPrevInFlowsChildrenBlockSize,
       nscoord& aFlexContainerAscent, nsTArray<FlexLine>& aLines,
       nsTArray<nsIFrame*>& aPlaceholders,
       const FlexboxAxisTracker& aAxisTracker, bool aHasLineClampEllipsis);
 
   /**
--- a/layout/reftests/flexbox/pagination/reftest.list
+++ b/layout/reftests/flexbox/pagination/reftest.list
@@ -74,32 +74,32 @@ fuzzy-if(Android&&webrender,0-128,0-10) 
 == flexbox-single-column-vertical-lr-3a.html flexbox-single-column-vertical-lr-3-ref.html
 == flexbox-single-column-vertical-lr-3b.html flexbox-single-column-vertical-lr-3-ref.html
 == flexbox-single-column-vertical-lr-4.html flexbox-single-column-vertical-lr-4-ref.html
 == flexbox-single-column-vertical-lr-5.html flexbox-single-column-vertical-lr-5-ref.html
 == flexbox-single-column-vertical-lr-6.html flexbox-single-column-vertical-lr-6-ref.html
 
 # Tests for how we fragment flex items in a single-line column flex container
 # under "writing-mode: vertical-rl".
-fails == flexbox-single-column-vertical-rl-1a.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1b.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1c.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1d.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1e.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1f.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1g.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1h.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1i.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-1j.html flexbox-single-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-2.html flexbox-single-column-vertical-rl-2-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-3a.html flexbox-single-column-vertical-rl-3-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-3b.html flexbox-single-column-vertical-rl-3-ref.html # Bug 1674774
+== flexbox-single-column-vertical-rl-1a.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1b.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1c.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1d.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1e.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1f.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1g.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1h.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1i.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-1j.html flexbox-single-column-vertical-rl-1-ref.html
+== flexbox-single-column-vertical-rl-2.html flexbox-single-column-vertical-rl-2-ref.html
+== flexbox-single-column-vertical-rl-3a.html flexbox-single-column-vertical-rl-3-ref.html
+== flexbox-single-column-vertical-rl-3b.html flexbox-single-column-vertical-rl-3-ref.html
 == flexbox-single-column-vertical-rl-4.html flexbox-single-column-vertical-rl-4-ref.html
 fails == flexbox-single-column-vertical-rl-5.html flexbox-single-column-vertical-rl-5-ref.html # Bug 1674774
-fails == flexbox-single-column-vertical-rl-6.html flexbox-single-column-vertical-rl-6-ref.html # Bug 1674774
+== flexbox-single-column-vertical-rl-6.html flexbox-single-column-vertical-rl-6-ref.html
 
 # Tests for how we fragment flex items in a multi-line column flex container.
 == flexbox-multi-column-1a.html flexbox-multi-column-1-ref.html
 == flexbox-multi-column-1b.html flexbox-multi-column-1-ref.html
 == flexbox-multi-column-1c.html flexbox-multi-column-1-ref.html
 == flexbox-multi-column-1d.html flexbox-multi-column-1-ref.html
 == flexbox-multi-column-1e.html flexbox-multi-column-1-ref.html
 == flexbox-multi-column-1f.html flexbox-multi-column-1-ref.html
@@ -120,27 +120,27 @@ fails == flexbox-single-column-vertical-
 == flexbox-multi-column-vertical-lr-1g.html flexbox-multi-column-vertical-lr-1-ref.html
 == flexbox-multi-column-vertical-lr-1h.html flexbox-multi-column-vertical-lr-1-ref.html
 == flexbox-multi-column-vertical-lr-1i.html flexbox-multi-column-vertical-lr-1-ref.html
 == flexbox-multi-column-vertical-lr-1j.html flexbox-multi-column-vertical-lr-1-ref.html
 == flexbox-multi-column-vertical-lr-2.html flexbox-multi-column-vertical-lr-2-ref.html
 
 # Tests for how we fragment flex items in a multi-line column flex container
 # under "writing-mode: vertical-rl".
-fails == flexbox-multi-column-vertical-rl-1a.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1b.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1c.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1d.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1e.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1f.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1g.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1h.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1i.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-1j.html flexbox-multi-column-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-column-vertical-rl-2.html flexbox-multi-column-vertical-rl-2-ref.html # Bug 1674774
+== flexbox-multi-column-vertical-rl-1a.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1b.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1c.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1d.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1e.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1f.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1g.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1h.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1i.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-1j.html flexbox-multi-column-vertical-rl-1-ref.html
+== flexbox-multi-column-vertical-rl-2.html flexbox-multi-column-vertical-rl-2-ref.html
 
 # Tests for how we fragment flex items in a single-line row flex container.
 == flexbox-single-row-1a.html flexbox-single-row-1-ref.html
 == flexbox-single-row-1b.html flexbox-single-row-1-ref.html
 == flexbox-single-row-1c.html flexbox-single-row-1-ref.html
 == flexbox-single-row-1d.html flexbox-single-row-1-ref.html
 == flexbox-single-row-1e.html flexbox-single-row-1-ref.html
 == flexbox-single-row-1f.html flexbox-single-row-1-ref.html
@@ -163,27 +163,27 @@ fails == flexbox-multi-column-vertical-r
 == flexbox-single-row-vertical-lr-1h.html flexbox-single-row-vertical-lr-1-ref.html
 == flexbox-single-row-vertical-lr-2.html flexbox-single-row-vertical-lr-2-ref.html
 == flexbox-single-row-vertical-lr-3a.html flexbox-single-row-vertical-lr-3-ref.html
 == flexbox-single-row-vertical-lr-3b.html flexbox-single-row-vertical-lr-3-ref.html
 == flexbox-single-row-vertical-lr-4.html flexbox-single-row-vertical-lr-4-ref.html
 
 # Tests for how we fragment flex items in a single-line row flex container
 # under "writing-mode: vertical-rl".
-fails == flexbox-single-row-vertical-rl-1a.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-1b.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-1c.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-1d.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-1e.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-1f.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-1g.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-1h.html flexbox-single-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-2.html flexbox-single-row-vertical-rl-2-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-3a.html flexbox-single-row-vertical-rl-3-ref.html # Bug 1674774
-fails == flexbox-single-row-vertical-rl-3b.html flexbox-single-row-vertical-rl-3-ref.html # Bug 1674774
+== flexbox-single-row-vertical-rl-1a.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-1b.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-1c.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-1d.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-1e.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-1f.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-1g.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-1h.html flexbox-single-row-vertical-rl-1-ref.html
+== flexbox-single-row-vertical-rl-2.html flexbox-single-row-vertical-rl-2-ref.html
+== flexbox-single-row-vertical-rl-3a.html flexbox-single-row-vertical-rl-3-ref.html
+== flexbox-single-row-vertical-rl-3b.html flexbox-single-row-vertical-rl-3-ref.html
 fails == flexbox-single-row-vertical-rl-4.html flexbox-single-row-vertical-rl-4-ref.html # Bug 1674774
 
 # Tests for how we fragment flex items in a multi-line row flex container.
 == flexbox-multi-row-1a.html flexbox-multi-row-1-ref.html
 == flexbox-multi-row-1b.html flexbox-multi-row-1-ref.html
 == flexbox-multi-row-1c.html flexbox-multi-row-1-ref.html
 == flexbox-multi-row-1d.html flexbox-multi-row-1-ref.html
 == flexbox-multi-row-1e.html flexbox-multi-row-1-ref.html
@@ -199,16 +199,16 @@ fails == flexbox-single-row-vertical-rl-
 == flexbox-multi-row-vertical-lr-1d.html flexbox-multi-row-vertical-lr-1-ref.html
 == flexbox-multi-row-vertical-lr-1e.html flexbox-multi-row-vertical-lr-1-ref.html
 == flexbox-multi-row-vertical-lr-1f.html flexbox-multi-row-vertical-lr-1-ref.html
 == flexbox-multi-row-vertical-lr-2a.html flexbox-multi-row-vertical-lr-2-ref.html
 == flexbox-multi-row-vertical-lr-2b.html flexbox-multi-row-vertical-lr-2-ref.html
 
 # Tests for how we fragment flex items in a multi-line row flex container.
 # under "writing-mode: vertical-rl".
-fails == flexbox-multi-row-vertical-rl-1a.html flexbox-multi-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-row-vertical-rl-1b.html flexbox-multi-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-row-vertical-rl-1c.html flexbox-multi-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-row-vertical-rl-1d.html flexbox-multi-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-row-vertical-rl-1e.html flexbox-multi-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-row-vertical-rl-1f.html flexbox-multi-row-vertical-rl-1-ref.html # Bug 1674774
-fails == flexbox-multi-row-vertical-rl-2a.html flexbox-multi-row-vertical-rl-2-ref.html # Bug 1674774
-fails == flexbox-multi-row-vertical-rl-2b.html flexbox-multi-row-vertical-rl-2-ref.html # Bug 1674774
+== flexbox-multi-row-vertical-rl-1a.html flexbox-multi-row-vertical-rl-1-ref.html
+== flexbox-multi-row-vertical-rl-1b.html flexbox-multi-row-vertical-rl-1-ref.html
+== flexbox-multi-row-vertical-rl-1c.html flexbox-multi-row-vertical-rl-1-ref.html
+== flexbox-multi-row-vertical-rl-1d.html flexbox-multi-row-vertical-rl-1-ref.html
+== flexbox-multi-row-vertical-rl-1e.html flexbox-multi-row-vertical-rl-1-ref.html
+== flexbox-multi-row-vertical-rl-1f.html flexbox-multi-row-vertical-rl-1-ref.html
+== flexbox-multi-row-vertical-rl-2a.html flexbox-multi-row-vertical-rl-2-ref.html
+== flexbox-multi-row-vertical-rl-2b.html flexbox-multi-row-vertical-rl-2-ref.html