[New Multicolumn] boundingBoxForCompositingOverlapTest() needs to use fragmentsBoundingBox().

Bounding boxes are visual, so we need to translate a flow thread
rectangle to the union of each visual fragment in each column that the
layer occurs. This means that flippedLogicalBoundingBox() won't do. Nor
will physicalBoundingBox(), which, despite its name, isn't "physical"
enough for multicol. In our case, flippedLogicalBoundingBox() and
physicalBoundingBox() would behave identically anyway, since the
ancestor layer is the same as this layer (and physicalBoundingBox()
only adds the offset from this layer to the ancestor).

BUG=359877
R=jchaffraix@chromium.org

Review URL: https://codereview.chromium.org/655003005

git-svn-id: svn://svn.chromium.org/blink/trunk@184670 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 794f904..baeb829 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1030,6 +1030,7 @@
 crbug.com/386567 virtual/regionbasedmulticol/fast/multicol/vertical-rl/border-padding-pagination.html [ Skip ]
 crbug.com/386567 virtual/regionbasedmulticol/fast/multicol/vertical-rl/break-properties.html [ Skip ]
 crbug.com/386567 virtual/regionbasedmulticol/fast/multicol/vertical-rl/column-rules.html [ Skip ]
+crbug.com/359877 virtual/regionbasedmulticol/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html [ ImageOnlyFailure ]
 crbug.com/386567 virtual/regionbasedmulticol/fast/multicol/vertical-rl/float-paginate-complex.html [ Skip ]
 crbug.com/386567 virtual/regionbasedmulticol/fast/multicol/vertical-rl/float-paginate.html [ Skip ]
 crbug.com/386567 virtual/regionbasedmulticol/fast/multicol/vertical-rl/float-truncation.html [ Skip ]
@@ -1055,6 +1056,7 @@
 crbug.com/350853 fast/multicol/change-height.html [ Skip ]
 crbug.com/408123 fast/multicol/composited-opacity-2nd-and-3rd-column.html [ Skip ]
 crbug.com/408123 fast/multicol/composited-relpos-clipped.html [ Skip ]
+crbug.com/408123 fast/multicol/composited-relpos-overlapping-will-change.html [ Skip ]
 crbug.com/408123 fast/multicol/composited-relpos-resize.html [ Skip ]
 crbug.com/408123 fast/multicol/composited-relpos.html [ Skip ]
 crbug.com/408123 fast/multicol/composited-with-child-layer-in-next-column.html [ Skip ]
@@ -1124,9 +1126,11 @@
 crbug.com/408123 fast/multicol/vertical-lr/balancing/balance-short-trailing-empty-block.html [ Skip ]
 crbug.com/408123 fast/multicol/vertical-lr/balancing/balance-trailing-border.html [ Skip ]
 crbug.com/408123 fast/multicol/vertical-lr/balancing/balance-trailing-border-after-break.html [ Skip ]
+crbug.com/408123 fast/multicol/vertical-lr/composited-relpos-overlapping-will-change.html [ Skip ]
 crbug.com/408123 fast/multicol/vertical-rl/balancing/balance-short-trailing-empty-block.html [ Skip ]
 crbug.com/408123 fast/multicol/vertical-rl/balancing/balance-trailing-border.html [ Skip ]
 crbug.com/408123 fast/multicol/vertical-rl/balancing/balance-trailing-border-after-break.html [ Skip ]
+crbug.com/408123 fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html [ Skip ]
 crbug.com/350853 fast/multicol/widows.html [ Skip ]
 crbug.com/350853 fast/multicol/widows2.html [ Skip ]
 crbug.com/350853 fast/pagination/auto-height.html [ Skip ]
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/composited-relpos-overlapping-will-change-expected.html b/third_party/WebKit/LayoutTests/fast/multicol/composited-relpos-overlapping-will-change-expected.html
new file mode 100644
index 0000000..d4c8e0a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/composited-relpos-overlapping-will-change-expected.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<p>The word 'PASS' should be seen <em>twice</em> below.</p>
+<div style="width:35em; height:13em; line-height:2em;">
+    <div style="position:absolute; z-index:-1; left:0; right:0; height:8em; background:yellow;"></div>
+    <div style="float:left; width:12em; height:100%;"></div>
+    <div style="float:left; width:11em; height:100%;">
+        <br>
+        <br>
+        <br>
+        <br>
+        <br>
+        <div style="margin:0.5em;">PASS</div>
+    </div>
+    <div style="float:left; width:1em; height:100%;"></div>
+    <div style="float:left; width:11em; height:100%;">
+        <div style="margin:0 0.5em;">PASS</div>
+    </div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/composited-relpos-overlapping-will-change.html b/third_party/WebKit/LayoutTests/fast/multicol/composited-relpos-overlapping-will-change.html
new file mode 100644
index 0000000..370735b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/composited-relpos-overlapping-will-change.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<p>The word 'PASS' should be seen <em>twice</em> below.</p>
+<div style="-webkit-columns:3; -webkit-column-gap:1em; column-fill:auto; width:35em; height:13em; line-height:2em;">
+    <div style="will-change:transform; position:absolute; left:0; right:0; height:8em; background:yellow;"></div>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <div style="position:relative; margin:0.5em;">PASS<br>PASS</div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.html b/third_party/WebKit/LayoutTests/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.html
new file mode 100644
index 0000000..5206c368
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<p>The word 'PASS' should be seen <em>twice</em> below.</p>
+<div style="-webkit-writing-mode:vertical-lr; height:26em; width:13em; line-height:2em;">
+    <div style="position:absolute; z-index:-1; left:0; top:4em; width:10em; height:18em; background:yellow;"></div>
+    <div style="float:left; width:100%; height:9em;"></div>
+    <div style="float:left; width:100%; height:9em;">
+        <br>
+        <br>
+        <br>
+        <br>
+        <br>
+        <div style="margin:0.5em;">PASS</div>
+    </div>
+    <div style="float:left; width:100%; height:8em;">
+        <div style="margin:0.5em 0;">PASS</div>
+    </div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change.html b/third_party/WebKit/LayoutTests/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change.html
new file mode 100644
index 0000000..92b4a84
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<p>The word 'PASS' should be seen <em>twice</em> below.</p>
+<div style="-webkit-columns:3; -webkit-column-gap:1em; column-fill:auto; -webkit-writing-mode:vertical-lr; height:26em; width:13em; line-height:2em;">
+    <div style="will-change:transform; position:absolute; left:0; top:4em; width:10em; height:18em; background:yellow;"></div>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    r<br>
+    <div style="position:relative; margin:0.5em;">PASS<br>PASS</div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.html b/third_party/WebKit/LayoutTests/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.html
new file mode 100644
index 0000000..61d256f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<p>The word 'PASS' should be seen <em>twice</em> below.</p>
+<div style="-webkit-writing-mode:vertical-rl; height:26em; width:13em; line-height:2em;">
+    <div style="position:absolute; z-index:-1; left:0; top:4em; width:10em; height:18em; background:yellow;"></div>
+    <div style="float:left; width:100%; height:9em;"></div>
+    <div style="float:left; width:100%; height:9em;">
+        <br>
+        <br>
+        <br>
+        <br>
+        <br>
+        <div style="margin:0.5em;">PASS</div>
+    </div>
+    <div style="float:left; width:100%; height:8em;">
+        <div style="margin:0.5em 0;">PASS</div>
+    </div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html b/third_party/WebKit/LayoutTests/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html
new file mode 100644
index 0000000..30d01b40
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<p>The word 'PASS' should be seen <em>twice</em> below.</p>
+<div style="-webkit-columns:3; -webkit-column-gap:1em; column-fill:auto; -webkit-writing-mode:vertical-rl; height:26em; width:13em; line-height:2em;">
+    <div style="will-change:transform; position:absolute; left:0; top:4em; width:10em; height:18em; background:yellow;"></div>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <br>
+    <div style="position:relative; margin:0.5em;">PASS<br>PASS</div>
+</div>
diff --git a/third_party/WebKit/Source/core/rendering/RenderLayer.cpp b/third_party/WebKit/Source/core/rendering/RenderLayer.cpp
index ba9c916..d411161 100644
--- a/third_party/WebKit/Source/core/rendering/RenderLayer.cpp
+++ b/third_party/WebKit/Source/core/rendering/RenderLayer.cpp
@@ -2283,7 +2283,7 @@
 
 LayoutRect RenderLayer::boundingBoxForCompositingOverlapTest() const
 {
-    return overlapBoundsIncludeChildren() ? boundingBoxForCompositing() : flippedLogicalBoundingBox(logicalBoundingBox(), renderer());
+    return overlapBoundsIncludeChildren() ? boundingBoxForCompositing() : fragmentsBoundingBox(this);
 }
 
 static void expandRectForReflectionAndStackingChildren(const RenderLayer* ancestorLayer, RenderLayer::CalculateBoundsOptions options, LayoutRect& result)