Backed out 5 changesets (bug 1466231) for reftest failures on float-retry-push-image.html.
authorCosmin Sabou <csabou@mozilla.com>
Sat, 16 Jun 2018 01:45:26 +0300
changeset 476940 5056d42de0e907fe27844ccce974b45100241c4d
parent 476939 fdac7a88a2c099144e6587f45e07c838b9136c92
child 476941 45d476a9f520e3fc403ef406703343fe32d2a45c
push id9374
push userjlund@mozilla.com
push dateMon, 18 Jun 2018 21:43:20 +0000
treeherdermozilla-beta@160e085dfb0b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1466231
milestone62.0a1
backs out8141b2848c2c01542cdca4f068ebec284cac2889
2250da9a0dd06a3aeaf7a523a71a942effdd77bb
012e16dcc677f84d158aa4c47bb2d0ddbdc78c6b
332453c76ec7d09ba10dd1858bbbbc93ef837c4a
f926e605d5a945b5af0945080f09787f8803402e
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
Backed out 5 changesets (bug 1466231) for reftest failures on float-retry-push-image.html. Backed out changeset 8141b2848c2c (bug 1466231) Backed out changeset 2250da9a0dd0 (bug 1466231) Backed out changeset 012e16dcc677 (bug 1466231) Backed out changeset 332453c76ec7 (bug 1466231) Backed out changeset f926e605d5a9 (bug 1466231)
layout/generic/nsBlockFrame.cpp
layout/generic/nsBlockFrame.h
layout/reftests/w3c-css/submitted/shapes1/float-should-push-ref.html
layout/reftests/w3c-css/submitted/shapes1/float-should-push.html
layout/reftests/w3c-css/submitted/shapes1/reftest.list
layout/reftests/w3c-css/submitted/shapes1/shape-outside-polygon-032.html
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-004.html
testing/web-platform/tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-032.html
--- a/layout/generic/nsBlockFrame.cpp
+++ b/layout/generic/nsBlockFrame.cpp
@@ -4079,17 +4079,17 @@ nsBlockFrame::DoReflowInlineFrames(Block
     // past the float.
   }
   else if (LineReflowStatus::Truncated != lineReflowStatus &&
            LineReflowStatus::RedoNoPull != lineReflowStatus) {
     // If we are propagating out a break-before status then there is
     // no point in placing the line.
     if (!aState.mReflowStatus.IsInlineBreakBefore()) {
       if (!PlaceLine(aState, aLineLayout, aLine, aFloatStateBeforeLine,
-                     aFloatAvailableSpace, aAvailableSpaceBSize,
+                     aFloatAvailableSpace.mRect, aAvailableSpaceBSize,
                      aKeepReflowGoing)) {
         lineReflowStatus = LineReflowStatus::RedoMoreFloats;
         // PlaceLine already called GetAvailableSpaceForBSize for us.
       }
     }
   }
 #ifdef DEBUG
   if (gNoisyReflow) {
@@ -4469,17 +4469,17 @@ nsBlockFrame::IsLastLine(BlockReflowInpu
   return true;
 }
 
 bool
 nsBlockFrame::PlaceLine(BlockReflowInput& aState,
                         nsLineLayout& aLineLayout,
                         LineIterator aLine,
                         nsFloatManager::SavedState *aFloatStateBeforeLine,
-                        nsFlowAreaRect& aFlowArea,
+                        LogicalRect& aFloatAvailableSpace,
                         nscoord& aAvailableSpaceBSize,
                         bool* aKeepReflowGoing)
 {
   // Trim extra white-space from the line before placing the frames
   aLineLayout.TrimTrailingWhiteSpace();
 
   // Vertically align the frames on this line.
   //
@@ -4536,41 +4536,41 @@ nsBlockFrame::PlaceLine(BlockReflowInput
   // LineReflowStatus::RedoMoreFloats).  We ensure aAvailableSpaceBSize
   // never decreases, which means that we can't reduce the set of floats
   // we intersect, which means that the available space cannot grow.
   if (AvailableSpaceShrunk(wm, floatAvailableSpaceWithOldLineBSize,
                            floatAvailableSpaceWithLineBSize, false)) {
     // Prepare data for redoing the line.
     aState.mLineBSize = Some(aLine->BSize());
 
-    // Since we want to redo the line, we update aFlowArea by using the
-    // aFloatStateBeforeLine, which is the float manager's state before the
-    // line is placed.
-    LogicalRect oldFloatAvailableSpace(aFlowArea.mRect);
-    aFlowArea = aState.GetFloatAvailableSpaceForBSize(aLine->BStart(),
-                                                      aAvailableSpaceBSize,
-                                                      aFloatStateBeforeLine);
-
-    NS_ASSERTION(aFlowArea.mRect.BStart(wm) ==
+    // Since we want to redo the line, we update aFloatAvailableSpace by
+    // using the aFloatStateBeforeLine, which is the float manager's state
+    // before the line is placed.
+    LogicalRect oldFloatAvailableSpace(aFloatAvailableSpace);
+    aFloatAvailableSpace =
+      aState.GetFloatAvailableSpaceForBSize(aLine->BStart(),
+                                            aAvailableSpaceBSize,
+                                            aFloatStateBeforeLine).mRect;
+    NS_ASSERTION(aFloatAvailableSpace.BStart(wm) ==
                  oldFloatAvailableSpace.BStart(wm), "yikes");
     // Restore the BSize to the position of the next band.
-    aFlowArea.mRect.BSize(wm) = oldFloatAvailableSpace.BSize(wm);
+    aFloatAvailableSpace.BSize(wm) = oldFloatAvailableSpace.BSize(wm);
 
     // Enforce both IStart() and IEnd() never move outwards to prevent
     // infinite grow-shrink loops.
     const nscoord iStartDiff =
-      aFlowArea.mRect.IStart(wm) - oldFloatAvailableSpace.IStart(wm);
+      aFloatAvailableSpace.IStart(wm) - oldFloatAvailableSpace.IStart(wm);
     const nscoord iEndDiff =
-      aFlowArea.mRect.IEnd(wm) - oldFloatAvailableSpace.IEnd(wm);
+      aFloatAvailableSpace.IEnd(wm) - oldFloatAvailableSpace.IEnd(wm);
     if (iStartDiff < 0) {
-      aFlowArea.mRect.IStart(wm) -= iStartDiff;
-      aFlowArea.mRect.ISize(wm) += iStartDiff;
+      aFloatAvailableSpace.IStart(wm) -= iStartDiff;
+      aFloatAvailableSpace.ISize(wm) += iStartDiff;
     }
     if (iEndDiff > 0) {
-      aFlowArea.mRect.ISize(wm) -= iEndDiff;
+      aFloatAvailableSpace.ISize(wm) -= iEndDiff;
     }
 
     return false;
   }
 
 #ifdef DEBUG
   if (!GetParent()->IsCrazySizeAssertSuppressed()) {
     static nscoord lastHeight = 0;
--- a/layout/generic/nsBlockFrame.h
+++ b/layout/generic/nsBlockFrame.h
@@ -700,17 +700,17 @@ protected:
 
   // Return false if it needs another reflow because of reduced space
   // between floats that are next to it (but not next to its top), and
   // return true otherwise.
   bool PlaceLine(BlockReflowInput& aState,
                  nsLineLayout& aLineLayout,
                  LineIterator aLine,
                  nsFloatManager::SavedState* aFloatStateBeforeLine,
-                 nsFlowAreaRect& aFlowArea, // in-out
+                 mozilla::LogicalRect& aFloatAvailableSpace, //in-out
                  nscoord& aAvailableSpaceBSize, // in-out
                  bool* aKeepReflowGoing);
 
   /**
     * If NS_BLOCK_LOOK_FOR_DIRTY_FRAMES is set, call MarkLineDirty
     * on any line with a child frame that is dirty.
     */
   void LazyMarkLinesDirty();
deleted file mode 100644
--- a/layout/reftests/w3c-css/submitted/shapes1/float-should-push-ref.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset="utf-8">
-<title>Reference: Ensure shape-outside floats that don't cover their margin-rect affect layout properly</title>
-<link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com">
-<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
-
-<style>
-  body {
-    margin: 0px;
-    line-height: 1;
-  }
-
-  .container {
-    width: 300px;
-    height: 100px;
-    background: lightgray;
-  }
-
-  .too-wide {
-    display: inline-block;
-    width: 250px;
-    height: 20px;
-    background: lightblue;
-    clear: left;
-  }
-
-  .shape {
-    background: black;
-    width: 100px;
-    height: 100px;
-    float: left;
-  }
-
-  .spacer {
-    clear: left;
-    height: 30px;
-  }
-
-  .inset {
-    background: orange;
-  }
-
-  .polygon {
-    background: pink;
-  }
-
-  .image {
-    background: brown;
-  }
-
-</style>
-
-<p>All light blue bars should be pushed below the square floats, regardless of how those floats are defined.</p>
-
-<div class="container">
-<div class="shape inset">inset(1px) at top</div>
-<span class="too-wide"></span>
-</div>
-
-<div class="spacer"></div>
-
-<div class="container">
-<div class="shape polygon">polygon</div>
-<span class="too-wide"></span>
-</div>
-
-<div class="spacer"></div>
-
-<div class="container">
-<div class="shape image">image</div>
-<span class="too-wide"></span>
-</div>
deleted file mode 100644
--- a/layout/reftests/w3c-css/submitted/shapes1/float-should-push.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset="utf-8">
-<title>Ensure shape-outside floats that don't cover their margin-rect affect layout properly</title>
-<link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com">
-<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
-<link rel="help" href="https://drafts.csswg.org/css-shapes-1/">
-<link rel="match" href="float-should-push-ref.html">
-<meta name="assert" content="Test that a too-wide inline block clear floats defined by shape-outside shapes that don't reach the top of the margin rect.">
-
-<style>
-  body {
-    margin: 0px;
-    line-height: 1;
-  }
-
-  .container {
-    width: 300px;
-    height: 100px;
-    background: lightgray;
-  }
-
-  .too-wide {
-    display: inline-block;
-    width: 250px;
-    height: 20px;
-    background: lightblue;
-  }
-
-  .shape {
-    background: black;
-    width: 100px;
-    height: 100px;
-    float: left;
-  }
-
-  .spacer {
-    clear: left;
-    height: 30px;
-  }
-
-  .inset {
-    background: orange;
-    shape-outside: inset(1px 0px 0px 0px);
-  }
-
-  .polygon {
-    background: pink;
-    shape-outside: polygon(0px 0px, 100px 0px, 100px 100px, 0px 100px);
-  }
-
-  .image {
-    background: brown;
-    shape-outside: linear-gradient(0deg, black, black 100%);
-  }
-
-</style>
-
-<p>All light blue bars should be pushed below the square floats, regardless of how those floats are defined.</p>
-
-<div class="container">
-<div class="shape inset">inset(1px) at top</div>
-<span class="too-wide"></span>
-</div>
-
-<div class="spacer"></div>
-
-<div class="container">
-<div class="shape polygon">polygon</div>
-<span class="too-wide"></span>
-</div>
-
-<div class="spacer"></div>
-
-<div class="container">
-<div class="shape image">image</div>
-<span class="too-wide"></span>
-</div>
--- a/layout/reftests/w3c-css/submitted/shapes1/reftest.list
+++ b/layout/reftests/w3c-css/submitted/shapes1/reftest.list
@@ -102,13 +102,11 @@ fuzzy(108,81) == shape-outside-ellipse-0
 == shape-outside-polygon-022.html shape-outside-polygon-022-ref.html
 == shape-outside-polygon-023.html shape-outside-polygon-023-ref.html
 == shape-outside-polygon-024.html shape-outside-polygon-024-ref.html
 == shape-outside-polygon-025.html shape-outside-polygon-025-ref.html
 fuzzy(101,2263) == shape-outside-polygon-032.html shape-outside-polygon-032-ref.html
 
 # Tests of shape-outside layout behavior with too-wide inline elements
 == float-retry-push-circle.html float-retry-push-ref.html
-# The next test offsets a 250px wide element by a pixel due to small offsets in gradient generation.
-fuzzy(255-255,500-500) == float-retry-push-image.html float-retry-push-ref.html
+fails == float-retry-push-image.html float-retry-push-ref.html
 == float-retry-push-inset.html float-retry-push-ref.html
-== float-retry-push-polygon.html float-retry-push-ref.html
-== float-should-push.html float-should-push-ref.html
+fails == float-retry-push-polygon.html float-retry-push-ref.html
--- a/layout/reftests/w3c-css/submitted/shapes1/shape-outside-polygon-032.html
+++ b/layout/reftests/w3c-css/submitted/shapes1/shape-outside-polygon-032.html
@@ -40,18 +40,18 @@
             line-height: 20px;
             width: 240px;
             height: 240px;
             padding: 50px;
             color: green;
         }
         #test-shape {
             float: right;
-            width: 140px;
-            height: 140px;
+            width: 120px;
+            height: 120px;
             margin: 10px;
             border: 10px solid transparent;
             padding: 10px;
             shape-margin: 20px;
             shape-outside: margin-box polygon(20% 20%, 90% 20%, 90% 80%, 50% 80%, 50% 70%, 70% 70%, 70% 40%, 20% 40%);
         }
         .ref-shape {
             position: absolute;
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -556917,17 +556917,17 @@
    "9393c2e2250dfc1bf3ffdd68f2c352890d1e0ee8",
    "reftest"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-032-ref.html": [
    "890dd0754f2c985719c75200dd9ef70e8c1abe14",
    "support"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-032.html": [
-   "7f64299efa829367c745d317d84c1255b5bb98fd",
+   "ea8cf594cd61a4aa284342fa895841861af3cd86",
    "reftest"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/support/Ahem.ttf": [
    "8cdc9e68594fbb6db8c7b4bff643ab2432b51db6",
    "support"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests-filter": [
    "3055eafd3bf887f11c0c386419397910ad438d23",
--- a/testing/web-platform/tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-004.html
+++ b/testing/web-platform/tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-004.html
@@ -6,17 +6,17 @@
     <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shapes-from-image"/>
     <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property"/>
     <link rel="match" href="reference/shape-outside-linear-gradient-004-ref.html"/>
     <meta name="assert" content="This test verifies that content wraps correctly around a shape defined by a repeating linear gradient."/>
     <style type="text/css">
         .container {
             position: absolute;
             top: 70px;
-            width: 200px;
+            width: 199px;
             font-size: 0px;
         }
         .square {
             display: inline-block;
             width: 100px;
             height: 100px;
             line-height: 100px;
             background-color: green;
@@ -45,21 +45,21 @@
 </head>
 <body>
     <p>
         The test passes if there are four green squares alternating left and right. There
         should be no red.
     </p>
     <div id="test" class="container">
         <div class="gradient"></div>
-        <div class="square"></div><br>
-        <div class="square"></div><br>
-        <div class="square"></div><br>
+        <div class="square"></div>
+        <div class="square"></div>
+        <div class="square"></div>
         <div class="square"></div>
     </div>
     <div id="failure">
         <div class="square"></div><br>
         <div class="square right"></div><br>
         <div class="square"></div><br>
         <div class="square right"></div>
     </div>
 </body>
-</html>
+</html>
\ No newline at end of file
--- a/testing/web-platform/tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-032.html
+++ b/testing/web-platform/tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-032.html
@@ -40,18 +40,18 @@
             line-height: 20px;
             width: 240px;
             height: 240px;
             padding: 50px;
             color: green;
         }
         #test-shape {
             float: right;
-            width: 140px;
-            height: 140px;
+            width: 120px;
+            height: 120px;
             margin: 10px;
             border: 10px solid transparent;
             padding: 10px;
             shape-margin: 20px;
             shape-outside: margin-box polygon(20% 20%, 90% 20%, 90% 80%, 50% 80%, 50% 70%, 70% 70%, 70% 40%, 20% 40%);
         }
         .ref-shape {
             position: absolute;