Part 2 - Always pull back floats from pushed floats list to floats list when reflowing a block.

When balancing columns, if a block frame doesn't have enough available
block-size for a float's continuation, we move the float continuation into the
block's pushed floats list.

Typically, the float's continuation is expected to be pulled by the block's next
continuation and reflow there. However, if the block happens to be in the *last*
column, the float continuation will stay in the pushed float list until we
reflow its block again in the next column balancing loop. In this case, we
should pull it from the pushed floats list regardless of whether the
continuation has a previous continuation or not. Otherwise, it will not be
reflowed if it remains in the pushed floats list.

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

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1833238
gecko-commit: edcd9312d82d73e9ec13f7330d29bf15bb55cf73
gecko-reviewers: emilio
diff --git a/css/CSS2/floats/float-in-nested-multicol-001.html b/css/CSS2/floats/float-in-nested-multicol-001.html
new file mode 100644
index 0000000..8e1a257
--- /dev/null
+++ b/css/CSS2/floats/float-in-nested-multicol-001.html
@@ -0,0 +1,26 @@
+<!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://bugzilla.mozilla.org/show_bug.cgi?id=1833238">
+<!-- Browsers do not agree on the rendering, so we just verify the rendering is *not* blank. -->
+<link rel="mismatch" href="../../reference/blank.html">
+
+<style>
+article {
+  width: 300px;
+  column-count: 2;
+}
+main {
+  column-count: 2;
+}
+</style>
+
+<article>
+  <main>
+    <div>&nbsp;</div>
+    <footer style="float: left">
+      <div style="margin-top: 1em">ABC</div> <!-- This text should appear. -->
+    </footer>
+  </main>
+</article>