diff options
5 files changed, 164 insertions, 2 deletions
diff --git a/layout/reftests/table-bordercollapse/bug1394226-notref.html b/layout/reftests/table-bordercollapse/bug1394226-notref.html new file mode 100644 index 000000000..7c4b694a9 --- /dev/null +++ b/layout/reftests/table-bordercollapse/bug1394226-notref.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html> +<head> +<title>Table border collapse</title> +<style> + table { + border-collapse: collapse; + } + tr.odd { + background-color: LightCyan; + } + tr.even { + background-color: LightSkyBlue; + } + td { + border: 5px solid DarkBlue; + } + .inner td { + border: 5px solid red; + } + .inner tr:first-child td { + border-top: 5px solid DarkBlue; + } + .inner tr td:first-child { + border-left: 5px solid DarkBlue; + } + .inner tr:last-child td { + border-bottom: 5px solid DarkBlue; + } + .inner tr td:last-child { + border-right: 5px solid DarkBlue; + } + div { + height: 10px; + } +</style> +</head> +<body> + <div></div> + <table> + <caption></caption> + <tr class="odd"> + <td>Cell 1-1</td> + <td>Cell 1-2</td> + </tr> + <tr class="even"> + <td>Cell 2-1</td> + <td>Cell 2-2 + <table class="inner"> + <tr class="odd"> + <td>Cell 2-2/1-1</td> + <td>Cell 2-2/1-2</td> + </tr> + <tr class="even"> + <td>Cell 2-2/2-1</td> + <td>Cell 2-2/2-2</td> + </tr> + </table> + </td> + </tr> + </table> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/table-bordercollapse/bug1394226-ref.html b/layout/reftests/table-bordercollapse/bug1394226-ref.html new file mode 100644 index 000000000..11c72d4bb --- /dev/null +++ b/layout/reftests/table-bordercollapse/bug1394226-ref.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<html> +<head> +<title>Table border collapse</title> +<style> + table { + border-collapse: collapse; + } + tr.odd { + background-color: LightCyan; + } + tr.even { + background-color: LightSkyBlue; + } + td { + border: 5px solid DarkBlue; + } + div { + height: 10px; + } +</style> +</head> +<body> + <div></div> + <table> + <tr class="odd"> + <td>Cell 1-1</td> + <td>Cell 1-2</td> + </tr> + <tr class="even"> + <td>Cell 2-1</td> + <td>Cell 2-2 + <table> + <tr class="odd"> + <td>Cell 2-2/1-1</td> + <td>Cell 2-2/1-2</td> + </tr> + <tr class="even"> + <td>Cell 2-2/2-1</td> + <td>Cell 2-2/2-2</td> + </tr> + </table> + </td> + </tr> + </table> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/table-bordercollapse/bug1394226.html b/layout/reftests/table-bordercollapse/bug1394226.html new file mode 100644 index 000000000..04c8ab173 --- /dev/null +++ b/layout/reftests/table-bordercollapse/bug1394226.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<html> +<head> +<title>Table border collapse</title> +<style> + table { + border-collapse: collapse; + } + tr.odd { + background-color: LightCyan; + } + tr.even { + background-color: LightSkyBlue; + } + td { + border: 5px solid DarkBlue; + } + caption { + height: 10px + } +</style> +</head> +<body> + <table> + <caption></caption> + <tr class="odd"> + <td>Cell 1-1</td> + <td>Cell 1-2</td> + </tr> + <tr class="even"> + <td>Cell 2-1</td> + <td>Cell 2-2 + <table> + <tr class="odd"> + <td>Cell 2-2/1-1</td> + <td>Cell 2-2/1-2</td> + </tr> + <tr class="even"> + <td>Cell 2-2/2-1</td> + <td>Cell 2-2/2-2</td> + </tr> + </table> + </td> + </tr> + </table> +</body> +</html>
\ No newline at end of file diff --git a/layout/reftests/table-bordercollapse/reftest.list b/layout/reftests/table-bordercollapse/reftest.list index aac4934d6..2610d202d 100644 --- a/layout/reftests/table-bordercollapse/reftest.list +++ b/layout/reftests/table-bordercollapse/reftest.list @@ -3,6 +3,8 @@ == bug1375518-3.html bug1375518-ref.html == bug1375518-4.html bug1375518-4-ref.html == bug1375518-5.html bug1375518-5-ref.html +== bug1394226.html bug1394226-ref.html +!= bug1394226.html bug1394226-notref.html == bc_dyn_cell1.html bc_dyn_cell1_ref.html == bc_dyn_cell2.html bc_dyn_cell2_ref.html == bc_dyn_cell3.html bc_dyn_cell3_ref.html diff --git a/layout/tables/nsTableWrapperFrame.cpp b/layout/tables/nsTableWrapperFrame.cpp index 476024e96..86f032218 100644 --- a/layout/tables/nsTableWrapperFrame.cpp +++ b/layout/tables/nsTableWrapperFrame.cpp @@ -187,8 +187,11 @@ nsTableWrapperFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, BuildDisplayListForChild(aBuilder, mCaptionFrames.FirstChild(), captionSet); // Now we have to sort everything by content order, since the caption - // may be somewhere inside the table - set.BlockBorderBackgrounds()->SortByContentOrder(GetContent()); + // may be somewhere inside the table. + // We don't sort BlockBorderBackgrounds and BorderBackgrounds because the + // display items in those lists should stay out of content order in order to + // follow the rules in https://www.w3.org/TR/CSS21/zindex.html#painting-order + // and paint the caption background after all of the rest. set.Floats()->SortByContentOrder(GetContent()); set.Content()->SortByContentOrder(GetContent()); set.PositionedDescendants()->SortByContentOrder(GetContent()); |