Add some reftests for table background painting. (These tests catch the regression from the previous patch in bug 421069.)
authordbaron@dbaron.org
Thu, 20 Mar 2008 18:17:09 -0700
changeset 13404 0096b2a36fe98b1193f42d5db4610fe48079aa11
parent 13403 299e985f9774cdbfb65f371aa845aca7119c09cc
child 13405 f5bdc600458461e13ce1d438c996dfb35f816dc3
push id2
push userjorendorff@mozilla.com
push dateWed, 26 Mar 2008 17:39:06 +0000
treeherdermozilla-central@1d969540aa4e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs421069
milestone1.9b5pre
Add some reftests for table background painting. (These tests catch the regression from the previous patch in bug 421069.)
layout/reftests/table-background/border-collapse-table-cell-ref.html
layout/reftests/table-background/border-collapse-table-cell.html
layout/reftests/table-background/border-collapse-table-column-group-ref.html
layout/reftests/table-background/border-collapse-table-column-group.html
layout/reftests/table-background/border-collapse-table-column-ref.html
layout/reftests/table-background/border-collapse-table-column.html
layout/reftests/table-background/border-collapse-table-ref.html
layout/reftests/table-background/border-collapse-table-row-group-ref.html
layout/reftests/table-background/border-collapse-table-row-group.html
layout/reftests/table-background/border-collapse-table-row-ref.html
layout/reftests/table-background/border-collapse-table-row.html
layout/reftests/table-background/border-collapse-table.html
layout/reftests/table-background/border-separate-table-cell-ref.html
layout/reftests/table-background/border-separate-table-cell.html
layout/reftests/table-background/border-separate-table-column-group-ref.html
layout/reftests/table-background/border-separate-table-column-group.html
layout/reftests/table-background/border-separate-table-column-ref.html
layout/reftests/table-background/border-separate-table-column.html
layout/reftests/table-background/border-separate-table-ref.html
layout/reftests/table-background/border-separate-table-row-group-ref.html
layout/reftests/table-background/border-separate-table-row-group.html
layout/reftests/table-background/border-separate-table-row-ref.html
layout/reftests/table-background/border-separate-table-row.html
layout/reftests/table-background/border-separate-table.html
layout/reftests/table-background/reftest.list
layout/reftests/table-background/repeatable-diagonal-gradient-with-ticks.png
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-cell-ref.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 8px 6px;
+
+		height is 97px:
+		  (2px of border outside height)
+		  extra border width for top row: 0
+		  cell * 5: == 19px * 5 == 95px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 2px;
+		  extra border width for top row: 2px
+		  (4px of border outside height)
+
+		width is 287px:
+		  (3px of border outside width)
+		  extra border width for left column: 2px
+		  cell * 5: == 57px * 5 == 285px
+		    border-left: 1px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  (1px of border outside width)
+    */
+
+	div { width: 57px; height: 19px; margin: 38px 117px 80px 120px; }
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 1px 2px; }
+	div.imagebr { background-position: 56px 17px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-cell.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 8px 6px; /* collapsed */
+		padding: 3px 7px 8px 6px; /* ignored */
+		border-collapse: collapse;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 0 4px 2px; /* collapsed */
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color td.t { background-color: aqua; }
+
+	table.imagetl td.t, table.imagebr td.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl td.t { background-position: top left; /* default */ }
+	table.imagebr td.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-column-group-ref.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 8px 6px;
+
+		height is 97px:
+		  (2px of border outside height)
+		  extra border width for top row: 0
+		  cell * 5: == 19px * 5 == 95px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 2px;
+		  extra border width for top row: 2px
+		  (4px of border outside height)
+
+		width is 287px:
+		  (3px of border outside width)
+		  extra border width for left column: 2px
+		  cell * 5: == 57px * 5 == 285px
+		    border-left: 1px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  (1px of border outside width)
+    */
+
+	div { width: 171px; height: 97px; margin: 0px 60px 2px 63px; }
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 171px 97px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-column-group.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 8px 6px; /* collapsed */
+		padding: 3px 7px 8px 6px; /* ignored */
+		border-collapse: collapse;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 0 4px 2px; /* collapsed */
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color colgroup.t { background-color: aqua; }
+
+	table.imagetl colgroup.t, table.imagebr colgroup.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl colgroup.t { background-position: top left; /* default */ }
+	table.imagebr colgroup.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-column-ref.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 8px 6px;
+
+		height is 97px:
+		  (2px of border outside height)
+		  extra border width for top row: 0
+		  cell * 5: == 19px * 5 == 95px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 2px;
+		  extra border width for top row: 2px
+		  (4px of border outside height)
+
+		width is 287px:
+		  (3px of border outside width)
+		  extra border width for left column: 2px
+		  cell * 5: == 57px * 5 == 285px
+		    border-left: 1px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  (1px of border outside width)
+    */
+
+	div { width: 57px; height: 97px; margin: 0px 117px 2px 120px; }
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 57px 97px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-column.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 8px 6px; /* collapsed */
+		padding: 3px 7px 8px 6px; /* ignored */
+		border-collapse: collapse;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 0 4px 2px; /* collapsed */
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color col.t { background-color: aqua; }
+
+	table.imagetl col.t, table.imagebr col.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl col.t { background-position: top left; /* default */ }
+	table.imagebr col.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-ref.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 8px 6px;
+
+		height is 97px:
+		  (2px of border outside height)
+		  extra border width for top row: 0
+		  cell * 5: == 19px * 5 == 95px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 2px;
+		  extra border width for top row: 2px
+		  (4px of border outside height)
+
+		width is 287px:
+		  (3px of border outside width)
+		  extra border width for left column: 2px
+		  cell * 5: == 57px * 5 == 285px
+		    border-left: 1px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  (1px of border outside width)
+    */
+
+	div { width: 287px; height: 97px; margin: 0px 3px 2px 4px; }
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 287px 97px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-row-group-ref.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 8px 6px;
+
+		height is 97px:
+		  (2px of border outside height)
+		  extra border width for top row: 0
+		  cell * 5: == 19px * 5 == 95px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 2px;
+		  extra border width for top row: 2px
+		  (4px of border outside height)
+
+		width is 287px:
+		  (3px of border outside width)
+		  extra border width for left column: 2px
+		  cell * 5: == 57px * 5 == 285px
+		    border-left: 1px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  (1px of border outside width)
+    */
+
+	div { width: 287px; height: 57px; margin: 19px 3px 42px 4px; }
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 287px 57px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-row-group.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 8px 6px; /* collapsed */
+		padding: 3px 7px 8px 6px; /* ignored */
+		border-collapse: collapse;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 0 4px 2px; /* collapsed */
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color tbody.t { background-color: aqua; }
+
+	table.imagetl tbody.t, table.imagebr tbody.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl tbody.t { background-position: top left; /* default */ }
+	table.imagebr tbody.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-row-ref.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 8px 6px;
+
+		height is 97px:
+		  (2px of border outside height)
+		  extra border width for top row: 0
+		  cell * 5: == 19px * 5 == 95px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 2px;
+		  extra border width for top row: 2px
+		  (4px of border outside height)
+
+		width is 287px:
+		  (3px of border outside width)
+		  extra border width for left column: 2px
+		  cell * 5: == 57px * 5 == 285px
+		    border-left: 1px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  (1px of border outside width)
+    */
+
+	div { width: 287px; height: 19px; margin: 38px 3px 80px 4px; }
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 287px 19px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table-row.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 8px 6px; /* collapsed */
+		padding: 3px 7px 8px 6px; /* ignored */
+		border-collapse: collapse;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 0 4px 2px; /* collapsed */
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color tr.t { background-color: aqua; }
+
+	table.imagetl tr.t, table.imagebr tr.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl tr.t { background-position: top left; /* default */ }
+	table.imagebr tr.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-collapse-table.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 8px 6px; /* collapsed */
+		padding: 3px 7px 8px 6px; /* ignored */
+		border-collapse: collapse;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 0 4px 2px; /* collapsed */
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color { background-color: aqua; }
+
+	table.imagetl, table.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl { background-position: top left; /* default */ }
+	table.imagebr { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-cell-ref.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 7px 3px;
+
+		border-box height is 145px:
+		  border-top: 4px;
+		  padding-top: 3px
+		  border-spacing: 3px * 6 == 18px
+		  cell * 5: == 21px * 5 == 105px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 4px;
+		  padding-bottom: 8px;
+		  border-bottom: 7px;
+
+		border-box width is 325px:
+		  border-left: 3px;
+		  padding-left: 6px
+		  border-spacing: 2px * 6 == 12px
+		  cell * 5: == 59px * 5 == 295px
+		    border-left: 3px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  padding-right: 7px;
+		  border-right: 2px;
+    */
+
+	div.color, div.imagetl, div.imagebr {
+        width: 59px; height: 21px; margin: 58px 136px 126px 137px;
+	}
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 3px 2px; }
+	div.imagebr { background-position: 58px 17px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-cell.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 7px 3px;
+		padding: 3px 7px 8px 6px;
+		border-collapse: separate;
+		border-spacing: 2px 3px;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 1px 4px 3px;
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color td.t { background-color: aqua; }
+
+	table.imagetl td.t, table.imagebr td.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl td.t { background-position: top left; /* default */ }
+	table.imagebr td.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-column-group-ref.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 7px 3px;
+
+		border-box height is 145px:
+		  border-top: 4px;
+		  padding-top: 3px
+		  border-spacing: 3px * 6 == 18px
+		  cell * 5: == 21px * 5 == 105px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 4px;
+		  padding-bottom: 8px;
+		  border-bottom: 7px;
+
+		border-box width is 325px:
+		  border-left: 3px;
+		  padding-left: 6px
+		  border-spacing: 2px * 6 == 12px
+		  cell * 5: == 59px * 5 == 295px
+		    border-left: 3px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  padding-right: 7px;
+		  border-right: 2px;
+    */
+
+	div.color, div.imagetl, div.imagebr {
+        width: 181px; height: 117px; margin: 10px 75px 30px 76px;
+	}
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 181px 117px; }
+
+	div.vstripe, div.hstripe { background: white; position: absolute; }
+	div.vstripe { top: 0; width: 2px; height: 500px; }
+	div.hstripe { left: 0; height: 3px; width: 400px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+<div class="hstripe" style="top: 46px"></div>
+<div class="hstripe" style="top: 70px"></div>
+<div class="hstripe" style="top: 94px"></div>
+<div class="hstripe" style="top: 118px"></div>
+<div class="hstripe" style="top: 193px"></div>
+<div class="hstripe" style="top: 217px"></div>
+<div class="hstripe" style="top: 241px"></div>
+<div class="hstripe" style="top: 265px"></div>
+<div class="hstripe" style="top: 340px"></div>
+<div class="hstripe" style="top: 364px"></div>
+<div class="hstripe" style="top: 388px"></div>
+<div class="hstripe" style="top: 412px"></div>
+
+<div class="vstripe" style="left: 89px"></div>
+<div class="vstripe" style="left: 150px"></div>
+<div class="vstripe" style="left: 211px"></div>
+<div class="vstripe" style="left: 272px"></div>
+<div class="vstripe" style="left: 333px"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-column-group.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 7px 3px;
+		padding: 3px 7px 8px 6px;
+		border-collapse: separate;
+		border-spacing: 2px 3px;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 1px 4px 3px;
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color colgroup.t { background-color: aqua; }
+
+	table.imagetl colgroup.t, table.imagebr colgroup.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl colgroup.t { background-position: top left; /* default */ }
+	table.imagebr colgroup.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-column-ref.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 7px 3px;
+
+		border-box height is 145px:
+		  border-top: 4px;
+		  padding-top: 3px
+		  border-spacing: 3px * 6 == 18px
+		  cell * 5: == 21px * 5 == 105px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 4px;
+		  padding-bottom: 8px;
+		  border-bottom: 7px;
+
+		border-box width is 325px:
+		  border-left: 3px;
+		  padding-left: 6px
+		  border-spacing: 2px * 6 == 12px
+		  cell * 5: == 59px * 5 == 295px
+		    border-left: 3px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  padding-right: 7px;
+		  border-right: 2px;
+    */
+
+	div.color, div.imagetl, div.imagebr {
+        width: 59px; height: 117px; margin: 10px 136px 30px 137px;
+	}
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 59px 117px; }
+
+	div.vstripe, div.hstripe { background: white; position: absolute; }
+	div.vstripe { top: 0; width: 2px; height: 500px; }
+	div.hstripe { left: 0; height: 3px; width: 400px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+<div class="hstripe" style="top: 46px"></div>
+<div class="hstripe" style="top: 70px"></div>
+<div class="hstripe" style="top: 94px"></div>
+<div class="hstripe" style="top: 118px"></div>
+<div class="hstripe" style="top: 193px"></div>
+<div class="hstripe" style="top: 217px"></div>
+<div class="hstripe" style="top: 241px"></div>
+<div class="hstripe" style="top: 265px"></div>
+<div class="hstripe" style="top: 340px"></div>
+<div class="hstripe" style="top: 364px"></div>
+<div class="hstripe" style="top: 388px"></div>
+<div class="hstripe" style="top: 412px"></div>
+
+<div class="vstripe" style="left: 89px"></div>
+<div class="vstripe" style="left: 150px"></div>
+<div class="vstripe" style="left: 211px"></div>
+<div class="vstripe" style="left: 272px"></div>
+<div class="vstripe" style="left: 333px"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-column.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 7px 3px;
+		padding: 3px 7px 8px 6px;
+		border-collapse: separate;
+		border-spacing: 2px 3px;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 1px 4px 3px;
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color col.t { background-color: aqua; }
+
+	table.imagetl col.t, table.imagebr col.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl col.t { background-position: top left; /* default */ }
+	table.imagebr col.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-ref.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 7px 3px;
+
+		border-box height is 145px:
+		  border-top: 4px;
+		  padding-top: 3px
+		  border-spacing: 3px * 6 == 18px
+		  cell * 5: == 21px * 5 == 105px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 4px;
+		  padding-bottom: 8px;
+		  border-bottom: 7px;
+
+		border-box width is 325px:
+		  border-left: 3px;
+		  padding-left: 6px
+		  border-spacing: 2px * 6 == 12px
+		  cell * 5: == 59px * 5 == 295px
+		    border-left: 3px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  padding-right: 7px;
+		  border-right: 2px;
+    */
+
+	div { width: 325px; height: 145px; margin: 0px 3px 2px 4px; }
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 3px 4px; }
+	div.imagebr { background-position: 323px 138px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-row-group-ref.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 7px 3px;
+
+		border-box height is 145px:
+		  border-top: 4px;
+		  padding-top: 3px
+		  border-spacing: 3px * 6 == 18px
+		  cell * 5: == 21px * 5 == 105px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 4px;
+		  padding-bottom: 8px;
+		  border-bottom: 7px;
+
+		border-box width is 325px:
+		  border-left: 3px;
+		  padding-left: 6px
+		  border-spacing: 2px * 6 == 12px
+		  cell * 5: == 59px * 5 == 295px
+		    border-left: 3px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  padding-right: 7px;
+		  border-right: 2px;
+    */
+
+	div.color, div.imagetl, div.imagebr {
+        width: 303px; height: 69px; margin: 34px 14px 78px 15px;
+	}
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 303px 69px; }
+
+	div.vstripe, div.hstripe { background: white; position: absolute; }
+	div.vstripe { top: 0; width: 2px; height: 500px; }
+	div.hstripe { left: 0; height: 3px; width: 400px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+<div class="hstripe" style="top: 46px"></div>
+<div class="hstripe" style="top: 70px"></div>
+<div class="hstripe" style="top: 94px"></div>
+<div class="hstripe" style="top: 118px"></div>
+<div class="hstripe" style="top: 193px"></div>
+<div class="hstripe" style="top: 217px"></div>
+<div class="hstripe" style="top: 241px"></div>
+<div class="hstripe" style="top: 265px"></div>
+<div class="hstripe" style="top: 340px"></div>
+<div class="hstripe" style="top: 364px"></div>
+<div class="hstripe" style="top: 388px"></div>
+<div class="hstripe" style="top: 412px"></div>
+
+<div class="vstripe" style="left: 89px"></div>
+<div class="vstripe" style="left: 150px"></div>
+<div class="vstripe" style="left: 211px"></div>
+<div class="vstripe" style="left: 272px"></div>
+<div class="vstripe" style="left: 333px"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-row-group.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 7px 3px;
+		padding: 3px 7px 8px 6px;
+		border-collapse: separate;
+		border-spacing: 2px 3px;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 1px 4px 3px;
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color tbody.t { background-color: aqua; }
+
+	table.imagetl tbody.t, table.imagebr tbody.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl tbody.t { background-position: top left; /* default */ }
+	table.imagebr tbody.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-row-ref.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	/*
+	table { 
+		margin: 0px 3px 2px 4px;
+		border-width: 4px 2px 7px 3px;
+
+		border-box height is 145px:
+		  border-top: 4px;
+		  padding-top: 3px
+		  border-spacing: 3px * 6 == 18px
+		  cell * 5: == 21px * 5 == 105px
+		    border-top: 2px;
+		    padding-top: 1px;
+		    height: 10px;
+		    padding-bottom: 4px;
+		    border-bottom: 4px;
+		  padding-bottom: 8px;
+		  border-bottom: 7px;
+
+		border-box width is 325px:
+		  border-left: 3px;
+		  padding-left: 6px
+		  border-spacing: 2px * 6 == 12px
+		  cell * 5: == 59px * 5 == 295px
+		    border-left: 3px;
+		    padding-left: 3px;
+		    width: 50px;
+		    padding-right: 2px;
+		    border-right: 1px;
+		  padding-right: 7px;
+		  border-right: 2px;
+    */
+
+	div.color, div.imagetl, div.imagebr {
+        width: 303px; height: 21px; margin: 58px 14px 126px 15px;
+	}
+	div.color { background-color: aqua; }
+
+	div.imagetl, div.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	div.imagetl { background-position: 0 0; }
+	div.imagebr { background-position: 303px 21px; }
+
+	div.vstripe, div.hstripe { background: white; position: absolute; }
+	div.vstripe { top: 0; width: 2px; height: 500px; }
+	div.hstripe { left: 0; height: 3px; width: 400px; }
+
+	</style>
+</head>
+<body>
+
+<div class="color"></div>
+<div class="imagetl"></div>
+<div class="imagebr"></div>
+
+<div class="hstripe" style="top: 46px"></div>
+<div class="hstripe" style="top: 70px"></div>
+<div class="hstripe" style="top: 94px"></div>
+<div class="hstripe" style="top: 118px"></div>
+<div class="hstripe" style="top: 193px"></div>
+<div class="hstripe" style="top: 217px"></div>
+<div class="hstripe" style="top: 241px"></div>
+<div class="hstripe" style="top: 265px"></div>
+<div class="hstripe" style="top: 340px"></div>
+<div class="hstripe" style="top: 364px"></div>
+<div class="hstripe" style="top: 388px"></div>
+<div class="hstripe" style="top: 412px"></div>
+
+<div class="vstripe" style="left: 89px"></div>
+<div class="vstripe" style="left: 150px"></div>
+<div class="vstripe" style="left: 211px"></div>
+<div class="vstripe" style="left: 272px"></div>
+<div class="vstripe" style="left: 333px"></div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table-row.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 7px 3px;
+		padding: 3px 7px 8px 6px;
+		border-collapse: separate;
+		border-spacing: 2px 3px;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 1px 4px 3px;
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color tr.t { background-color: aqua; }
+
+	table.imagetl tr.t, table.imagebr tr.t {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl tr.t { background-position: top left; /* default */ }
+	table.imagebr tr.t { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/table-background/border-separate-table.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+	<title>Table background tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="Content-Style-Type" content="text/css">
+	<style type="text/css">
+
+	html, body { margin: 0; padding: 0; border: 0; font-size: 16px; }
+	body { padding: 15px; }
+
+	table { 
+		margin: 0 3px 2px 4px; /* zero top to work around collapsing bug */
+		border: transparent solid;
+		border-width: 4px 2px 7px 3px;
+		padding: 3px 7px 8px 6px;
+		border-collapse: separate;
+		border-spacing: 2px 3px;
+	}
+
+	td {
+		border: transparent solid;
+		border-width: 2px 1px 4px 3px;
+		padding: 1px 2px 4px 3px;
+		empty-cells: show;
+	}
+
+	div { height: 10px; width: 50px; }
+
+	table.color { background-color: aqua; }
+
+	table.imagetl, table.imagebr {
+		background-image: url(repeatable-diagonal-gradient-with-ticks.png);
+	}
+
+	table.imagetl { background-position: top left; /* default */ }
+	table.imagebr { background-position: bottom right; /* default */ }
+
+	</style>
+</head>
+<body>
+
+<table class="color">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagetl">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+<table class="imagebr">
+	<colgroup><col></colgroup>
+	<colgroup class="t">
+        <col>
+        <col class="t">
+        <col>
+	</colgroup>
+	<colgroup><col></colgroup>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody class="t">
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr class="t"><td><div></div></td><td><div></div></td><td class="t"><div></div></td><td><div></div></td><td><div></div></td></tr>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+	<tbody>
+        <tr><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td><td><div></div></td></tr>
+	</tbody>
+</table>
+
+</body>
+</html>
--- a/layout/reftests/table-background/reftest.list
+++ b/layout/reftests/table-background/reftest.list
@@ -1,24 +1,41 @@
-!= backgr_border-table-cell.html empty.html
-!= backgr_border-table-column-group.html empty.html
-!= backgr_border-table-column.html empty.html
-!= backgr_border-table-quirks.html empty.html
-!= backgr_border-table-row-group.html empty.html
-!= backgr_border-table-row.html empty.html
-!= backgr_border-table.html empty.html
-!= backgr_fixed-bg.html empty.html
-!= backgr_index.html empty.html
-!= backgr_layers-hide.html empty.html
-!= backgr_layers-opacity.html empty.html
-!= backgr_layers-show.html empty.html
-!= backgr_position-table-cell.html empty.html
-!= backgr_position-table-column-group.html empty.html
-!= backgr_position-table-column.html empty.html
-!= backgr_position-table-row-group.html empty.html
-!= backgr_position-table-row.html empty.html
-!= backgr_position-table.html empty.html
-!= backgr_simple-table-cell.html empty.html
-!= backgr_simple-table-column-group.html empty.html
-!= backgr_simple-table-column.html empty.html
-!= backgr_simple-table-row-group.html empty.html
-!= backgr_simple-table-row.html empty.html
-!= backgr_simple-table.html empty.html
+# these could be moved to crashtests
+!= backgr_border-table-cell.html empty.html
+!= backgr_border-table-column-group.html empty.html
+!= backgr_border-table-column.html empty.html
+!= backgr_border-table-quirks.html empty.html
+!= backgr_border-table-row-group.html empty.html
+!= backgr_border-table-row.html empty.html
+!= backgr_border-table.html empty.html
+!= backgr_fixed-bg.html empty.html
+!= backgr_index.html empty.html
+!= backgr_layers-hide.html empty.html
+!= backgr_layers-opacity.html empty.html
+!= backgr_layers-show.html empty.html
+!= backgr_position-table-cell.html empty.html
+!= backgr_position-table-column-group.html empty.html
+!= backgr_position-table-column.html empty.html
+!= backgr_position-table-row-group.html empty.html
+!= backgr_position-table-row.html empty.html
+!= backgr_position-table.html empty.html
+!= backgr_simple-table-cell.html empty.html
+!= backgr_simple-table-column-group.html empty.html
+!= backgr_simple-table-column.html empty.html
+!= backgr_simple-table-row-group.html empty.html
+!= backgr_simple-table-row.html empty.html
+!= backgr_simple-table.html empty.html
+
+# would also be good to test table-header-group and table-footer-group
+# (and rows and row groups in the presence of their reordering)
+# Also need to test different values of background-origin and background-clip.
+== border-separate-table-cell.html border-separate-table-cell-ref.html
+== border-separate-table-column-group.html border-separate-table-column-group-ref.html
+== border-separate-table-column.html border-separate-table-column-ref.html
+== border-separate-table-row-group.html border-separate-table-row-group-ref.html
+== border-separate-table-row.html border-separate-table-row-ref.html
+== border-separate-table.html border-separate-table-ref.html
+== border-collapse-table-cell.html border-collapse-table-cell-ref.html
+== border-collapse-table-column-group.html border-collapse-table-column-group-ref.html
+== border-collapse-table-column.html border-collapse-table-column-ref.html
+== border-collapse-table-row-group.html border-collapse-table-row-group-ref.html
+== border-collapse-table-row.html border-collapse-table-row-ref.html
+== border-collapse-table.html border-collapse-table-ref.html
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9ac1548c8a68bc2031d7c3a89a7a1c5f8bdde7ba
GIT binary patch
literal 14727
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