Part 2 - Fix available block-size for block children in block container with box-decoration-break:clone.

If a block container has box-decoration-break:clone, its block-end border and
padding (BP) are *usually* drawn at the block-end edge of the current
column/page. Thus, when computing the available block-size for its children, we
should subtract its block-end border BP from it.

When I claim the block-end BP are *usually* drawn at the block-end edge of the
column/page, the exception is when a block container with a definite block-size
runs out of its block-size in a column/page. In this case, the block-end BP is
drawn at the block-end edge of its content-box. This patch wires the effective
content-box block-size computed in nsBlockFrame::Reflow() into
BlockReflowInput's constructor, and we do not subtract its block-end border BP
from the `mContentArea.BSize(wm)` when this case happens.

`BlockReflowInput::ContentBSize()` is the correct available block-size to reflow
the children, precomputed in BlockReflowInput's constructor. See
https://searchfox.org/mozilla-central/rev/c12a59323ee46b29b90c9917a3a7a70ea714ffec/layout/generic/BlockReflowInput.cpp#118-126

The remove hunk was a hack, working only for ColumnSetWrapper with
`box-decoration-break:clone`. It's no longer needed.

Differential Revision: https://phabricator.services.mozilla.com/D138367

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1564726
gecko-commit: aeaea91a4f585bab45270b44079c2bba902be857
gecko-reviewers: dholbert, emilio
diff --git a/css/css-break/box-decoration-break-clone-001.html b/css/css-break/box-decoration-break-clone-001.html
new file mode 100644
index 0000000..c247c9d
--- /dev/null
+++ b/css/css-break/box-decoration-break-clone-001.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css-break/#break-decoration">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1564726">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+
+<style>
+.multicol {
+  column-count: 2;
+  column-gap: 0;
+  column-fill: auto;
+  inline-size: 100px;
+  block-size: 100px;
+  background: red;
+}
+
+.container {
+  padding: 5px 0;
+  border-block: 10px solid green;
+  box-decoration-break: clone;
+  background: green;
+}
+
+.child {
+  block-size: calc(70px + 70px); /* 1st column + 2nd column */
+  background: green;
+}
+</style>
+
+<!-- The container's block-size is auto, so the available column block-size
+     reserved for the child is 70px in every column. -->
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="multicol">
+  <div class="container">
+    <div class="child"></div>
+  </div>
+</div>
diff --git a/css/css-break/box-decoration-break-clone-002.html b/css/css-break/box-decoration-break-clone-002.html
new file mode 100644
index 0000000..8aff0d4
--- /dev/null
+++ b/css/css-break/box-decoration-break-clone-002.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css-break/#break-decoration">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1564726">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+
+<style>
+.multicol {
+  column-count: 2;
+  column-gap: 0;
+  column-fill: auto;
+  inline-size: 100px;
+  block-size: 100px;
+  background: red;
+}
+
+.container {
+  border-block: 15px solid green;
+  box-decoration-break: clone;
+  block-size: calc(70px + 30px); /* 1st column + 2nd column */
+}
+
+.child {
+  block-size: calc(70px + 85px); /* 1st column + 2nd column */
+  background: green;
+}
+</style>
+
+<!-- The container's content-box block-size is 100px, occupying part of the
+     second column. The child overflows the container, and get painted over the
+     container's block-end border in the second column. -->
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="multicol">
+  <div class="container">
+    <div class="child"></div>
+  </div>
+</div>
diff --git a/css/css-break/box-decoration-break-clone-003.html b/css/css-break/box-decoration-break-clone-003.html
new file mode 100644
index 0000000..702f01b
--- /dev/null
+++ b/css/css-break/box-decoration-break-clone-003.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css-break/#break-decoration">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1564726">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+
+<style>
+.multicol {
+  column-count: 2;
+  column-gap: 0;
+  column-fill: auto;
+  inline-size: 100px;
+  block-size: 100px;
+  background: red;
+}
+
+.container {
+  border-block-start: 15px solid green;
+  border-block-end: 15px solid pink;
+  box-decoration-break: clone;
+  block-size: 70px;
+}
+
+.child {
+  block-size: calc(85px + 100px); /* 1st column + 2nd column */
+  background: green;
+}
+</style>
+
+<!-- The container's content-box block-size is 70px, fitting exactly into the
+     first column. The child overflows the container, and get painted over the
+     container's block-end border in the first column. -->
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="multicol">
+  <div class="container">
+    <div class="child"></div>
+  </div>
+</div>
diff --git a/css/css-break/box-decoration-break-clone-004.html b/css/css-break/box-decoration-break-clone-004.html
new file mode 100644
index 0000000..d1840bf
--- /dev/null
+++ b/css/css-break/box-decoration-break-clone-004.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css-break/#break-decoration">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1564726">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+
+<style>
+.multicol {
+  column-count: 2;
+  column-gap: 0;
+  column-fill: auto;
+  inline-size: 100px;
+  block-size: 100px;
+  background: red;
+}
+
+.container {
+  padding: 5px 0;
+  border-block: 10px solid green;
+  box-decoration-break: clone;
+  block-size: calc(70px + 10px); /* 1st column + 2nd column */
+  background: green;
+}
+</style>
+
+<!-- The container's content-box block-size is 80px, making its border-box
+     block-size in the second column be 40px. The remaining 60px block-size in
+     the second column should be filled completely by the later sibling green
+     block. -->
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="multicol">
+  <div class="container"></div>
+  <div style="block-size: 60px; background: green"></div>
+</div>