CSS 2.1 failure: table-height-algorithm-023 and -024 fail
authorrobert@webkit.org <robert@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 May 2012 19:07:57 +0000 (19:07 +0000)
committerrobert@webkit.org <robert@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 May 2012 19:07:57 +0000 (19:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=85405

Reviewed by Eric Seidel.

Source/WebCore:

Treat vertical-align: [length] the same as vertical-align: baseline.

Tests: css2.1/20110323/table-height-algorithm-023.htm
       css2.1/20110323/table-height-algorithm-024.htm
       fast/table/mozilla-bug10296-vertical-align-1.html
       fast/table/mozilla-bug10296-vertical-align-2.html

* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::calcRowLogicalHeight):
(WebCore::RenderTableSection::layoutRows):

LayoutTests:

* css2.1/20110323/table-height-algorithm-023.htm: Added.
* css2.1/20110323/table-height-algorithm-024.htm: Added.
    Tests from the CSS test suite.
* fast/table/mozilla-bug10296-vertical-align-1.html: Added.
* fast/table/mozilla-bug10296-vertical-align-2.html: Added.
    I split out the part of bug10296-1.html that gets rebaselined here so that the new results
    are visible. I also changed the text so that the expected result is less mysterious.

* platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.png: Added.
* platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.txt: Added.
* platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.png: Added.
* platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.txt: Added.
* platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.png: Added.
* platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.txt: Added.
* platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.png: Added.
* platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.txt: Added.
* platform/chromium-win/tables/mozilla/bugs/bug10296-1-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@117477 268f45cc-cd09-0410-ab3c-d52691b4dbfc

21 files changed:
LayoutTests/ChangeLog
LayoutTests/css2.1/20110323/table-height-algorithm-023.htm [new file with mode: 0644]
LayoutTests/css2.1/20110323/table-height-algorithm-024.htm [new file with mode: 0644]
LayoutTests/fast/table/mozilla-bug10296-vertical-align-1.html [new file with mode: 0644]
LayoutTests/fast/table/mozilla-bug10296-vertical-align-2.html [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.png [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.txt [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.png [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.txt [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.png [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.txt [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.png [new file with mode: 0644]
LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.txt [new file with mode: 0644]
LayoutTests/platform/chromium-win/tables/mozilla/bugs/bug10296-1-expected.txt
LayoutTests/platform/efl/test_expectations.txt
LayoutTests/platform/gtk/test_expectations.txt
LayoutTests/platform/mac/test_expectations.txt
LayoutTests/platform/qt/test_expectations.txt
LayoutTests/platform/win/Skipped
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderTableSection.cpp

index ad42fe6..7513e73 100644 (file)
@@ -1,3 +1,28 @@
+2012-05-02  Robert Hogan  <robert@webkit.org>
+
+        CSS 2.1 failure: table-height-algorithm-023 and -024 fail
+        https://bugs.webkit.org/show_bug.cgi?id=85405
+
+        Reviewed by Eric Seidel.
+
+        * css2.1/20110323/table-height-algorithm-023.htm: Added.
+        * css2.1/20110323/table-height-algorithm-024.htm: Added.
+            Tests from the CSS test suite.
+        * fast/table/mozilla-bug10296-vertical-align-1.html: Added.
+        * fast/table/mozilla-bug10296-vertical-align-2.html: Added.
+            I split out the part of bug10296-1.html that gets rebaselined here so that the new results
+            are visible. I also changed the text so that the expected result is less mysterious.
+
+        * platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.png: Added.
+        * platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.txt: Added.
+        * platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.png: Added.
+        * platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.txt: Added.
+        * platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.png: Added.
+        * platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.txt: Added.
+        * platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.png: Added.
+        * platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.txt: Added.
+        * platform/chromium-win/tables/mozilla/bugs/bug10296-1-expected.txt:
+
 2012-05-17  Raphael Kubo da Costa  <rakuco@webkit.org>
 
         [EFL] Gardening after r116339.
diff --git a/LayoutTests/css2.1/20110323/table-height-algorithm-023.htm b/LayoutTests/css2.1/20110323/table-height-algorithm-023.htm
new file mode 100644 (file)
index 0000000..9d77cb1
--- /dev/null
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+    <head>
+        <title>CSS Test: Cell with 'vertical-align: [length]' renders as 'vertical-align: baseline'</title>
+        <link rel="author" title="Microsoft" href="http://www.microsoft.com/">
+        <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#height-layout">
+        <meta name="flags" content="">
+        <meta name="assert" content="A cell with 'vertical-align: [length]' renders as if the value were 'baseline'.">
+        <style type="text/css">
+            table
+            {
+                height: 100px;
+            }
+            td
+            {
+                vertical-align: baseline;
+            }
+            #small
+            {
+                font-size: 10pt;
+            }
+            #medium
+            {
+                font-size: 20pt;
+            }
+            #large
+            {
+                font-size: 30pt;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if the bottom of the "Filler Text" below is aligned.</p>
+        <table>
+            <tr>
+                <td>
+                    <div id="small">Filler Text</div>
+                </td>
+                <td>
+                    <div id="medium">Filler Text</div>
+                </td>
+                <td>
+                    <div id="large">Filler Text</div>
+                </td>
+            </tr>
+        </table>
+    </body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css2.1/20110323/table-height-algorithm-024.htm b/LayoutTests/css2.1/20110323/table-height-algorithm-024.htm
new file mode 100644 (file)
index 0000000..a2fd921
--- /dev/null
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+    <head>
+        <title>CSS Test: Cell with 'vertical-align: [percentage]' renders as 'vertical-align: baseline'</title>
+        <link rel="author" title="Microsoft" href="http://www.microsoft.com/">
+        <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#height-layout">
+        <meta name="flags" content="">
+        <meta name="assert" content="A cell with 'vertical-align: [percentage]' renders as if the value were 'baseline'.">
+        <style type="text/css">
+            table
+            {
+                height: 100px;
+            }
+            td
+            {
+                vertical-align: 50%;
+            }
+            #small
+            {
+                font-size: 10pt;
+            }
+            #medium
+            {
+                font-size: 20pt;
+            }
+            #large
+            {
+                font-size: 30pt;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test passes if the bottom of the "Filler Text" below is aligned.</p>
+        <table>
+            <tr>
+                <td>
+                    <div id="small">Filler Text</div>
+                </td>
+                <td>
+                    <div id="medium">Filler Text</div>
+                </td>
+                <td>
+                    <div id="large">Filler Text</div>
+                </td>
+            </tr>
+        </table>
+    </body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/fast/table/mozilla-bug10296-vertical-align-1.html b/LayoutTests/fast/table/mozilla-bug10296-vertical-align-1.html
new file mode 100644 (file)
index 0000000..9c08140
--- /dev/null
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the
+ License.
+
+ The Original Code is mozilla.org Code.
+
+ The Initial Developer of the Original Code is
+ Netscape Communications Corporation.
+ Portions created by the Initial Developer are Copyright (C) 1998-1999
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either of the GNU General Public License Version 2 or later (the "GPL"),
+ or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+ ***** END LICENSE BLOCK ***** -->
+
+<html lang="en-US">
+<head>
+<title>Vertical alignment and table height</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="copyright" href="/~dbaron/legal.html">
+<style type="text/css">
+
+/* XXX Should really remove black */
+table td { border: thin solid black; }
+
+table.one { height: auto; }
+table.two { height: 30px; }
+table.three { height: 500px; }
+table.four, table.five { height: 50%; }
+div.five { height: 600px; border: medium solid purple; }
+
+tr.auto { height: auto; }
+tr.small { height: 2px; }
+tr.big { height: 200px; }
+
+table.baseline td { vertical-align: baseline; }
+table.middle td { vertical-align: middle; }
+table.top td { vertical-align: top; }
+table.bottom td { vertical-align: bottom; }
+
+span.big { font-size: 400%; }
+
+table.cellsmall td { height: 2px; }
+table.cellauto td { height: auto; }
+
+td.baselinea { vertical-align: baseline; }
+td.baselineb { vertical-align: text-bottom; }
+td.baselinec { vertical-align: text-top; }
+td.baselined { vertical-align: super; }
+td.baselinee { vertical-align: sub; }
+td.baselinef { vertical-align: -12px; } /* probably correct */
+td.baselineg { vertical-align: 40%; } /* probably correct */
+td.top { vertical-align: top; }
+td.middle { vertical-align: middle; }
+td.bottom { vertical-align: bottom; }
+
+td.big { font-size: 300%; }
+td.biggest { font-size: 600%; }
+
+</style>
+</head>
+<body>
+<h1>Vertical alignment and table height</h1>
+
+<p>In each of the following tables the cells with 'Data' should all have the same baseline:</p>
+
+<table>
+        <tr>
+                <td class="baselinea">Data</td>
+                <td class="baselineb big">Data</td>
+                <td class="baselinec biggest">Data</td>
+                <td class="top">Top</td>
+                <td class="middle">Middle</td>
+                <td class="bottom">Bottom</td>
+        </tr>
+</table>
+
+<table>
+        <tr>
+                <td class="top">Top</td>
+                <td class="middle">Middle</td>
+                <td class="bottom">Bottom</td>
+                <td class="baselined biggest">Data</td>
+                <td class="baselinee">Data</td>
+                <td class="baselinef big">Data</td>
+        </tr>
+</table>
+
+</body></html>
diff --git a/LayoutTests/fast/table/mozilla-bug10296-vertical-align-2.html b/LayoutTests/fast/table/mozilla-bug10296-vertical-align-2.html
new file mode 100644 (file)
index 0000000..735b7bf
--- /dev/null
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the
+ License.
+
+ The Original Code is mozilla.org Code.
+
+ The Initial Developer of the Original Code is
+ Netscape Communications Corporation.
+ Portions created by the Initial Developer are Copyright (C) 1998-1999
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either of the GNU General Public License Version 2 or later (the "GPL"),
+ or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+ ***** END LICENSE BLOCK ***** -->
+
+<html lang="en-US">
+<head>
+<title>Vertical alignment and table height</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="copyright" href="/~dbaron/legal.html">
+<style type="text/css">
+
+/* XXX Should really remove black */
+table td { border: thin solid black; }
+
+table.one { height: auto; }
+table.two { height: 30px; }
+table.three { height: 500px; }
+table.four, table.five { height: 50%; }
+div.five { height: 600px; border: medium solid purple; }
+
+tr.auto { height: auto; }
+tr.small { height: 2px; }
+tr.big { height: 200px; }
+
+table.baseline td { vertical-align: baseline; }
+table.middle td { vertical-align: middle; }
+table.top td { vertical-align: top; }
+table.bottom td { vertical-align: bottom; }
+
+span.big { font-size: 400%; }
+
+table.cellsmall td { height: 2px; }
+table.cellauto td { height: auto; }
+
+td.baselinea { vertical-align: baseline; }
+td.baselineb { vertical-align: text-bottom; }
+td.baselinec { vertical-align: text-top; }
+td.baselined { vertical-align: super; }
+td.baselinee { vertical-align: sub; }
+td.baselinef { vertical-align: -12px; } /* probably correct */
+td.baselineg { vertical-align: 40%; } /* probably correct */
+td.top { vertical-align: top; }
+td.middle { vertical-align: middle; }
+td.bottom { vertical-align: bottom; }
+
+td.big { font-size: 300%; }
+td.biggest { font-size: 600%; }
+
+</style>
+</head>
+<body>
+<h1>Vertical alignment and table height</h1>
+
+<p>In each of the following tables the cells with 'Data' should all have the same baseline:</p>
+
+<table>
+        <tr>
+                <td class="baselineg biggest">Data</td>
+                <td class="top">Top</td>
+                <td class="middle">Middle</td>
+                <td class="baselinea">Data</td>
+                <td class="bottom">Bottom</td>
+                <td class="baselineb big">Data</td>
+        </tr>
+</table>
+
+<table>
+        <tr>
+                <td class="top">Top</td>
+                <td class="baselinec">Data</td>
+                <td class="baselinee big">Data</td>
+                <td class="middle">Middle</td>
+                <td class="bottom">Bottom</td>
+                <td class="baselined biggest">Data</td>
+        </tr>
+</table>
+
+<table>
+        <tr>
+                <td class="top">Top</td>
+                <td class="baselineg big">Data</td>
+                <td class="bottom">Bottom</td>
+                <td class="baselinef">Data</td>
+                <td class="baselinea biggest">Data</td>
+                <td class="middle">Middle</td>
+        </tr>
+</table>
+
+</body></html>
diff --git a/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.png b/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.png
new file mode 100644 (file)
index 0000000..a9c63e0
Binary files /dev/null and b/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.png differ
diff --git a/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.txt b/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-023-expected.txt
new file mode 100644 (file)
index 0000000..a363e6a
--- /dev/null
@@ -0,0 +1,23 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x160
+  RenderBlock {HTML} at (0,0) size 800x160
+    RenderBody {BODY} at (8,16) size 784x136
+      RenderBlock {P} at (0,0) size 784x20
+        RenderText {#text} at (0,0) size 367x19
+          text run at (0,0) width 367: "Test passes if the bottom of the \"Filler Text\" below is aligned."
+      RenderTable {TABLE} at (0,36) size 346x100
+        RenderTableSection {TBODY} at (0,0) size 346x100
+          RenderTableRow {TR} at (0,2) size 346x96
+            RenderTableCell {TD} at (2,27) size 54x18 [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 52x16
+                RenderText {#text} at (0,0) size 52x15
+                  text run at (0,0) width 52: "Filler Text"
+            RenderTableCell {TD} at (58,15) size 117x34 [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 115x32
+                RenderText {#text} at (0,0) size 115x31
+                  text run at (0,0) width 115: "Filler Text"
+            RenderTableCell {TD} at (177,2) size 167x50 [r=0 c=2 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 165x48
+                RenderText {#text} at (0,1) size 165x46
+                  text run at (0,1) width 165: "Filler Text"
diff --git a/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.png b/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.png
new file mode 100644 (file)
index 0000000..a9c63e0
Binary files /dev/null and b/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.png differ
diff --git a/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.txt b/LayoutTests/platform/chromium-linux-x86/css2.1/20110323/table-height-algorithm-024-expected.txt
new file mode 100644 (file)
index 0000000..a363e6a
--- /dev/null
@@ -0,0 +1,23 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x160
+  RenderBlock {HTML} at (0,0) size 800x160
+    RenderBody {BODY} at (8,16) size 784x136
+      RenderBlock {P} at (0,0) size 784x20
+        RenderText {#text} at (0,0) size 367x19
+          text run at (0,0) width 367: "Test passes if the bottom of the \"Filler Text\" below is aligned."
+      RenderTable {TABLE} at (0,36) size 346x100
+        RenderTableSection {TBODY} at (0,0) size 346x100
+          RenderTableRow {TR} at (0,2) size 346x96
+            RenderTableCell {TD} at (2,27) size 54x18 [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 52x16
+                RenderText {#text} at (0,0) size 52x15
+                  text run at (0,0) width 52: "Filler Text"
+            RenderTableCell {TD} at (58,15) size 117x34 [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 115x32
+                RenderText {#text} at (0,0) size 115x31
+                  text run at (0,0) width 115: "Filler Text"
+            RenderTableCell {TD} at (177,2) size 167x50 [r=0 c=2 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 165x48
+                RenderText {#text} at (0,1) size 165x46
+                  text run at (0,1) width 165: "Filler Text"
diff --git a/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.png b/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.png
new file mode 100644 (file)
index 0000000..45fb2de
Binary files /dev/null and b/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.png differ
diff --git a/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.txt b/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-1-expected.txt
new file mode 100644 (file)
index 0000000..161d08c
--- /dev/null
@@ -0,0 +1,53 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x365
+  RenderBlock {HTML} at (0,0) size 800x365
+    RenderBody {BODY} at (8,21) size 784x336
+      RenderBlock {H1} at (0,0) size 784x37
+        RenderText {#text} at (0,0) size 486x36
+          text run at (0,0) width 486: "Vertical alignment and table height"
+      RenderBlock {P} at (0,58) size 784x20
+        RenderText {#text} at (0,0) size 503x19
+          text run at (0,0) width 503: "In each of the following tables the cells with 'Data' should all have the same baseline:"
+      RenderTable {TABLE} at (0,94) size 452x121
+        RenderTableSection {TBODY} at (0,0) size 452x121
+          RenderTableRow {TR} at (0,2) size 452x117
+            RenderTableCell {TD} at (2,75) size 33x24 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 29x19
+                text run at (2,2) width 29: "Data"
+            RenderTableCell {TD} at (37,46) size 94x61 [border: (1px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,3) size 90x55
+                text run at (2,3) width 90: "Data"
+            RenderTableCell {TD} at (133,2) size 186x117 [border: (1px solid #000000)] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,4) size 182x109
+                text run at (2,4) width 182: "Data"
+            RenderTableCell {TD} at (321,2) size 29x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 25x19
+                text run at (2,2) width 25: "Top"
+            RenderTableCell {TD} at (352,48) size 47x24 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 43x19
+                text run at (2,2) width 43: "Middle"
+            RenderTableCell {TD} at (401,95) size 49x24 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 45x19
+                text run at (2,2) width 45: "Bottom"
+      RenderTable {TABLE} at (0,215) size 452x121
+        RenderTableSection {TBODY} at (0,0) size 452x121
+          RenderTableRow {TR} at (0,2) size 452x117
+            RenderTableCell {TD} at (2,2) size 29x24 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 25x19
+                text run at (2,2) width 25: "Top"
+            RenderTableCell {TD} at (33,48) size 47x24 [border: (1px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 43x19
+                text run at (2,2) width 43: "Middle"
+            RenderTableCell {TD} at (82,95) size 49x24 [border: (1px solid #000000)] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 45x19
+                text run at (2,2) width 45: "Bottom"
+            RenderTableCell {TD} at (133,2) size 186x117 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,4) size 182x109
+                text run at (2,4) width 182: "Data"
+            RenderTableCell {TD} at (321,75) size 33x24 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 29x19
+                text run at (2,2) width 29: "Data"
+            RenderTableCell {TD} at (356,46) size 94x61 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
+              RenderText {#text} at (2,3) size 90x55
+                text run at (2,3) width 90: "Data"
diff --git a/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.png b/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.png
new file mode 100644 (file)
index 0000000..32d5cde
Binary files /dev/null and b/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.png differ
diff --git a/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.txt b/LayoutTests/platform/chromium-linux-x86/fast/table/mozilla-bug10296-vertical-align-2-expected.txt
new file mode 100644 (file)
index 0000000..4483b8a
--- /dev/null
@@ -0,0 +1,74 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x486
+  RenderBlock {HTML} at (0,0) size 800x486
+    RenderBody {BODY} at (8,21) size 784x457
+      RenderBlock {H1} at (0,0) size 784x37
+        RenderText {#text} at (0,0) size 486x36
+          text run at (0,0) width 486: "Vertical alignment and table height"
+      RenderBlock {P} at (0,58) size 784x20
+        RenderText {#text} at (0,0) size 503x19
+          text run at (0,0) width 503: "In each of the following tables the cells with 'Data' should all have the same baseline:"
+      RenderTable {TABLE} at (0,94) size 452x121
+        RenderTableSection {TBODY} at (0,0) size 452x121
+          RenderTableRow {TR} at (0,2) size 452x117
+            RenderTableCell {TD} at (2,2) size 186x117 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,4) size 182x109
+                text run at (2,4) width 182: "Data"
+            RenderTableCell {TD} at (190,2) size 29x24 [border: (1px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 25x19
+                text run at (2,2) width 25: "Top"
+            RenderTableCell {TD} at (221,48) size 47x24 [border: (1px solid #000000)] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 43x19
+                text run at (2,2) width 43: "Middle"
+            RenderTableCell {TD} at (270,75) size 33x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 29x19
+                text run at (2,2) width 29: "Data"
+            RenderTableCell {TD} at (305,95) size 49x24 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 45x19
+                text run at (2,2) width 45: "Bottom"
+            RenderTableCell {TD} at (356,46) size 94x61 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
+              RenderText {#text} at (2,3) size 90x55
+                text run at (2,3) width 90: "Data"
+      RenderTable {TABLE} at (0,215) size 452x121
+        RenderTableSection {TBODY} at (0,0) size 452x121
+          RenderTableRow {TR} at (0,2) size 452x117
+            RenderTableCell {TD} at (2,2) size 29x24 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 25x19
+                text run at (2,2) width 25: "Top"
+            RenderTableCell {TD} at (33,75) size 33x24 [border: (1px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 29x19
+                text run at (2,2) width 29: "Data"
+            RenderTableCell {TD} at (68,46) size 94x61 [border: (1px solid #000000)] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,3) size 90x55
+                text run at (2,3) width 90: "Data"
+            RenderTableCell {TD} at (164,48) size 47x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 43x19
+                text run at (2,2) width 43: "Middle"
+            RenderTableCell {TD} at (213,95) size 49x24 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 45x19
+                text run at (2,2) width 45: "Bottom"
+            RenderTableCell {TD} at (264,2) size 186x117 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
+              RenderText {#text} at (2,4) size 182x109
+                text run at (2,4) width 182: "Data"
+      RenderTable {TABLE} at (0,336) size 452x121
+        RenderTableSection {TBODY} at (0,0) size 452x121
+          RenderTableRow {TR} at (0,2) size 452x117
+            RenderTableCell {TD} at (2,2) size 29x24 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 25x19
+                text run at (2,2) width 25: "Top"
+            RenderTableCell {TD} at (33,46) size 94x61 [border: (1px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,3) size 90x55
+                text run at (2,3) width 90: "Data"
+            RenderTableCell {TD} at (129,95) size 49x24 [border: (1px solid #000000)] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 45x19
+                text run at (2,2) width 45: "Bottom"
+            RenderTableCell {TD} at (180,75) size 33x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 29x19
+                text run at (2,2) width 29: "Data"
+            RenderTableCell {TD} at (215,2) size 186x117 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
+              RenderText {#text} at (2,4) size 182x109
+                text run at (2,4) width 182: "Data"
+            RenderTableCell {TD} at (403,48) size 47x24 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 43x19
+                text run at (2,2) width 43: "Middle"
index 5d0b69d..4ac9123 100644 (file)
@@ -946,7 +946,7 @@ layer at (0,0) size 785x6121
             RenderTableCell {TD} at (321,75) size 33x24 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
               RenderText {#text} at (2,2) size 29x19
                 text run at (2,2) width 29: "Data"
-            RenderTableCell {TD} at (356,2) size 94x61 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
+            RenderTableCell {TD} at (356,46) size 94x61 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
               RenderText {#text} at (2,3) size 90x55
                 text run at (2,3) width 90: "Data"
       RenderTable {TABLE} at (0,5587) size 452x121
@@ -961,13 +961,13 @@ layer at (0,0) size 785x6121
             RenderTableCell {TD} at (221,48) size 47x24 [border: (1px solid #000000)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 43x19
                 text run at (2,2) width 43: "Middle"
-            RenderTableCell {TD} at (270,31) size 33x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
+            RenderTableCell {TD} at (270,75) size 33x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
               RenderText {#text} at (2,2) size 29x19
                 text run at (2,2) width 29: "Data"
             RenderTableCell {TD} at (305,95) size 49x24 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
               RenderText {#text} at (2,2) size 45x19
                 text run at (2,2) width 45: "Bottom"
-            RenderTableCell {TD} at (356,2) size 94x61 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
+            RenderTableCell {TD} at (356,46) size 94x61 [border: (1px solid #000000)] [r=0 c=5 rs=1 cs=1]
               RenderText {#text} at (2,3) size 90x55
                 text run at (2,3) width 90: "Data"
       RenderTable {TABLE} at (0,5708) size 452x121
@@ -997,13 +997,13 @@ layer at (0,0) size 785x6121
             RenderTableCell {TD} at (2,2) size 29x24 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 25x19
                 text run at (2,2) width 25: "Top"
-            RenderTableCell {TD} at (33,2) size 94x61 [border: (1px solid #000000)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (33,46) size 94x61 [border: (1px solid #000000)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (2,3) size 90x55
                 text run at (2,3) width 90: "Data"
             RenderTableCell {TD} at (129,95) size 49x24 [border: (1px solid #000000)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 45x19
                 text run at (2,2) width 45: "Bottom"
-            RenderTableCell {TD} at (180,2) size 33x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
+            RenderTableCell {TD} at (180,75) size 33x24 [border: (1px solid #000000)] [r=0 c=3 rs=1 cs=1]
               RenderText {#text} at (2,2) size 29x19
                 text run at (2,2) width 29: "Data"
             RenderTableCell {TD} at (215,2) size 186x117 [border: (1px solid #000000)] [r=0 c=4 rs=1 cs=1]
index c359f16..9652762 100644 (file)
@@ -461,3 +461,6 @@ BUGWK84167 : tables/mozilla/bugs/bug2479-2.html = IMAGE+TEXT
 // Needs rebaseline after bug 86441
 BUGWK86441 : fast/borders/border-antialiasing.html = IMAGE
 BUGWK86441 : fast/multicol/shadow-breaking.html = IMAGE
+
+// Requires rebaseline after https://bugs.webkit.org/show_bug.cgi?id=85405
+BUGWK85405 : tables/mozilla/bugs/bug10296-1.html = TEXT
index c821c4a..9040add 100644 (file)
@@ -1333,6 +1333,9 @@ BUGWK86284 : svg/text/modify-tspan-position-bug.html = IMAGE
 BUGWK86441 : fast/borders/border-antialiasing.html = IMAGE
 BUGWK86441 : fast/multicol/shadow-breaking.html = IMAGE
 
+// Requires rebaseline after https://bugs.webkit.org/show_bug.cgi?id=85405
+BUGWK85405 : tables/mozilla/bugs/bug10296-1.html = TEXT
+
 //////////////////////////////////////////////////////////////////////////////////////////
 // End of Tests failing
 //////////////////////////////////////////////////////////////////////////////////////////
index b6f9ab6..db1cb32 100644 (file)
@@ -230,3 +230,6 @@ BUGWK84167 : tables/mozilla/bugs/bug2479-2.html = IMAGE+TEXT
 
 // Needs rebaseline after bug 86441
 BUGWK86441 : fast/multicol/shadow-breaking.html = IMAGE
+
+// Requires rebaseline after https://bugs.webkit.org/show_bug.cgi?id=85405
+BUGWK85405 : tables/mozilla/bugs/bug10296-1.html = TEXT
index c8529e4..d61f188 100644 (file)
@@ -72,3 +72,6 @@ BUGWK85580 SKIP : fast/css/variables = PASS FAIL
 // Needs rebaseline after bug 86441
 BUGWK86441 : fast/borders/border-antialiasing.html = IMAGE
 BUGWK86441 : fast/multicol/shadow-breaking.html = IMAGE
+
+// Requires rebaseline after https://bugs.webkit.org/show_bug.cgi?id=85405
+BUGWK85405 : tables/mozilla/bugs/bug10296-1.html = TEXT
index cc1c98e..01c043a 100644 (file)
@@ -1750,7 +1750,7 @@ http/tests/security/referrer-policy-redirect-link.html
 inspector/extensions/extensions-eval-content-script.html 
 inspector/extensions/extensions-audits-content-script.html
 
-// Rebaseline required after https://bugs.webkit.org/show_bug.cgi?id=84167
+# Rebaseline required after https://bugs.webkit.org/show_bug.cgi?id=84167
 editing/pasteboard/innerText-inline-table.html
 editing/selection/iframe.html
 editing/selection/inline-table.html
@@ -1759,3 +1759,6 @@ fast/css-generated-content/inline-display-types.html
 fast/css-generated-content/nested-tables-with-before-after-content-crash.html
 fast/inline-block/001.html
 tables/mozilla/bugs/bug2479-2.html
+
+# Requires rebaseline after https://bugs.webkit.org/show_bug.cgi?id=85405
+tables/mozilla/bugs/bug10296-1.html
index d4b8c58..15bab21 100644 (file)
@@ -1,3 +1,21 @@
+2012-05-02  Robert Hogan  <robert@webkit.org>
+
+        CSS 2.1 failure: table-height-algorithm-023 and -024 fail
+        https://bugs.webkit.org/show_bug.cgi?id=85405
+
+        Reviewed by Eric Seidel.
+
+        Treat vertical-align: [length] the same as vertical-align: baseline.
+
+        Tests: css2.1/20110323/table-height-algorithm-023.htm
+               css2.1/20110323/table-height-algorithm-024.htm
+               fast/table/mozilla-bug10296-vertical-align-1.html
+               fast/table/mozilla-bug10296-vertical-align-2.html
+
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::calcRowLogicalHeight):
+        (WebCore::RenderTableSection::layoutRows):
+
 2012-05-17  Emil A Eklund  <eae@chromium.org>
 
         Fix rounding in RenderFlowThread::paintIntoRegion
index 5573de1..8d8b355 100644 (file)
@@ -370,7 +370,7 @@ int RenderTableSection::calcRowLogicalHeight()
 
             // find out the baseline
             EVerticalAlign va = cell->style()->verticalAlign();
-            if (va == BASELINE || va == TEXT_BOTTOM || va == TEXT_TOP || va == SUPER || va == SUB) {
+            if (va == BASELINE || va == TEXT_BOTTOM || va == TEXT_TOP || va == SUPER || va == SUB || va == LENGTH) {
                 LayoutUnit baselinePosition = cell->cellBaselinePosition();
                 if (baselinePosition > cell->borderBefore() + cell->paddingBefore()) {
                     m_grid[r].baseline = max(m_grid[r].baseline, baselinePosition - cell->intrinsicPaddingBefore());
@@ -609,7 +609,7 @@ void RenderTableSection::layoutRows()
 
                 // If the baseline moved, we may have to update the data for our row. Find out the new baseline.
                 EVerticalAlign va = cell->style()->verticalAlign();
-                if (va == BASELINE || va == TEXT_BOTTOM || va == TEXT_TOP || va == SUPER || va == SUB) {
+                if (va == BASELINE || va == TEXT_BOTTOM || va == TEXT_TOP || va == SUPER || va == SUB || va == LENGTH) {
                     LayoutUnit baseline = cell->cellBaselinePosition();
                     if (baseline > cell->borderBefore() + cell->paddingBefore())
                         m_grid[r].baseline = max(m_grid[r].baseline, baseline);
@@ -626,6 +626,7 @@ void RenderTableSection::layoutRows()
                 case SUPER:
                 case TEXT_TOP:
                 case TEXT_BOTTOM:
+                case LENGTH:
                 case BASELINE: {
                     LayoutUnit b = cell->cellBaselinePosition();
                     if (b > cell->borderBefore() + cell->paddingBefore())