summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwin7-7 <win7-7@users.noreply.github.com>2020-05-13 19:57:18 +0300
committerwin7-7 <win7-7@users.noreply.github.com>2020-05-13 19:57:18 +0300
commitca50a57545a3ef3a9aded85a9dc17f6a4ee1ebb9 (patch)
tree3f3a2dcc96001e389ec6e3d9f9a1d04e0287ebea
parentf38ebb5f44a7f95bc61db5d7ce050e6d30ab72bf (diff)
downloaduxp-ca50a57545a3ef3a9aded85a9dc17f6a4ee1ebb9.tar.gz
issue #1547 - Correct z-ordering for some table parts and add reftests
-rw-r--r--layout/reftests/table-bordercollapse/bug1394226-notref.html63
-rw-r--r--layout/reftests/table-bordercollapse/bug1394226-ref.html47
-rw-r--r--layout/reftests/table-bordercollapse/bug1394226.html47
-rw-r--r--layout/reftests/table-bordercollapse/reftest.list2
-rw-r--r--layout/tables/nsTableWrapperFrame.cpp7
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 0000000000..7c4b694a99
--- /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 0000000000..11c72d4bb5
--- /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 0000000000..04c8ab1734
--- /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 aac4934d69..2610d202d8 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 476024e96d..86f032218e 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());