Handle nested theads correctly when paginated

When paginated, repeat nested theads at the top of each page - replicating the
way they look on the first page bar any spacing between them applied by content.

We don't try to replicate any cell padding in the nested repeating theads, that
would be a lot of work for not much gain.

BUG=620456

Review-Url: https://codereview.chromium.org/2079603002
Cr-Commit-Position: refs/heads/master@{#402943}
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-2-expected.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-2-expected.html
new file mode 100644
index 0000000..17923b9f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-2-expected.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+td, th {
+}
+tr {
+    break-inside: avoid;
+}
+.header {
+    font-weight: bold;
+    text-align: center
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td>
+                <table>
+                    <tr><td class="header" colspan=2>Col 1</td></tr>
+                    <tr><td>
+                            <table>
+                                <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                            </table>
+                    </tr></td>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header" colspan=2>Col 1</td></tr>
+                    <tr><td style="padding-top: 0px;">
+                            <table>
+                                <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                            </table>
+                    </tr></td>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header" colspan=2>Col 1</td></tr>
+                    <tr><td style="padding-top: 0px;">
+                            <table>
+                                <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                            </table>
+                    </tr></td>
+                </table>
+        </tr></td>
+    </table>
+</div>
+
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-2.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-2.html
new file mode 100644
index 0000000..67e653d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-2.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+thead, tr {
+    break-inside: avoid;
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table id="top">
+        <thead id="very-top-thead">
+            <tr>
+                <th>Col 1</th>
+            </tr>
+        </thead>
+        <tr><td>
+                <table id="top">
+                    <thead id="top-thead">
+                        <tr>
+                            <th>Col 1</th>
+                        </tr>
+                    </thead>
+                    <tr><td>
+                            <table id="next">
+                                <thead id="next-thead">
+                                    <tr>
+                                        <th>Col 1</th>
+                                        <th>Col 2</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                <tr><td>Te</td><td>xt</td></tr>
+                                </tbody>
+                            </table>
+                    </td></tr>
+                </table>
+        </td></tr>
+    </table>
+</div>
+
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-3-expected.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-3-expected.html
new file mode 100644
index 0000000..e33e876
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-3-expected.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+td, th {
+}
+tr {
+    break-inside: avoid;
+}
+.header {
+    font-weight: bold;
+    text-align: center
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td>
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+    </table>
+</div>
+
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-3.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-3.html
new file mode 100644
index 0000000..7fa7244
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-3.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+td, th {
+}
+thead, tr {
+    break-inside: avoid;
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table id="top">
+        <thead id="top-thead">
+            <tr>
+                <th>Col 1</th>
+            </tr>
+        </thead>
+        <tr><td>
+                <div>
+                    <table id="next">
+                        <thead id="next-thead">
+                            <tr>
+                                <th>Col 1</th>
+                                <th>Col 2</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        </tbody>
+                    </table>
+                </div>
+        </td></tr>
+    </table>
+</div>
+
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-4-expected.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-4-expected.html
new file mode 100644
index 0000000..9a24a2e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-4-expected.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+td, th {
+}
+tr {
+    break-inside: avoid;
+}
+.header {
+    font-weight: bold;
+    text-align: center
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td>
+                <br>
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+    </table>
+</div>
+
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-4.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-4.html
new file mode 100644
index 0000000..2abdbc4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-4.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+td, th {
+}
+thead, tr {
+    break-inside: avoid;
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table id="top">
+        <thead id="top-thead">
+            <tr>
+                <th>Col 1</th>
+            </tr>
+        </thead>
+        <tr><td>
+                <br>
+                    <table id="next">
+                        <thead id="next-thead">
+                            <tr>
+                                <th>Col 1</th>
+                                <th>Col 2</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        <tr><td>Te</td><td>xt</td></tr>
+                        </tbody>
+                    </table>
+        </td></tr>
+    </table>
+</div>
+
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-expected.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-expected.html
new file mode 100644
index 0000000..e33e876
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead-expected.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+td, th {
+}
+tr {
+    break-inside: avoid;
+}
+.header {
+    font-weight: bold;
+    text-align: center
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td>
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+        <tr><td class="header" colspan=2>Col 1</td></tr>
+        <tr><td style="padding-top: 0px;">
+                <table>
+                    <tr><td class="header">Col 1</td><td class="header">Col 2</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                </table>
+        </tr></td>
+    </table>
+</div>
+
diff --git a/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead.html b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead.html
new file mode 100644
index 0000000..c501b14
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/single-line-cells-nested-repeating-thead.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<style>
+table {
+    border-collapse: collapse;
+}
+td, th {
+}
+thead, tr {
+    break-inside: avoid;
+}
+</style>
+<p>crbug.com/620456: A nested table header group repeats on each page.</p>
+<div style="-webkit-columns:3; line-height: 20px; column-fill: auto; height:190px;">
+    <table id="top">
+        <thead id="top-thead">
+            <tr>
+                <th>Col 1</th>
+            </tr>
+        </thead>
+        <tr><td>
+                <table id="next">
+                    <thead id="next-thead">
+                        <tr>
+                            <th>Col 1</th>
+                            <th>Col 2</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    <tr><td>Te</td><td>xt</td></tr>
+                    </tbody>
+                </table>
+        </td></tr>
+    </table>
+</div>
+