Source/WebCore:
authorzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Aug 2018 14:44:59 +0000 (14:44 +0000)
committerzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Aug 2018 14:44:59 +0000 (14:44 +0000)
[LFC][Floating] Block formatting context roots avoid floats.
https://bugs.webkit.org/show_bug.cgi?id=189150

Reviewed by Antti Koivisto.

This patch implements the float avoiding behaviour for block formatting context roots.

When a box establishes a block formatting context, floats from outside of the context can't interfere with content inside. In order
to achive this, such formatting root boxes need to be positioned so that they don't overlap with floats (floats that share the same
context with the formatting root). In ltr block direction, roots start with avoiding floats on the left, while in rtl on the right.

Tests: fast/block/block-only/float-avoider-multiple-roots.html
       fast/block/block-only/float-avoider-simple-left.html
       fast/block/block-only/float-avoider-simple-right.html
       fast/block/block-only/float-avoider-with-margins.html

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::FloatAvoider):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
* layout/floats/FloatingContext.h:

Tools:
[LFC][Floating] Formatting context roots avoid floats.
https://bugs.webkit.org/show_bug.cgi?id=189150

Reviewed by Antti Koivisto.

* LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:
[LFC][Floating] Formatting context roots avoid floats.
https://bugs.webkit.org/show_bug.cgi?id=189150

Reviewed by Antti Koivisto.

* fast/block/block-only/float-avoider-multiple-roots-expected.txt: Added.
* fast/block/block-only/float-avoider-multiple-roots.html: Added.
* fast/block/block-only/float-avoider-simple-left-expected.txt: Added.
* fast/block/block-only/float-avoider-simple-left.html: Added.
* fast/block/block-only/float-avoider-simple-right-expected.txt: Added.
* fast/block/block-only/float-avoider-simple-right.html: Added.
* fast/block/block-only/float-avoider-with-margins-expected.txt: Added.
* fast/block/block-only/float-avoider-with-margins.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235505 268f45cc-cd09-0410-ab3c-d52691b4dbfc

17 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/block/block-only/float-avoider-multiple-roots-expected.txt [new file with mode: 0644]
LayoutTests/fast/block/block-only/float-avoider-multiple-roots.html [new file with mode: 0644]
LayoutTests/fast/block/block-only/float-avoider-simple-left-expected.txt [new file with mode: 0644]
LayoutTests/fast/block/block-only/float-avoider-simple-left.html [new file with mode: 0644]
LayoutTests/fast/block/block-only/float-avoider-simple-right-expected.txt [new file with mode: 0644]
LayoutTests/fast/block/block-only/float-avoider-simple-right.html [new file with mode: 0644]
LayoutTests/fast/block/block-only/float-avoider-with-margins-expected.txt [new file with mode: 0644]
LayoutTests/fast/block/block-only/float-avoider-with-margins.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp
Source/WebCore/layout/blockformatting/BlockFormattingContext.h
Source/WebCore/layout/floats/FloatAvoider.cpp
Source/WebCore/layout/floats/FloatingContext.cpp
Source/WebCore/layout/floats/FloatingContext.h
Tools/ChangeLog
Tools/LayoutReloaded/misc/LFC-passing-tests.txt

index 35beb5a..1214a07 100644 (file)
@@ -1,3 +1,19 @@
+2018-08-30  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][Floating] Formatting context roots avoid floats.
+        https://bugs.webkit.org/show_bug.cgi?id=189150
+
+        Reviewed by Antti Koivisto.
+
+        * fast/block/block-only/float-avoider-multiple-roots-expected.txt: Added.
+        * fast/block/block-only/float-avoider-multiple-roots.html: Added.
+        * fast/block/block-only/float-avoider-simple-left-expected.txt: Added.
+        * fast/block/block-only/float-avoider-simple-left.html: Added.
+        * fast/block/block-only/float-avoider-simple-right-expected.txt: Added.
+        * fast/block/block-only/float-avoider-simple-right.html: Added.
+        * fast/block/block-only/float-avoider-with-margins-expected.txt: Added.
+        * fast/block/block-only/float-avoider-with-margins.html: Added.
+
 2018-08-29  Aditya Keerthi  <akeerthi@apple.com>
 
         [Datalist] Display prefix-matched suggestions first
diff --git a/LayoutTests/fast/block/block-only/float-avoider-multiple-roots-expected.txt b/LayoutTests/fast/block/block-only/float-avoider-multiple-roots-expected.txt
new file mode 100644 (file)
index 0000000..8ad9c5e
--- /dev/null
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x220
+  RenderBlock {HTML} at (0,0) size 800x220
+    RenderBody {BODY} at (8,8) size 784x204
+      RenderBlock {DIV} at (0,0) size 202x102 [border: (1px solid #FF0000)]
+        RenderBlock (floating) {DIV} at (1,1) size 12x52 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (13,1) size 12x32 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (1,57) size 12x32 [border: (1px solid #0000FF)]
+      RenderBlock {DIV} at (0,102) size 202x102 [border: (1px solid #FF0000)]
+        RenderBlock (floating) {DIV} at (1,1) size 12x52 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (13,1) size 12x32 [border: (1px solid #0000FF)]
+layer at (21,41) size 182x12 clip at (22,42) size 180x10
+  RenderBlock {DIV} at (13,33) size 182x12 [border: (1px solid #008000)]
+layer at (21,53) size 182x12 clip at (22,54) size 180x10
+  RenderBlock {DIV} at (13,45) size 182x12 [border: (1px solid #008000)]
+layer at (21,65) size 182x12 clip at (22,66) size 180x10
+  RenderBlock {DIV} at (13,57) size 182x12 [border: (1px solid #008000)]
+layer at (27,143) size 182x12 clip at (28,144) size 180x10
+  RenderBlock {DIV} at (19,33) size 182x12 [border: (1px solid #008000)]
+layer at (27,155) size 182x12 clip at (28,156) size 180x10
+  RenderBlock {DIV} at (19,45) size 182x12 [border: (1px solid #008000)]
+layer at (27,167) size 182x12 clip at (28,168) size 180x10
+  RenderBlock {DIV} at (19,57) size 182x12 [border: (1px solid #008000)]
diff --git a/LayoutTests/fast/block/block-only/float-avoider-multiple-roots.html b/LayoutTests/fast/block/block-only/float-avoider-multiple-roots.html
new file mode 100644 (file)
index 0000000..5bc3ae3
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+</style>
+</head>
+<body>
+<div style="border: 1px solid red; height: 100px; width: 200px;">
+    <div style="height: 50px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="height: 30px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green;"></div>
+    <div style="height: 30px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green;"></div>
+</div>
+
+<div dir=rtl style="border: 1px solid red; height: 100px; width: 200px;">
+    <div style="height: 50px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="height: 30px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green;"></div>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/fast/block/block-only/float-avoider-simple-left-expected.txt b/LayoutTests/fast/block/block-only/float-avoider-simple-left-expected.txt
new file mode 100644 (file)
index 0000000..d3453a9
--- /dev/null
@@ -0,0 +1,10 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x518
+  RenderBlock {HTML} at (0,0) size 800x518
+    RenderBody {BODY} at (8,8) size 784x502
+      RenderBlock {DIV} at (0,0) size 202x502 [border: (1px solid #FF0000)]
+        RenderBlock (floating) {DIV} at (1,1) size 12x202 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (13,1) size 12x172 [border: (1px solid #0000FF)]
+layer at (21,181) size 182x102 clip at (22,182) size 180x100
+  RenderBlock {DIV} at (13,173) size 182x102 [border: (1px solid #008000)]
diff --git a/LayoutTests/fast/block/block-only/float-avoider-simple-left.html b/LayoutTests/fast/block/block-only/float-avoider-simple-left.html
new file mode 100644 (file)
index 0000000..e49608d
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+</style>
+</head>
+<body>
+<div style="border: 1px solid red; height: 500px; width: 200px;">
+<div style="height: 200px; width: 10px; border: 1px solid blue; float: left;"></div>
+<div style="height: 170px; width: 10px; border: 1px solid blue; float: left;"></div>
+<div style="overflow: hidden; height: 100px; width: 180px; border: 1px solid green;"></div>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/fast/block/block-only/float-avoider-simple-right-expected.txt b/LayoutTests/fast/block/block-only/float-avoider-simple-right-expected.txt
new file mode 100644 (file)
index 0000000..2336686
--- /dev/null
@@ -0,0 +1,10 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x518
+  RenderBlock {HTML} at (0,0) size 800x518
+    RenderBody {BODY} at (8,8) size 784x502
+      RenderBlock {DIV} at (0,0) size 202x502 [border: (1px solid #FF0000)]
+        RenderBlock (floating) {DIV} at (1,1) size 12x202 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (13,1) size 12x172 [border: (1px solid #0000FF)]
+layer at (27,181) size 182x102 clip at (28,182) size 180x100
+  RenderBlock {DIV} at (19,173) size 182x102 [border: (1px solid #008000)]
diff --git a/LayoutTests/fast/block/block-only/float-avoider-simple-right.html b/LayoutTests/fast/block/block-only/float-avoider-simple-right.html
new file mode 100644 (file)
index 0000000..1d6b544
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+</style>
+</head>
+<body>
+<div dir=rtl style="border: 1px solid red; height: 500px; width: 200px;">
+<div style="height: 200px; width: 10px; border: 1px solid blue; float: left;"></div>
+<div style="height: 170px; width: 10px; border: 1px solid blue; float: left;"></div>
+<div style="overflow: hidden; height: 100px; width: 180px; border: 1px solid green;"></div>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/fast/block/block-only/float-avoider-with-margins-expected.txt b/LayoutTests/fast/block/block-only/float-avoider-with-margins-expected.txt
new file mode 100644 (file)
index 0000000..e8494af
--- /dev/null
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x243
+  RenderBlock {HTML} at (0,0) size 800x243
+    RenderBody {BODY} at (8,8) size 784x204
+      RenderBlock {DIV} at (0,0) size 302x102 [border: (1px solid #FF0000)]
+        RenderBlock (floating) {DIV} at (1,1) size 12x52 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (13,1) size 12x32 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (25,25) size 12x32 [border: (1px solid #0000FF)]
+      RenderBlock {DIV} at (0,102) size 302x102 [border: (1px solid #FF0000)]
+        RenderBlock (floating) {DIV} at (1,1) size 12x52 [border: (1px solid #0000FF)]
+        RenderBlock (floating) {DIV} at (289,1) size 12x132 [border: (1px solid #0000FF)]
+layer at (33,9) size 182x12 clip at (34,10) size 180x10
+  RenderBlock {DIV} at (25,1) size 182x12 [border: (1px solid #008000)]
+layer at (59,21) size 182x12 clip at (60,22) size 180x10
+  RenderBlock {DIV} at (51,13) size 182x12 [border: (1px solid #008000)]
+layer at (109,33) size 182x12 clip at (110,34) size 180x10
+  RenderBlock {DIV} at (101,25) size 182x12 [border: (1px solid #008000)]
+layer at (77,111) size 182x12 clip at (78,112) size 180x10
+  RenderBlock {DIV} at (69,1) size 182x12 [border: (1px solid #008000)]
+layer at (115,123) size 182x12 clip at (116,124) size 180x10
+  RenderBlock {DIV} at (107,13) size 182x12 [border: (1px solid #008000)]
+layer at (-233,243) size 292x12 backgroundClip at (0,243) size 59x12 clip at (0,244) size 58x10
+  RenderBlock {DIV} at (-241,133) size 292x12 [border: (1px solid #008000)]
diff --git a/LayoutTests/fast/block/block-only/float-avoider-with-margins.html b/LayoutTests/fast/block/block-only/float-avoider-with-margins.html
new file mode 100644 (file)
index 0000000..8f3de80
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+</style>
+</head>
+<body>
+<div style="border: 1px solid red; height: 100px; width: 300px;">
+    <div style="height: 50px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="height: 30px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green; margin-left: 50px"></div>
+    <div style="height: 30px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green; margin-left: 100px"></div>
+</div>
+
+<div dir=rtl style="border: 1px solid red; height: 100px; width: 300px;">
+    <div style="height: 50px; width: 10px; border: 1px solid blue; float: left;"></div>
+    <div style="height: 130px; width: 10px; border: 1px solid blue; float: right;"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green; margin-right: 50px"></div>
+    <div style="overflow: hidden; height: 10px; width: 180px; border: 1px solid green; margin-right: 5px"></div>
+    <div style="overflow: hidden; height: 10px; width: 290px; border: 1px solid green; margin-right: 250px"></div>
+</div>
+</body>
+</html>
index c51e780..f950ca9 100644 (file)
@@ -1,5 +1,34 @@
 2018-08-30  Zalan Bujtas  <zalan@apple.com>
 
+        [LFC][Floating] Block formatting context roots avoid floats.
+        https://bugs.webkit.org/show_bug.cgi?id=189150
+
+        Reviewed by Antti Koivisto.
+
+        This patch implements the float avoiding behaviour for block formatting context roots.
+
+        When a box establishes a block formatting context, floats from outside of the context can't interfere with content inside. In order
+        to achive this, such formatting root boxes need to be positioned so that they don't overlap with floats (floats that share the same
+        context with the formatting root). In ltr block direction, roots start with avoiding floats on the left, while in rtl on the right.
+
+        Tests: fast/block/block-only/float-avoider-multiple-roots.html
+               fast/block/block-only/float-avoider-simple-left.html
+               fast/block/block-only/float-avoider-simple-right.html
+               fast/block/block-only/float-avoider-with-margins.html
+
+        * layout/blockformatting/BlockFormattingContext.cpp:
+        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
+        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
+        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
+        * layout/blockformatting/BlockFormattingContext.h:
+        * layout/floats/FloatAvoider.cpp:
+        (WebCore::Layout::FloatAvoider::FloatAvoider):
+        * layout/floats/FloatingContext.cpp:
+        (WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
+        * layout/floats/FloatingContext.h:
+
+2018-08-30  Zalan Bujtas  <zalan@apple.com>
+
         [LFC][Floating] Move containing block constraint logic from FloatAvoider to FloatingContext
         https://bugs.webkit.org/show_bug.cgi?id=189145
 
index 27a1b4c..1118421 100644 (file)
@@ -145,8 +145,15 @@ void BlockFormattingContext::layoutFormattingContextRoot(LayoutContext& layoutCo
     // Come back and finalize the root's geometry.
     LOG_WITH_STREAM(FormattingContextLayout, stream << "[Compute] -> [Height][Margin] -> for layoutBox(" << &layoutBox << ")");
     computeHeightAndMargin(layoutContext, layoutBox, displayBox);
+
+    // Float related final positioning.
     if (layoutBox.isFloatingPositioned())
         computeFloatingPosition(layoutContext, floatingContext, layoutBox, displayBox);
+    else if (layoutBox.hasFloatClear())
+        computeVerticalPositionForFloatClear(layoutContext, floatingContext, layoutBox, displayBox);
+    else
+        computePositionToAvoidFloats(layoutContext, floatingContext, layoutBox, displayBox);
+
     // Now that we computed the root's height, we can go back and layout the out-of-flow descedants (if any).
     formattingContext->layoutOutOfFlowDescendants(layoutContext, layoutBox);
 }
@@ -165,8 +172,8 @@ void BlockFormattingContext::computeEstimatedMarginTop(LayoutContext& layoutCont
 
 void BlockFormattingContext::computeEstimatedMarginTopForAncestors(LayoutContext& layoutContext, const Box& layoutBox) const
 {
-    // We only need to estimate margin top for float related layout.
-    ASSERT(layoutBox.isFloatingPositioned() || layoutBox.hasFloatClear());
+    // We only need to estimate margin top for float related layout (formatting context roots avoid floats).
+    ASSERT(layoutBox.isFloatingPositioned() || layoutBox.hasFloatClear() || layoutBox.establishesBlockFormattingContext());
 
     // In order to figure out whether a box should avoid a float, we need to know the final positions of both (ignore relative positioning for now).
     // In block formatting context the final position for a normal flow box includes
@@ -204,6 +211,21 @@ void BlockFormattingContext::computeFloatingPosition(LayoutContext& layoutContex
     floatingContext.floatingState().append(layoutBox);
 }
 
+void BlockFormattingContext::computePositionToAvoidFloats(LayoutContext& layoutContext, FloatingContext& floatingContext, const Box& layoutBox, Display::Box& displayBox) const
+{
+    // Formatting context roots avoid floats.
+    ASSERT(layoutBox.establishesBlockFormattingContext());
+    ASSERT(!layoutBox.isFloatingPositioned());
+    ASSERT(!layoutBox.hasFloatClear());
+
+    if (floatingContext.floatingState().isEmpty())
+        return;
+
+    computeEstimatedMarginTopForAncestors(layoutContext, layoutBox);
+    if (auto adjustedPosition = floatingContext.positionForFloatAvoiding(layoutBox))
+        displayBox.setTopLeft(*adjustedPosition);
+}
+
 void BlockFormattingContext::computeVerticalPositionForFloatClear(LayoutContext& layoutContext, const FloatingContext& floatingContext, const Box& layoutBox, Display::Box& displayBox) const
 {
     ASSERT(layoutBox.hasFloatClear());
index e8687a3..7d601a1 100644 (file)
@@ -57,6 +57,7 @@ private:
 
     void computeStaticPosition(LayoutContext&, const Box&, Display::Box&) const override;
     void computeFloatingPosition(LayoutContext&, FloatingContext&, const Box&, Display::Box&) const;
+    void computePositionToAvoidFloats(LayoutContext&, FloatingContext&, const Box&, Display::Box&) const;
     void computeVerticalPositionForFloatClear(LayoutContext&, const FloatingContext&, const Box&, Display::Box&) const;
     void computeInFlowPositionedPosition(LayoutContext&, const Box&, Display::Box&) const override;
     void computeInFlowWidthAndMargin(LayoutContext&, const Box&, Display::Box&) const;
index e965df3..f07f40b 100644 (file)
@@ -45,6 +45,7 @@ FloatAvoider::FloatAvoider(const Box& layoutBox, const FloatingState& floatingSt
     , m_containingBlockAbsoluteDisplayBox(FormattingContext::mapBoxToAncestor(layoutContext, *layoutBox.containingBlock(), downcast<Container>(floatingState.root())))
     , m_initialVerticalPosition(m_absoluteDisplayBox.top())
 {
+    ASSERT(m_layoutBox->establishesBlockFormattingContext());
 }
 
 void FloatAvoider::setHorizontalConstraints(HorizontalConstraints horizontalConstraints)
index 24b5532..05d4443 100644 (file)
@@ -143,6 +143,20 @@ PointInContainingBlock FloatingContext::positionForFloat(const Box& layoutBox) c
     return floatBox.rectInContainingBlock().topLeft();
 }
 
+std::optional<PointInContainingBlock> FloatingContext::positionForFloatAvoiding(const Box& layoutBox) const
+{
+    ASSERT(layoutBox.establishesBlockFormattingContext());
+    ASSERT(!layoutBox.isFloatingPositioned());
+    ASSERT(!layoutBox.hasFloatClear());
+
+    if (m_floatingState.isEmpty())
+        return { };
+
+    FloatAvoider floatAvoider = { layoutBox, m_floatingState, layoutContext() };
+    floatingPosition(floatAvoider);
+    return { floatAvoider.rectInContainingBlock().topLeft() };
+}
+
 std::optional<PositionInContainingBlock> FloatingContext::verticalPositionWithClearance(const Box& layoutBox) const
 {
     ASSERT(layoutBox.hasFloatClear());
index d28df59..bbfa1b2 100644 (file)
@@ -51,6 +51,7 @@ public:
     FloatingState& floatingState() const { return m_floatingState; }
 
     PointInContainingBlock positionForFloat(const Box&) const;
+    std::optional<PointInContainingBlock> positionForFloatAvoiding(const Box&) const;
     std::optional<PositionInContainingBlock> verticalPositionWithClearance(const Box&) const;
 
 private:
index 09ea6b9..583b70f 100644 (file)
@@ -1,3 +1,12 @@
+2018-08-30  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][Floating] Formatting context roots avoid floats.
+        https://bugs.webkit.org/show_bug.cgi?id=189150
+
+        Reviewed by Antti Koivisto.
+
+        * LayoutReloaded/misc/LFC-passing-tests.txt:
+
 2018-08-30  Wenson Hsieh  <wenson_hsieh@apple.com>
 
         [iOS] TestWebKitAPI.PasteImage tests are flaky failures
index 5d294a0..506cf8a 100644 (file)
@@ -50,3 +50,7 @@ fast/block/block-only/floating-and-next-previous-inflow-with-margin.html
 fast/block/block-only/floating-left-and-right-with-clearance.html
 fast/block/block-only/float-and-siblings-with-margins.html
 fast/block/block-only/margin-collapse-with-clearance.html
+fast/block/block-only/float-avoider-simple-left.html
+fast/block/block-only/float-avoider-simple-right.html
+fast/block/block-only/float-avoider-multiple-roots.html
+fast/block/block-only/float-avoider-with-margins.html