Cell heights are disproportional when a row-spanning cell contains a block element...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 13 May 2013 18:16:51 +0000 (18:16 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 13 May 2013 18:16:51 +0000 (18:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=52185

Patch by Suchit Agrawal <a.suchit@samsung.com> on 2013-05-13
Reviewed by David Hyatt.

Source/WebCore:

Cells heights are not proper when rowspan cell have its own height and rowspan height
is more than the height of the rows present in rowspan.

After calculating logical height of the rows in the table, we are recalculating the height
of the rows present in rowspan. Based on the ratio of row's logical height, we are
distributing rowspan cell height in rows.

Test: fast/table/table-rowspan-height-distribution-in-rows.html

* rendering/RenderTableSection.cpp:
(WebCore):

Update the logical height of the rows based on rowspan cell height.
(WebCore::RenderTableSection::distributeRowSpanHeightToRows):

It calculates logical height of the rows in the table.
(WebCore::RenderTableSection::calcRowLogicalHeight):

Added new private API to distribute rowSpan cell height in rows.
* rendering/RenderTableSection.h:
(RenderTableSection):

LayoutTests:

Test case updated.
* fast/css/vertical-align-baseline-rowspan-007.htm:

Reference Test cases updated.
* fast/css/vertical-align-baseline-rowspan-007-expected.html:
* fast/css/vertical-align-baseline-rowspan-008-expected.html:

Added test cases based on changes in the code and different scenarios for rowspan height
distribution in rows.
* fast/table/table-rowspan-height-distribution-in-rows.html: Added.
* platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.png: Added.
* platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.txt: Added.

Test cases need to rebaseline in qt, efl, gtk and mac platforms.
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:
* platform/qt/TestExpectations:

Test case results are updated in qt platform.
* platform/qt/tables/mozilla/bugs/bug17548-expected.png:
* platform/qt/tables/mozilla/bugs/bug17548-expected.txt:
* platform/qt/tables/mozilla/bugs/bug220536-expected.png:
* platform/qt/tables/mozilla/bugs/bug220536-expected.txt:
* platform/qt/tables/mozilla/bugs/bug7714-expected.png:
* platform/qt/tables/mozilla/bugs/bug7714-expected.txt:
* platform/qt/tables/mozilla/core/bloomberg-expected.png:
* platform/qt/tables/mozilla/core/bloomberg-expected.txt:
* platform/qt/tables/mozilla/other/test6-expected.png:
* platform/qt/tables/mozilla/other/test6-expected.txt:
* platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.png:
* platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.txt:
* platform/qt/tables/mozilla_expected_failures/bugs/bug23847-expected.png:
* platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png:
* platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
* platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.png:
* platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.txt:
* tables/mozilla/core/bloomberg-expected.txt:
* tables/mozilla_expected_failures/bugs/bug23847-expected.txt:

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

33 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/vertical-align-baseline-rowspan-007-expected.html
LayoutTests/fast/css/vertical-align-baseline-rowspan-007.htm
LayoutTests/fast/css/vertical-align-baseline-rowspan-008-expected.html
LayoutTests/fast/table/table-rowspan-height-distribution-in-rows.html [new file with mode: 0644]
LayoutTests/platform/efl/TestExpectations
LayoutTests/platform/gtk/TestExpectations
LayoutTests/platform/mac/TestExpectations
LayoutTests/platform/qt/TestExpectations
LayoutTests/platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.png [new file with mode: 0644]
LayoutTests/platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.txt [new file with mode: 0644]
LayoutTests/platform/qt/tables/mozilla/bugs/bug17548-expected.png
LayoutTests/platform/qt/tables/mozilla/bugs/bug17548-expected.txt
LayoutTests/platform/qt/tables/mozilla/bugs/bug220536-expected.png
LayoutTests/platform/qt/tables/mozilla/bugs/bug220536-expected.txt
LayoutTests/platform/qt/tables/mozilla/bugs/bug7714-expected.png
LayoutTests/platform/qt/tables/mozilla/bugs/bug7714-expected.txt
LayoutTests/platform/qt/tables/mozilla/core/bloomberg-expected.png
LayoutTests/platform/qt/tables/mozilla/core/bloomberg-expected.txt
LayoutTests/platform/qt/tables/mozilla/other/test6-expected.png
LayoutTests/platform/qt/tables/mozilla/other/test6-expected.txt
LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.png
LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.txt
LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug23847-expected.png
LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.png
LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.txt
LayoutTests/tables/mozilla/core/bloomberg-expected.txt
LayoutTests/tables/mozilla_expected_failures/bugs/bug23847-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderTableSection.cpp
Source/WebCore/rendering/RenderTableSection.h

index dde3a16..4f586ab 100644 (file)
@@ -1,3 +1,50 @@
+2013-05-13  Suchit Agrawal  <a.suchit@samsung.com>
+
+        Cell heights are disproportional when a row-spanning cell contains a block element that determines the height of the rows
+        https://bugs.webkit.org/show_bug.cgi?id=52185
+
+        Reviewed by David Hyatt.
+
+        Test case updated.
+        * fast/css/vertical-align-baseline-rowspan-007.htm:
+
+        Reference Test cases updated.
+        * fast/css/vertical-align-baseline-rowspan-007-expected.html:
+        * fast/css/vertical-align-baseline-rowspan-008-expected.html:
+
+        Added test cases based on changes in the code and different scenarios for rowspan height 
+        distribution in rows.
+        * fast/table/table-rowspan-height-distribution-in-rows.html: Added.
+        * platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.png: Added.
+        * platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.txt: Added.
+
+        Test cases need to rebaseline in qt, efl, gtk and mac platforms.
+        * platform/efl/TestExpectations:
+        * platform/gtk/TestExpectations:
+        * platform/mac/TestExpectations:
+        * platform/qt/TestExpectations:
+
+        Test case results are updated in qt platform.
+        * platform/qt/tables/mozilla/bugs/bug17548-expected.png:
+        * platform/qt/tables/mozilla/bugs/bug17548-expected.txt:
+        * platform/qt/tables/mozilla/bugs/bug220536-expected.png:
+        * platform/qt/tables/mozilla/bugs/bug220536-expected.txt:
+        * platform/qt/tables/mozilla/bugs/bug7714-expected.png:
+        * platform/qt/tables/mozilla/bugs/bug7714-expected.txt:
+        * platform/qt/tables/mozilla/core/bloomberg-expected.png:
+        * platform/qt/tables/mozilla/core/bloomberg-expected.txt:
+        * platform/qt/tables/mozilla/other/test6-expected.png:
+        * platform/qt/tables/mozilla/other/test6-expected.txt:
+        * platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.png:
+        * platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.txt:
+        * platform/qt/tables/mozilla_expected_failures/bugs/bug23847-expected.png:
+        * platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png:
+        * platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
+        * platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.png:
+        * platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.txt:
+        * tables/mozilla/core/bloomberg-expected.txt:
+        * tables/mozilla_expected_failures/bugs/bug23847-expected.txt:
+
 2013-04-30  Balazs Kelemen  <b.kelemen@sisa.samsung.com>
 
         [GStreamer] cannot seek after video finished
index 09442b2..93d8fd6 100644 (file)
@@ -7,7 +7,16 @@
         <style type="text/css">
             td
             {
-                height:10px;
+                height:100px;
+            }
+            #first
+            {
+                padding-top: 8px;
+                vertical-align: top;
+            }
+            #second
+            {
+                /*padding-top: 0px;*/
                 vertical-align: baseline;
             }
             #small
         </style>
     </head>
     <body>
-        <p>Test passes if the bottom of the black boxes is aligned.</p>
+        <p>Test passes if the bottom of first and last black boxes is aligned.</p>
         <table>
             <tr>
-                <td>
+                <td id="first">
                     <div id="small">Text</div>
                 </td>
-                <td>
+                <td id="second">
                     <div id="small">Text</div>
                 </td>
-                <td>
+                <td id="first">
                     <div id="small">Text</div>
                 </td>
             </tr>
         </table>
     </body>
-</html>
\ No newline at end of file
+</html>
index 766fece..facc63f 100644 (file)
@@ -28,7 +28,7 @@
 <!--    The row-spanning cell is the only one with a baseline. It should be baseline-aligned on the first row that it spans
         and as it is the same height as the other cells in the row, it sets the baseline for the row. This is unaffected by
         the total height of the rowspan (80px) -->
-        <p>Test passes if the bottom of the black boxes is aligned.</p>
+        <p>Test passes if the bottom of first and last black boxes is aligned.</p>
         <table>
             <tr>
                 <td>
@@ -51,4 +51,4 @@
             </tr>
         </table>
     </body>
-</html>
\ No newline at end of file
+</html>
index 9b34054..d46dedd 100644 (file)
@@ -12,6 +12,7 @@
             #second
             {
                 vertical-align: middle;
+                height: 70px;
             }
             #small
             {
@@ -41,4 +42,4 @@
             </tr>
         </table>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/LayoutTests/fast/table/table-rowspan-height-distribution-in-rows.html b/LayoutTests/fast/table/table-rowspan-height-distribution-in-rows.html
new file mode 100644 (file)
index 0000000..fa4813f
--- /dev/null
@@ -0,0 +1,172 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+    <title>Table rowspan</title>
+</head>
+<body>
+<h3>Test for bugzilla bug : <a href="https://bugs.webkit.org/show_bug.cgi?id=52185">52185</a>. Height is not property distributed in rows when rowspan cell have more height then rows in the rowspan.</h3>
+<h4>Rows in rowspan should get proportional height.</h4>
+<h5>Test 1 - Rowindex same but rowspan diffrent.</h5>
+<table border="1" width="607">
+  <tbody>
+    <tr>
+         <td rowspan="5">row0 col0 - rowspan=5</td>
+         <td rowspan="3">row0 col1 - rowspan=3</td>
+      <td rowspan="4">row0 col2 - rowspan=4</td>
+       </tr>
+    <tr>
+      <td>row1 col0</td>
+    </tr>
+    <tr>
+      <td>row2 col0</td>
+    </tr>
+    <tr>
+      <td>row3 col0</td>
+    </tr>
+    <tr>
+      <td>row4 col0</td>
+    </tr>
+  </tbody>
+</table>
+<h5>Test 2 - RowsIndex and rowspan are same but height is diffrent for rowspan cells.</h5>
+<table border="1" width="607">
+  <tbody>
+    <tr>
+         <td rowspan="5" style="height:300px">row0 col0 - rowspan=5</td>
+         <td rowspan="5" style="height:200px">row0 col1 - rowspan=5</td>
+      <td rowspan="5" style="height:100px">row0 col2 - rowspan=5</td>
+       </tr>
+    <tr>
+      <td>row1 col0</td>
+    </tr>
+    <tr>
+      <td>row2 col0</td>
+    </tr>
+    <tr>
+      <td>row3 col0</td>
+    </tr>
+    <tr>
+      <td>row4 col0</td>
+    </tr>
+  </tbody>
+</table>
+<h5>Test 3 - One rowspan cell under other rowspan cell boundries</h5>
+<table border="1" width="607">
+  <tbody>
+    <tr>
+         <td rowspan="7" style="height:300px">row0 col0 - rowspan=7</td>
+         <td>row0 col1</td>
+      <td>row0 col2</td>
+       </tr>
+    <tr>
+      <td rowspan="4" style="height:500px">row1 col0 - rowspan=4</td>
+    </tr>
+    <tr>
+      <td>row2 col0</td>
+      <td rowspan="3" style="height:200px">row2 col1 - rowspan=3</td>
+    </tr>
+    <tr>
+      <td>row3 col0</td>
+    </tr>
+    <tr>
+      <td>row4 col0</td>
+    </tr>
+    <tr>
+      <td>row5 col0</td>
+    </tr>
+  </tbody>
+</table>
+<h5>Test 4 - one rowspan cell starts under the boundies of previous rowspan cell but end after previous rowspan cell end boundry.</h5>
+<table border="1" width="607">
+  <tbody>
+    <tr>
+         <td rowspan="5" style="height:300px">row0 col0 - rowspan=5</td>
+         <td>row0 col1</td>
+      <td>row0 col2</td>
+       </tr>
+    <tr>
+      <td>row1 col0</td>
+    </tr>
+    <tr>
+      <td rowspan="4">row2 col0 - rowspan=4</td>
+      <td>row2 col1</td>
+    </tr>
+    <tr>
+      <td>row3 col0</td>
+    </tr>
+    <tr>
+      <td>row4 col0</td>
+    </tr>
+    <tr>
+      <td>row5 col0</td>
+    </tr>
+    <tr>
+      <td>row6 col0</td>
+    </tr>
+  </tbody>
+</table>
+<h5>Test 5 - Consecutive 2 rowspan cells.</h5>
+<table border="1" width="607">
+  <tbody>
+    <tr>
+         <td>row0 col0</td>
+    </tr>
+    <tr>
+      <td rowspan="3" width="260" style="height:200px">
+        <div style="height:100px; width:350px">row1 col0 - rowspan=3</div>
+      </td>
+    </tr>
+    <tr>
+      <td>row2 col0</td>
+    </tr>
+    <tr>
+      <td>row3 col0</td>
+    </tr>
+    <tr>
+      <td>row4 col0</td>
+    </tr>
+    <tr>
+      <td rowspan="3" width="260" style="height:100px">row5 col0 - rowspan=3</td>
+    </tr>
+    <tr>
+      <td>row6 col0</td>
+    </tr>
+    <tr>
+      <td>row7 col0</td>
+    </tr>
+    <tr>
+      <td>row8 col0</td>
+    </tr>
+  </tbody>
+</table>
+<h5>Test 6 - Only one rowspan cells present in the table.</h5>
+<table border="1" width="607">
+  <tbody>
+    <tr>
+      <td rowspan="4" style="height:200px">row0 col0 - rowspan=4</td>
+    </tr>
+  </tbody>
+</table>
+<h5>Test 7 - one or more table rows have only rowspan cells</h5>
+<table border="1" width="607">
+  <tbody>
+    <tr>
+      <td rowspan="3" style="height:300px">row0 col0 - rowspan=4</td>
+         <td>row0 col1</td>
+    </tr>
+    <tr>
+      <td rowspan="3" style="height:300px">row1 col0</td>
+    </tr>
+    <tr>
+      <td rowspan="3" style="height:300px">row2 col0</td>
+    </tr>
+    <tr>
+      <td>row3 col0</td>
+    </tr>
+    <tr>
+      <td>row4 col0</td>
+    </tr>
+  </tbody>
+</table>
+</body>
+</html>
index b93d999..84fdcf9 100644 (file)
@@ -1880,3 +1880,31 @@ webkit.org/b/115419 media/track/track-text-track-cue-list.html [ Crash Failure ]
 
 webkit.org/b/115439 fast/text/complex-initial-advance.html [ ImageOnlyFailure ]
 webkit.org/b/115440 svg/stroke/animated-non-scaling-stroke.html [ ImageOnlyFailure ]
+
+# Needs rebaseline after bug https://bugs.webkit.org/show_bug.cgi?id=52185
+webkit.org/b/52185 fast/table/007.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth-vertical.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/spanOverlapRepaint.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug13169.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-1.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-2.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug17138.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug17548.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug220536.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug6304.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug73321.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug7714.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug86708.html [ ImageOnlyFailure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug8858.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/core/bloomberg.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/core/cell_heights.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/other/test6.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug1010.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug131020-3.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug23847.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug65372.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug6933.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-cells.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-attributes.html [ Failure Rebaseline ]
index d33d6ae..fe20b09 100644 (file)
@@ -1385,6 +1385,34 @@ webkit.org/b/115632 fast/exclusions/shape-outside-floats/shape-outside-floats-el
 
 webkit.org/b/115633 accessibility/meter-element.html [ Failure ]
 
+# Needs rebaseline after bug https://bugs.webkit.org/show_bug.cgi?id=52185
+webkit.org/b/52185 fast/table/007.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth-vertical.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/spanOverlapRepaint.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug13169.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-1.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-2.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug17138.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug17548.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug220536.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug6304.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug73321.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug7714.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug86708.html [ ImageOnlyFailure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug8858.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/core/bloomberg.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/core/cell_heights.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/other/test6.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug1010.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug131020-3.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug23847.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug65372.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug6933.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-cells.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-attributes.html [ Failure Rebaseline ]
+
 #////////////////////////////////////////////////////////////////////////////////////////
 # End of Tests failing
 #////////////////////////////////////////////////////////////////////////////////////////
index 1876fba..663cdb2 100644 (file)
@@ -1539,3 +1539,31 @@ webkit.org/b/115292 fast/writing-mode/japanese-ruby-vertical-lr.html
 webkit.org/b/115292 fast/writing-mode/japanese-ruby-vertical-rl.html
 webkit.org/b/115292 fast/writing-mode/vertical-baseline-alignment.html
 webkit.org/b/115292 fast/writing-mode/vertical-font-fallback.html
+
+# Needs rebaseline after bug https://bugs.webkit.org/show_bug.cgi?id=52185
+webkit.org/b/52185 fast/table/007.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth-vertical.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/spanOverlapRepaint.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug13169.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-1.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-2.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug17138.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug17548.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug220536.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug6304.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug73321.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug7714.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug86708.html [ ImageOnlyFailure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug8858.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/core/bloomberg.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/core/cell_heights.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/other/test6.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug1010.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug131020-3.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug23847.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug65372.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug6933.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-cells.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-attributes.html [ Failure Rebaseline ]
index d784f9a..2c78d6e 100644 (file)
@@ -2755,3 +2755,22 @@ fast/sub-pixel/transformed-iframe-copy-on-scroll.html [ Missing ]
 
 # Reference test fast/sub-pixel/float-wrap-zoom.html fails
 webkit.org/b/114800 fast/sub-pixel/float-wrap-zoom.html [ ImageOnlyFailure ]
+
+# Needs rebaseline after bug https://bugs.webkit.org/show_bug.cgi?id=52185
+webkit.org/b/52185 fast/table/007.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/colspanMinWidth-vertical.html [ Failure Rebaseline ]
+webkit.org/b/52185 fast/table/spanOverlapRepaint.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug13169.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-1.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug133756-2.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug17138.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug6304.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug73321.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug86708.html [ ImageOnlyFailure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/bugs/bug8858.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla/core/cell_heights.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug131020-3.html [ Failure Rebaseline ]
+webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug65372.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-cells.html [ Failure Rebaseline ]
+webkit.org/b/52185 accessibility/table-attributes.html [ Failure Rebaseline ]
diff --git a/LayoutTests/platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.png b/LayoutTests/platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.png
new file mode 100644 (file)
index 0000000..334a0a8
Binary files /dev/null and b/LayoutTests/platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.png differ
diff --git a/LayoutTests/platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.txt b/LayoutTests/platform/qt/fast/table/table-rowspan-height-distribution-in-rows-expected.txt
new file mode 100644 (file)
index 0000000..17c465d
--- /dev/null
@@ -0,0 +1,238 @@
+layer at (0,0) size 785x2855
+  RenderView at (0,0) size 785x600
+layer at (0,0) size 785x2855
+  RenderBlock {HTML} at (0,0) size 785x2856
+    RenderBody {BODY} at (8,18) size 769x2830
+      RenderBlock {H3} at (0,0) size 769x44
+        RenderText {#text} at (0,0) size 183x22
+          text run at (0,0) width 183: "Test for bugzilla bug : "
+        RenderInline {A} at (0,0) size 50x22 [color=#0000EE]
+          RenderText {#text} at (183,0) size 50x22
+            text run at (183,0) width 50: "52185"
+        RenderText {#text} at (233,0) size 734x44
+          text run at (233,0) width 501: ". Height is not property distributed in rows when rowspan cell"
+          text run at (0,22) width 355: "have more height then rows in the rowspan."
+      RenderBlock {H4} at (0,65) size 769x20
+        RenderText {#text} at (0,0) size 318x19
+          text run at (0,0) width 318: "Rows in rowspan should get proportional height."
+      RenderBlock {H5} at (0,106) size 769x16
+        RenderText {#text} at (0,0) size 242x15
+          text run at (0,0) width 242: "Test 1 - Rowindex same but rowspan diffrent."
+      RenderTable {TABLE} at (0,143) size 607x107 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 605x104
+          RenderTableRow {TR} at (0,2) size 605x0
+            RenderTableCell {TD} at (2,40) size 172x23 [border: (1px inset #808080)] [r=0 c=0 rs=5 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col0 - rowspan=5"
+            RenderTableCell {TD} at (176,15) size 173x23 [border: (1px inset #808080)] [r=0 c=1 rs=3 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col1 - rowspan=3"
+            RenderTableCell {TD} at (351,28) size 173x23 [border: (1px inset #808080)] [r=0 c=2 rs=4 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col2 - rowspan=4"
+          RenderTableRow {TR} at (0,4) size 605x23
+            RenderTableCell {TD} at (526,4) size 77x23 [border: (1px inset #808080)] [r=1 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row1 col0"
+          RenderTableRow {TR} at (0,29) size 605x23
+            RenderTableCell {TD} at (526,29) size 77x23 [border: (1px inset #808080)] [r=2 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row2 col0"
+          RenderTableRow {TR} at (0,54) size 605x23
+            RenderTableCell {TD} at (176,54) size 173x23 [border: (1px inset #808080)] [r=3 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row3 col0"
+          RenderTableRow {TR} at (0,79) size 605x23
+            RenderTableCell {TD} at (176,79) size 173x23 [border: (1px inset #808080)] [r=4 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row4 col0"
+      RenderBlock {H5} at (0,271) size 769x16
+        RenderText {#text} at (0,0) size 438x15
+          text run at (0,0) width 438: "Test 2 - RowsIndex and rowspan are same but height is diffrent for rowspan cells."
+      RenderTable {TABLE} at (0,308) size 607x311 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 605x308
+          RenderTableRow {TR} at (0,2) size 605x0
+            RenderTableCell {TD} at (2,142) size 172x23 [border: (1px inset #808080)] [r=0 c=0 rs=5 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col0 - rowspan=5"
+            RenderTableCell {TD} at (176,142) size 173x23 [border: (1px inset #808080)] [r=0 c=1 rs=5 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col1 - rowspan=5"
+            RenderTableCell {TD} at (351,142) size 173x23 [border: (1px inset #808080)] [r=0 c=2 rs=5 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col2 - rowspan=5"
+          RenderTableRow {TR} at (0,4) size 605x74
+            RenderTableCell {TD} at (526,29) size 77x23 [border: (1px inset #808080)] [r=1 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row1 col0"
+          RenderTableRow {TR} at (0,80) size 605x74
+            RenderTableCell {TD} at (526,105) size 77x23 [border: (1px inset #808080)] [r=2 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row2 col0"
+          RenderTableRow {TR} at (0,156) size 605x74
+            RenderTableCell {TD} at (526,181) size 77x23 [border: (1px inset #808080)] [r=3 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row3 col0"
+          RenderTableRow {TR} at (0,232) size 605x74
+            RenderTableCell {TD} at (526,257) size 77x23 [border: (1px inset #808080)] [r=4 c=3 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row4 col0"
+      RenderBlock {H5} at (0,641) size 769x16
+        RenderText {#text} at (0,0) size 333x15
+          text run at (0,0) width 333: "Test 3 - One rowspan cell under other rowspan cell boundries"
+      RenderTable {TABLE} at (0,678) size 607x561 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 605x558
+          RenderTableRow {TR} at (0,2) size 605x23
+            RenderTableCell {TD} at (2,267) size 172x23 [border: (1px inset #808080)] [r=0 c=0 rs=7 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col0 - rowspan=7"
+            RenderTableCell {TD} at (176,2) size 173x23 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row0 col1"
+            RenderTableCell {TD} at (351,2) size 76x23 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row0 col2"
+          RenderTableRow {TR} at (0,27) size 605x0
+            RenderTableCell {TD} at (176,267) size 173x23 [border: (1px inset #808080)] [r=1 c=1 rs=4 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row1 col0 - rowspan=4"
+          RenderTableRow {TR} at (0,29) size 605x164
+            RenderTableCell {TD} at (351,99) size 76x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row2 col0"
+            RenderTableCell {TD} at (429,268) size 174x23 [border: (1px inset #808080)] [r=2 c=3 rs=3 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row2 col1 - rowspan=3"
+          RenderTableRow {TR} at (0,195) size 605x164
+            RenderTableCell {TD} at (351,265) size 76x23 [border: (1px inset #808080)] [r=3 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row3 col0"
+          RenderTableRow {TR} at (0,361) size 605x170
+            RenderTableCell {TD} at (351,434) size 76x23 [border: (1px inset #808080)] [r=4 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row4 col0"
+          RenderTableRow {TR} at (0,533) size 605x23
+            RenderTableCell {TD} at (176,533) size 173x23 [border: (1px inset #808080)] [r=5 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row5 col0"
+      RenderBlock {H5} at (0,1260) size 769x16
+        RenderText {#text} at (0,0) size 671x15
+          text run at (0,0) width 671: "Test 4 - one rowspan cell starts under the boundies of previous rowspan cell but end after previous rowspan cell end boundry."
+      RenderTable {TABLE} at (0,1297) size 607x361 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 605x358
+          RenderTableRow {TR} at (0,2) size 605x59
+            RenderTableCell {TD} at (2,142) size 244x23 [border: (1px inset #808080)] [r=0 c=0 rs=5 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col0 - rowspan=5"
+            RenderTableCell {TD} at (248,20) size 244x23 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row0 col1"
+            RenderTableCell {TD} at (494,20) size 109x23 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row0 col2"
+          RenderTableRow {TR} at (0,63) size 605x59
+            RenderTableCell {TD} at (248,81) size 244x23 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row1 col0"
+          RenderTableRow {TR} at (0,124) size 605x59
+            RenderTableCell {TD} at (248,216) size 244x23 [border: (1px inset #808080)] [r=2 c=1 rs=4 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row2 col0 - rowspan=4"
+            RenderTableCell {TD} at (494,142) size 109x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row2 col1"
+          RenderTableRow {TR} at (0,185) size 605x59
+            RenderTableCell {TD} at (494,203) size 109x23 [border: (1px inset #808080)] [r=3 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row3 col0"
+          RenderTableRow {TR} at (0,246) size 605x60
+            RenderTableCell {TD} at (494,264) size 109x23 [border: (1px inset #808080)] [r=4 c=2 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row4 col0"
+          RenderTableRow {TR} at (0,308) size 605x23
+            RenderTableCell {TD} at (2,308) size 244x23 [border: (1px inset #808080)] [r=5 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row5 col0"
+          RenderTableRow {TR} at (0,333) size 605x23
+            RenderTableCell {TD} at (2,333) size 244x23 [border: (1px inset #808080)] [r=6 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row6 col0"
+      RenderBlock {H5} at (0,1679) size 769x16
+        RenderText {#text} at (0,0) size 200x15
+          text run at (0,0) width 200: "Test 5 - Consecutive 2 rowspan cells."
+      RenderTable {TABLE} at (0,1716) size 607x392 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 605x389
+          RenderTableRow {TR} at (0,2) size 605x23
+            RenderTableCell {TD} at (2,2) size 354x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row0 col0"
+          RenderTableRow {TR} at (0,27) size 605x0
+            RenderTableCell {TD} at (2,77) size 354x104 [border: (1px inset #808080)] [r=1 c=0 rs=3 cs=1]
+              RenderBlock {DIV} at (2,2) size 350x100
+                RenderText {#text} at (0,0) size 145x19
+                  text run at (0,0) width 145: "row1 col0 - rowspan=3"
+          RenderTableRow {TR} at (0,29) size 605x100
+            RenderTableCell {TD} at (358,67) size 245x23 [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row2 col0"
+          RenderTableRow {TR} at (0,131) size 605x100
+            RenderTableCell {TD} at (358,169) size 245x23 [border: (1px inset #808080)] [r=3 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row3 col0"
+          RenderTableRow {TR} at (0,233) size 605x23
+            RenderTableCell {TD} at (2,233) size 354x23 [border: (1px inset #808080)] [r=4 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row4 col0"
+          RenderTableRow {TR} at (0,258) size 605x0
+            RenderTableCell {TD} at (2,298) size 354x23 [border: (1px inset #808080)] [r=5 c=0 rs=3 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row5 col0 - rowspan=3"
+          RenderTableRow {TR} at (0,260) size 605x50
+            RenderTableCell {TD} at (358,273) size 245x23 [border: (1px inset #808080)] [r=6 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row6 col0"
+          RenderTableRow {TR} at (0,312) size 605x50
+            RenderTableCell {TD} at (358,325) size 245x23 [border: (1px inset #808080)] [r=7 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row7 col0"
+          RenderTableRow {TR} at (0,364) size 605x23
+            RenderTableCell {TD} at (2,364) size 354x23 [border: (1px inset #808080)] [r=8 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row8 col0"
+      RenderBlock {H5} at (0,2130) size 769x16
+        RenderText {#text} at (0,0) size 280x15
+          text run at (0,0) width 280: "Test 6 - Only one rowspan cells present in the table."
+      RenderTable {TABLE} at (0,2167) size 607x209 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 605x206
+          RenderTableRow {TR} at (0,2) size 605x49
+            RenderTableCell {TD} at (2,91) size 601x23 [border: (1px inset #808080)] [r=0 c=0 rs=4 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col0 - rowspan=4"
+      RenderBlock {H5} at (0,2397) size 769x16
+        RenderText {#text} at (0,0) size 297x15
+          text run at (0,0) width 297: "Test 7 - one or more table rows have only rowspan cells"
+      RenderTable {TABLE} at (0,2434) size 607x395 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 605x392
+          RenderTableRow {TR} at (0,2) size 605x57
+            RenderTableCell {TD} at (2,158) size 316x23 [border: (1px inset #808080)] [r=0 c=0 rs=3 cs=1]
+              RenderText {#text} at (2,2) size 145x19
+                text run at (2,2) width 145: "row0 col0 - rowspan=4"
+            RenderTableCell {TD} at (320,19) size 140x23 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row0 col1"
+          RenderTableRow {TR} at (0,61) size 605x0
+            RenderTableCell {TD} at (320,201) size 140x23 [border: (1px inset #808080)] [r=1 c=1 rs=3 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row1 col0"
+          RenderTableRow {TR} at (0,63) size 605x274
+            RenderTableCell {TD} at (462,215) size 141x23 [border: (1px inset #808080)] [r=2 c=2 rs=3 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row2 col0"
+          RenderTableRow {TR} at (0,339) size 605x26
+            RenderTableCell {TD} at (2,340) size 316x23 [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row3 col0"
+          RenderTableRow {TR} at (0,367) size 605x23
+            RenderTableCell {TD} at (2,367) size 316x23 [border: (1px inset #808080)] [r=4 c=0 rs=1 cs=1]
+              RenderText {#text} at (2,2) size 62x19
+                text run at (2,2) width 62: "row4 col0"
index 4000bf1..afae296 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla/bugs/bug17548-expected.png and b/LayoutTests/platform/qt/tables/mozilla/bugs/bug17548-expected.png differ
index 6b6b8c5..e94942d 100644 (file)
@@ -5,12 +5,12 @@ layer at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584 [bgcolor=#FFFFFF]
       RenderTable {TABLE} at (0,0) size 784x78 [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 782x76
-          RenderTableRow {TR} at (0,2) size 782x4
+          RenderTableRow {TR} at (0,2) size 782x6
             RenderTableCell {TD} at (2,2) size 198x49 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
               RenderImage {IMG} at (2,2) size 194x45
-            RenderTableCell {TD} at (202,2) size 578x4 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-          RenderTableRow {TR} at (0,8) size 782x43
-            RenderTableCell {TD} at (202,18) size 578x23 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (202,3) size 578x4 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+          RenderTableRow {TR} at (0,10) size 782x41
+            RenderTableCell {TD} at (202,19) size 578x23 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 73x19
                 text run at (2,2) width 73: "Information "
               RenderImage {IMG} at (75,10) size 4x7
index fd5dd06..14266bc 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla/bugs/bug220536-expected.png and b/LayoutTests/platform/qt/tables/mozilla/bugs/bug220536-expected.png differ
index 75f5894..d9b9080 100644 (file)
@@ -3,20 +3,20 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderTable {TABLE} at (0,0) size 118x58 [border: (1px outset #808080)]
-        RenderTableSection {THEAD} at (1,1) size 116x29
-          RenderTableRow {TR} at (0,2) size 116x23
-            RenderTableCell {TH} at (2,3) size 36x23 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
+      RenderTable {TABLE} at (0,0) size 118x56 [border: (1px outset #808080)]
+        RenderTableSection {THEAD} at (1,1) size 116x27
+          RenderTableRow {TR} at (0,2) size 116x11
+            RenderTableCell {TH} at (2,2) size 36x23 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
               RenderText {#text} at (2,2) size 32x19
                 text run at (2,2) width 32: "aaaa"
-            RenderTableCell {TH} at (40,3) size 36x23 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=1]
+            RenderTableCell {TH} at (40,2) size 36x23 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=1]
               RenderText {#text} at (2,2) size 32x19
                 text run at (2,2) width 32: "bbbb"
-            RenderTableCell {TH} at (78,3) size 36x23 [border: (1px inset #808080)] [r=0 c=2 rs=2 cs=1]
+            RenderTableCell {TH} at (78,2) size 36x23 [border: (1px inset #808080)] [r=0 c=2 rs=2 cs=1]
               RenderText {#text} at (2,2) size 32x19
                 text run at (2,2) width 32: "dddd"
-          RenderTableRow {TR} at (0,27) size 116x0
-        RenderTableSection {TBODY} at (1,30) size 116x27
+          RenderTableRow {TR} at (0,15) size 116x10
+        RenderTableSection {TBODY} at (1,28) size 116x27
           RenderTableRow {TR} at (0,2) size 116x23
             RenderTableCell {TD} at (2,2) size 36x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 32x19
index dcb8101..bce6627 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla/bugs/bug7714-expected.png and b/LayoutTests/platform/qt/tables/mozilla/bugs/bug7714-expected.png differ
index 2bf7715..35de29c 100644 (file)
@@ -11,26 +11,26 @@ layer at (0,0) size 800x600
       RenderTable {TABLE} at (0,73) size 22x124 [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 20x122
           RenderTableRow {TR} at (0,0) size 20x21
-            RenderTableCell {TD} at (0,9) size 10x21 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
+            RenderTableCell {TD} at (0,10) size 10x21 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "1"
             RenderTableCell {TD} at (10,0) size 10x21 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "2"
-          RenderTableRow {TR} at (0,21) size 20x19
+          RenderTableRow {TR} at (0,21) size 20x20
             RenderTableCell {TD} at (10,30) size 10x21 [border: (1px inset #808080)] [r=1 c=1 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "3"
-          RenderTableRow {TR} at (0,40) size 20x21
-            RenderTableCell {TD} at (0,49) size 10x21 [border: (1px inset #808080)] [r=2 c=0 rs=2 cs=1]
+          RenderTableRow {TR} at (0,41) size 20x20
+            RenderTableCell {TD} at (0,50) size 10x21 [border: (1px inset #808080)] [r=2 c=0 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "4"
-          RenderTableRow {TR} at (0,61) size 20x19
+          RenderTableRow {TR} at (0,61) size 20x20
             RenderTableCell {TD} at (10,70) size 10x21 [border: (1px inset #808080)] [r=3 c=1 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "5"
-          RenderTableRow {TR} at (0,80) size 20x21
-            RenderTableCell {TD} at (0,90) size 10x21 [border: (1px inset #808080)] [r=4 c=0 rs=2 cs=1]
+          RenderTableRow {TR} at (0,81) size 20x20
+            RenderTableCell {TD} at (0,91) size 10x21 [border: (1px inset #808080)] [r=4 c=0 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "6"
           RenderTableRow {TR} at (0,101) size 20x21
@@ -41,32 +41,32 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 760x38
           text run at (0,0) width 760: "This is the same table as above, but cellspacing=5 in this case. For 5.0, (jun08 win95) notice the odd cellspacing overlaps. See"
           text run at (0,19) width 98: "also bug #6304."
-      RenderTable {TABLE} at (0,267) size 37x149 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 35x147
-          RenderTableRow {TR} at (0,5) size 35x21
-            RenderTableCell {TD} at (5,14) size 10x21 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
+      RenderTable {TABLE} at (0,267) size 37x153 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 35x151
+          RenderTableRow {TR} at (0,5) size 35x22
+            RenderTableCell {TD} at (5,17) size 10x21 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "1"
             RenderTableCell {TD} at (20,5) size 10x21 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "2"
-          RenderTableRow {TR} at (0,31) size 35x14
-            RenderTableCell {TD} at (20,40) size 10x21 [border: (1px inset #808080)] [r=1 c=1 rs=2 cs=1]
+          RenderTableRow {TR} at (0,32) size 35x18
+            RenderTableCell {TD} at (20,43) size 10x21 [border: (1px inset #808080)] [r=1 c=1 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "3"
-          RenderTableRow {TR} at (0,50) size 35x21
-            RenderTableCell {TD} at (5,59) size 10x21 [border: (1px inset #808080)] [r=2 c=0 rs=2 cs=1]
+          RenderTableRow {TR} at (0,55) size 35x20
+            RenderTableCell {TD} at (5,66) size 10x21 [border: (1px inset #808080)] [r=2 c=0 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "4"
-          RenderTableRow {TR} at (0,76) size 35x14
-            RenderTableCell {TD} at (20,85) size 10x21 [border: (1px inset #808080)] [r=3 c=1 rs=2 cs=1]
+          RenderTableRow {TR} at (0,80) size 35x19
+            RenderTableCell {TD} at (20,89) size 10x21 [border: (1px inset #808080)] [r=3 c=1 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "5"
-          RenderTableRow {TR} at (0,95) size 35x21
-            RenderTableCell {TD} at (5,108) size 10x21 [border: (1px inset #808080)] [r=4 c=0 rs=2 cs=1]
+          RenderTableRow {TR} at (0,104) size 35x16
+            RenderTableCell {TD} at (5,114) size 10x21 [border: (1px inset #808080)] [r=4 c=0 rs=2 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "6"
-          RenderTableRow {TR} at (0,121) size 35x21
-            RenderTableCell {TD} at (20,121) size 10x21 [border: (1px inset #808080)] [r=5 c=1 rs=1 cs=1]
+          RenderTableRow {TR} at (0,125) size 35x21
+            RenderTableCell {TD} at (20,125) size 10x21 [border: (1px inset #808080)] [r=5 c=1 rs=1 cs=1]
               RenderText {#text} at (1,1) size 8x19
                 text run at (1,1) width 8: "7"
index 90e4ab3..b917b1d 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla/core/bloomberg-expected.png and b/LayoutTests/platform/qt/tables/mozilla/core/bloomberg-expected.png differ
index f65bf80..3e6e704 100644 (file)
@@ -5,7 +5,7 @@ layer at (0,0) size 785x677
     RenderBody {BODY} at (8,8) size 769x653 [color=#333333] [bgcolor=#FFFFFF]
       RenderTable {TABLE} at (0,0) size 636x624 [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 634x622
-          RenderTableRow {TR} at (0,0) size 634x24
+          RenderTableRow {TR} at (0,0) size 634x28
             RenderTableCell {TD} at (0,0) size 148x622 [bgcolor=#660000] [border: (1px inset #808080)] [r=0 c=0 rs=6 cs=1]
               RenderInline {B} at (0,0) size 63x19
                 RenderInline {A} at (0,0) size 63x19
@@ -214,22 +214,22 @@ layer at (0,0) size 785x677
               RenderBR {BR} at (4,599) size 0x19
             RenderTableCell {TD} at (148,0) size 486x24 [bgcolor=#660000] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=3]
               RenderImage {IMG} at (10,4) size 466x16
-          RenderTableRow {TR} at (0,24) size 634x69
-            RenderTableCell {TD} at (148,24) size 128x69 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+          RenderTableRow {TR} at (0,28) size 634x81
+            RenderTableCell {TD} at (148,28) size 128x69 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderInline {A} at (0,0) size 120x19
                 RenderText {#text} at (0,0) size 0x0
                 RenderImage {IMG} at (4,4) size 120x60
               RenderText {#text} at (0,0) size 0x0
               RenderText {#text} at (0,0) size 0x0
               RenderImage {IMG} at (4,64) size 120x1
-            RenderTableCell {TD} at (276,24) size 175x69 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (276,28) size 175x69 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
               RenderInline {A} at (0,0) size 167x19
                 RenderText {#text} at (0,0) size 0x0
                 RenderImage {IMG} at (4,4) size 167x60
               RenderText {#text} at (0,0) size 0x0
               RenderText {#text} at (0,0) size 0x0
               RenderImage {IMG} at (4,64) size 167x1
-            RenderTableCell {TD} at (451,24) size 183x527 [bgcolor=#CCCC99] [border: (1px inset #808080)] [r=1 c=3 rs=6 cs=1]
+            RenderTableCell {TD} at (451,28) size 183x527 [bgcolor=#CCCC99] [border: (1px inset #808080)] [r=1 c=3 rs=6 cs=1]
               RenderBlock (anonymous) at (4,4) size 175x28
                 RenderInline {FONT} at (0,0) size 147x12
                   RenderInline {FONT} at (0,0) size 147x13
@@ -282,8 +282,8 @@ layer at (0,0) size 785x677
                   RenderImage {IMG} at (25,366) size 125x125
                 RenderText {#text} at (0,0) size 0x0
                 RenderText {#text} at (0,0) size 0x0
-          RenderTableRow {TR} at (0,93) size 634x122
-            RenderTableCell {TD} at (148,93) size 303x122 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=2]
+          RenderTableRow {TR} at (0,109) size 634x143
+            RenderTableCell {TD} at (148,109) size 303x122 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=2]
               RenderInline {A} at (0,0) size 0x0
                 RenderImage {IMG} at (4,4) size 288x26
               RenderBR {BR} at (295,4) size 0x19
@@ -300,8 +300,8 @@ layer at (0,0) size 785x677
                   RenderText {#text} at (4,99) size 46x19
                     text run at (4,99) width 46: "More..."
               RenderText {#text} at (0,0) size 0x0
-          RenderTableRow {TR} at (0,215) size 634x407
-            RenderTableCell {TD} at (148,215) size 303x313 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=3 c=1 rs=1 cs=2]
+          RenderTableRow {TR} at (0,252) size 634x370
+            RenderTableCell {TD} at (148,252) size 303x313 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=3 c=1 rs=1 cs=2]
               RenderImage {IMG} at (4,4) size 290x35
               RenderBR {BR} at (294,39) size 0x0
               RenderInline {A} at (0,0) size 248x19
index 8ab856b..3981c88 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla/other/test6-expected.png and b/LayoutTests/platform/qt/tables/mozilla/other/test6-expected.png differ
index e3f4eed..a4ea111 100644 (file)
@@ -16,50 +16,50 @@ layer at (0,0) size 785x1383
           text run at (0,0) width 500: "Auto-width tables with spans nested 8 levels deep"
       RenderTable {TABLE} at (0,173) size 769x363 [bgcolor=#FF0000] [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 767x360
-          RenderTableRow {TR} at (0,2) size 767x23
-            RenderTableCell {TD} at (2,2) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,2) size 767x164
+            RenderTableCell {TD} at (2,72) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 24x19
                 text run at (2,2) width 24: "Cell"
             RenderTableCell {TD} at (32,2) size 733x331 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=2]
               RenderTable {TABLE} at (2,2) size 729x327 [bgcolor=#ADD8E6] [border: (1px outset #808080)]
                 RenderTableSection {TBODY} at (1,1) size 727x325
-                  RenderTableRow {TR} at (0,2) size 727x23
-                    RenderTableCell {TD} at (2,2) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                  RenderTableRow {TR} at (0,2) size 727x147
+                    RenderTableCell {TD} at (2,64) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                       RenderText {#text} at (2,2) size 24x19
                         text run at (2,2) width 24: "Cell"
                     RenderTableCell {TD} at (32,2) size 693x296 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=2]
                       RenderTable {TABLE} at (2,2) size 689x292 [bgcolor=#90EE90] [border: (1px outset #808080)]
                         RenderTableSection {TBODY} at (1,1) size 687x290
-                          RenderTableRow {TR} at (0,2) size 687x23
-                            RenderTableCell {TD} at (2,2) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                          RenderTableRow {TR} at (0,2) size 687x129
+                            RenderTableCell {TD} at (2,55) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                               RenderText {#text} at (2,2) size 24x19
                                 text run at (2,2) width 24: "Cell"
                             RenderTableCell {TD} at (32,2) size 653x261 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=2]
                               RenderTable {TABLE} at (2,2) size 649x257 [border: (1px outset #808080)]
                                 RenderTableSection {TBODY} at (1,1) size 647x255
-                                  RenderTableRow {TR} at (0,2) size 647x23
-                                    RenderTableCell {TD} at (2,2) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                  RenderTableRow {TR} at (0,2) size 647x112
+                                    RenderTableCell {TD} at (2,46) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                                       RenderText {#text} at (2,2) size 24x19
                                         text run at (2,2) width 24: "Cell"
                                     RenderTableCell {TD} at (32,2) size 613x226 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=2]
                                       RenderTable {TABLE} at (2,2) size 609x222 [bgcolor=#FFA500] [border: (1px outset #808080)]
                                         RenderTableSection {TBODY} at (1,1) size 607x220
-                                          RenderTableRow {TR} at (0,2) size 607x23
-                                            RenderTableCell {TD} at (2,2) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                          RenderTableRow {TR} at (0,2) size 607x94
+                                            RenderTableCell {TD} at (2,37) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                                               RenderText {#text} at (2,2) size 24x19
                                                 text run at (2,2) width 24: "Cell"
                                             RenderTableCell {TD} at (32,2) size 573x191 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=2]
                                               RenderTable {TABLE} at (2,2) size 569x187 [bgcolor=#FF0000] [border: (1px outset #808080)]
                                                 RenderTableSection {TBODY} at (1,1) size 567x185
-                                                  RenderTableRow {TR} at (0,2) size 567x23
-                                                    RenderTableCell {TD} at (2,2) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                                  RenderTableRow {TR} at (0,2) size 567x77
+                                                    RenderTableCell {TD} at (2,29) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                                                       RenderText {#text} at (2,2) size 24x19
                                                         text run at (2,2) width 24: "Cell"
                                                     RenderTableCell {TD} at (32,2) size 533x156 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=2]
                                                       RenderTable {TABLE} at (2,2) size 529x152 [bgcolor=#ADD8E6] [border: (1px outset #808080)]
                                                         RenderTableSection {TBODY} at (1,1) size 527x150
-                                                          RenderTableRow {TR} at (0,2) size 527x23
-                                                            RenderTableCell {TD} at (2,2) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                                          RenderTableRow {TR} at (0,2) size 527x50
+                                                            RenderTableCell {TD} at (2,15) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                                                               RenderText {#text} at (2,2) size 24x19
                                                                 text run at (2,2) width 24: "Cell"
                                                             RenderTableCell {TD} at (32,2) size 493x102 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=2]
@@ -90,8 +90,8 @@ layer at (0,0) size 785x1383
                                                                     RenderTableCell {TD} at (457,61) size 28x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
                                                                       RenderText {#text} at (2,2) size 24x19
                                                                         text run at (2,2) width 24: "Cell"
-                                                          RenderTableRow {TR} at (0,27) size 527x77
-                                                            RenderTableCell {TD} at (2,54) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                                                          RenderTableRow {TR} at (0,54) size 527x50
+                                                            RenderTableCell {TD} at (2,67) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                                                               RenderText {#text} at (2,2) size 24x19
                                                                 text run at (2,2) width 24: "Cell"
                                                           RenderTableRow {TR} at (0,106) size 527x42
@@ -106,8 +106,8 @@ layer at (0,0) size 785x1383
                                                             RenderTableCell {TD} at (497,115) size 28x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
                                                               RenderText {#text} at (2,2) size 24x19
                                                                 text run at (2,2) width 24: "Cell"
-                                                  RenderTableRow {TR} at (0,27) size 567x131
-                                                    RenderTableCell {TD} at (2,81) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                                                  RenderTableRow {TR} at (0,81) size 567x77
+                                                    RenderTableCell {TD} at (2,108) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                                                       RenderText {#text} at (2,2) size 24x19
                                                         text run at (2,2) width 24: "Cell"
                                                   RenderTableRow {TR} at (0,160) size 567x23
@@ -121,8 +121,8 @@ layer at (0,0) size 785x1383
                                                     RenderTableCell {TD} at (535,160) size 30x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
                                                       RenderText {#text} at (2,2) size 24x19
                                                         text run at (2,2) width 24: "Cell"
-                                          RenderTableRow {TR} at (0,27) size 607x166
-                                            RenderTableCell {TD} at (2,98) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                                          RenderTableRow {TR} at (0,98) size 607x95
+                                            RenderTableCell {TD} at (2,134) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                                               RenderText {#text} at (2,2) size 24x19
                                                 text run at (2,2) width 24: "Cell"
                                           RenderTableRow {TR} at (0,195) size 607x23
@@ -136,8 +136,8 @@ layer at (0,0) size 785x1383
                                             RenderTableCell {TD} at (573,195) size 32x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
                                               RenderText {#text} at (2,2) size 24x19
                                                 text run at (2,2) width 24: "Cell"
-                                  RenderTableRow {TR} at (0,27) size 647x201
-                                    RenderTableCell {TD} at (2,116) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                                  RenderTableRow {TR} at (0,116) size 647x112
+                                    RenderTableCell {TD} at (2,160) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                                       RenderText {#text} at (2,2) size 24x19
                                         text run at (2,2) width 24: "Cell"
                                   RenderTableRow {TR} at (0,230) size 647x23
@@ -151,8 +151,8 @@ layer at (0,0) size 785x1383
                                     RenderTableCell {TD} at (611,230) size 34x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
                                       RenderText {#text} at (2,2) size 24x19
                                         text run at (2,2) width 24: "Cell"
-                          RenderTableRow {TR} at (0,27) size 687x236
-                            RenderTableCell {TD} at (2,133) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                          RenderTableRow {TR} at (0,133) size 687x130
+                            RenderTableCell {TD} at (2,186) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                               RenderText {#text} at (2,2) size 24x19
                                 text run at (2,2) width 24: "Cell"
                           RenderTableRow {TR} at (0,265) size 687x23
@@ -166,8 +166,8 @@ layer at (0,0) size 785x1383
                             RenderTableCell {TD} at (649,265) size 36x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
                               RenderText {#text} at (2,2) size 24x19
                                 text run at (2,2) width 24: "Cell"
-                  RenderTableRow {TR} at (0,27) size 727x271
-                    RenderTableCell {TD} at (2,151) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                  RenderTableRow {TR} at (0,151) size 727x147
+                    RenderTableCell {TD} at (2,213) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                       RenderText {#text} at (2,2) size 24x19
                         text run at (2,2) width 24: "Cell"
                   RenderTableRow {TR} at (0,300) size 727x23
@@ -181,8 +181,8 @@ layer at (0,0) size 785x1383
                     RenderTableCell {TD} at (686,300) size 39x23 [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
                       RenderText {#text} at (2,2) size 24x19
                         text run at (2,2) width 24: "Cell"
-          RenderTableRow {TR} at (0,27) size 767x306
-            RenderTableCell {TD} at (2,168) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,168) size 767x165
+            RenderTableCell {TD} at (2,239) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 24x19
                 text run at (2,2) width 24: "Cell"
           RenderTableRow {TR} at (0,335) size 767x23
index 75dba84..c0a4ca9 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.png and b/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug1010-expected.png differ
index 4892b16..326feda 100644 (file)
@@ -5,7 +5,7 @@ layer at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
       RenderTable {TABLE} at (0,0) size 784x273 [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 782x271
-          RenderTableRow {TR} at (0,2) size 782x23
+          RenderTableRow {TR} at (0,2) size 782x132
             RenderTableCell {TD} at (2,2) size 662x267 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
               RenderBlock {UL} at (2,2) size 658x247
                 RenderListItem {LI} at (40,0) size 618x19
@@ -78,16 +78,16 @@ layer at (0,0) size 800x600
                     RenderText {#text} at (0,0) size 444x19
                       text run at (0,0) width 312: "A relatively large (150k) document with an average "
                       text run at (312,0) width 132: "mix of HTML content"
-            RenderTableCell {TD} at (666,2) size 56x23 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (666,56) size 56x23 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 32x19
                 text run at (2,2) width 32: "foo 1"
-            RenderTableCell {TD} at (724,2) size 56x23 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (724,56) size 56x23 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 32x19
                 text run at (2,2) width 32: "foo 2"
-          RenderTableRow {TR} at (0,27) size 782x242
-            RenderTableCell {TD} at (666,136) size 56x23 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+          RenderTableRow {TR} at (0,136) size 782x133
+            RenderTableCell {TD} at (666,191) size 56x23 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 37x19
                 text run at (2,2) width 37: "Foo 3"
-            RenderTableCell {TD} at (724,136) size 56x23 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (724,191) size 56x23 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 37x19
                 text run at (2,2) width 37: "Foo 4"
index 38efbe0..b4c2fd7 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug23847-expected.png and b/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug23847-expected.png differ
index dba544c..50e86f2 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png and b/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png differ
index 6622b1b..b4c3c9a 100644 (file)
@@ -16,20 +16,20 @@ layer at (0,0) size 800x600
             RenderTableCell {TD} at (178,2) size 76x23 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
               RenderText {#text} at (2,2) size 30x19
                 text run at (2,2) width 30: "col 3"
-          RenderTableRow {TR} at (0,27) size 256x23
-            RenderTableCell {TD} at (2,27) size 40x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,27) size 256x49
+            RenderTableCell {TD} at (2,40) size 40x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 36x19
                 text run at (2,2) width 36: "row 1"
             RenderTableCell {TD} at (44,27) size 210x210 [border: (1px inset #808080)] [r=1 c=1 rs=3 cs=3]
               RenderBlock (floating) {DIV} at (2,2) size 206x206 [border: (3px solid #FF0000)]
                 RenderText {#text} at (85,3) size 36x19
                   text run at (85,3) width 36: "tjosan"
-          RenderTableRow {TR} at (0,52) size 256x50
-            RenderTableCell {TD} at (2,65) size 40x23 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,78) size 256x107
+            RenderTableCell {TD} at (2,120) size 40x23 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 36x19
                 text run at (2,2) width 36: "row 2"
-          RenderTableRow {TR} at (0,104) size 256x133
-            RenderTableCell {TD} at (2,159) size 40x23 [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,187) size 256x50
+            RenderTableCell {TD} at (2,200) size 40x23 [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 36x19
                 text run at (2,2) width 36: "row 3"
       RenderBlock (anonymous) at (0,241) size 784x35
index 4eca5d0..b83de4a 100644 (file)
Binary files a/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.png and b/LayoutTests/platform/qt/tables/mozilla_expected_failures/bugs/bug6933-expected.png differ
index 02078ee..6f3d0c7 100644 (file)
@@ -5,14 +5,14 @@ layer at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
       RenderTable {TABLE} at (0,0) size 194x246 [bgcolor=#FF0000] [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 192x244
-          RenderTableRow {TR} at (0,20) size 192x23
-            RenderTableCell {TD} at (20,20) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,20) size 192x92
+            RenderTableCell {TD} at (20,54) size 28x23 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 24x19
                 text run at (2,2) width 24: "Cell"
             RenderTableCell {TD} at (68,20) size 104x204 [border: (1px inset #808080)] [r=0 c=1 rs=2 cs=1]
               RenderImage {IMG} at (2,2) size 100x200
               RenderText {#text} at (0,0) size 0x0
-          RenderTableRow {TR} at (0,63) size 192x161
-            RenderTableCell {TD} at (20,132) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,132) size 192x92
+            RenderTableCell {TD} at (20,166) size 28x23 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 24x19
                 text run at (2,2) width 24: "Cell"
index f65bf80..3e6e704 100644 (file)
@@ -5,7 +5,7 @@ layer at (0,0) size 785x677
     RenderBody {BODY} at (8,8) size 769x653 [color=#333333] [bgcolor=#FFFFFF]
       RenderTable {TABLE} at (0,0) size 636x624 [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 634x622
-          RenderTableRow {TR} at (0,0) size 634x24
+          RenderTableRow {TR} at (0,0) size 634x28
             RenderTableCell {TD} at (0,0) size 148x622 [bgcolor=#660000] [border: (1px inset #808080)] [r=0 c=0 rs=6 cs=1]
               RenderInline {B} at (0,0) size 63x19
                 RenderInline {A} at (0,0) size 63x19
@@ -214,22 +214,22 @@ layer at (0,0) size 785x677
               RenderBR {BR} at (4,599) size 0x19
             RenderTableCell {TD} at (148,0) size 486x24 [bgcolor=#660000] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=3]
               RenderImage {IMG} at (10,4) size 466x16
-          RenderTableRow {TR} at (0,24) size 634x69
-            RenderTableCell {TD} at (148,24) size 128x69 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+          RenderTableRow {TR} at (0,28) size 634x81
+            RenderTableCell {TD} at (148,28) size 128x69 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderInline {A} at (0,0) size 120x19
                 RenderText {#text} at (0,0) size 0x0
                 RenderImage {IMG} at (4,4) size 120x60
               RenderText {#text} at (0,0) size 0x0
               RenderText {#text} at (0,0) size 0x0
               RenderImage {IMG} at (4,64) size 120x1
-            RenderTableCell {TD} at (276,24) size 175x69 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (276,28) size 175x69 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
               RenderInline {A} at (0,0) size 167x19
                 RenderText {#text} at (0,0) size 0x0
                 RenderImage {IMG} at (4,4) size 167x60
               RenderText {#text} at (0,0) size 0x0
               RenderText {#text} at (0,0) size 0x0
               RenderImage {IMG} at (4,64) size 167x1
-            RenderTableCell {TD} at (451,24) size 183x527 [bgcolor=#CCCC99] [border: (1px inset #808080)] [r=1 c=3 rs=6 cs=1]
+            RenderTableCell {TD} at (451,28) size 183x527 [bgcolor=#CCCC99] [border: (1px inset #808080)] [r=1 c=3 rs=6 cs=1]
               RenderBlock (anonymous) at (4,4) size 175x28
                 RenderInline {FONT} at (0,0) size 147x12
                   RenderInline {FONT} at (0,0) size 147x13
@@ -282,8 +282,8 @@ layer at (0,0) size 785x677
                   RenderImage {IMG} at (25,366) size 125x125
                 RenderText {#text} at (0,0) size 0x0
                 RenderText {#text} at (0,0) size 0x0
-          RenderTableRow {TR} at (0,93) size 634x122
-            RenderTableCell {TD} at (148,93) size 303x122 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=2]
+          RenderTableRow {TR} at (0,109) size 634x143
+            RenderTableCell {TD} at (148,109) size 303x122 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=2]
               RenderInline {A} at (0,0) size 0x0
                 RenderImage {IMG} at (4,4) size 288x26
               RenderBR {BR} at (295,4) size 0x19
@@ -300,8 +300,8 @@ layer at (0,0) size 785x677
                   RenderText {#text} at (4,99) size 46x19
                     text run at (4,99) width 46: "More..."
               RenderText {#text} at (0,0) size 0x0
-          RenderTableRow {TR} at (0,215) size 634x407
-            RenderTableCell {TD} at (148,215) size 303x313 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=3 c=1 rs=1 cs=2]
+          RenderTableRow {TR} at (0,252) size 634x370
+            RenderTableCell {TD} at (148,252) size 303x313 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=3 c=1 rs=1 cs=2]
               RenderImage {IMG} at (4,4) size 290x35
               RenderBR {BR} at (294,39) size 0x0
               RenderInline {A} at (0,0) size 248x19
index 7f3174f..3a0d4e2 100644 (file)
@@ -5,15 +5,15 @@ layer at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
       RenderTable {TABLE} at (0,0) size 345x123 [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 343x121
-          RenderTableRow {TR} at (0,2) size 343x9
+          RenderTableRow {TR} at (0,2) size 343x24
             RenderTableCell {TD} at (2,41) size 126x39 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=2]
               RenderImage {IMG} at (2,2) size 122x35
-            RenderTableCell {TD} at (130,2) size 199x9 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (130,9) size 199x9 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
               RenderImage {IMG} at (2,2) size 195x5
             RenderTableCell {TD} at (331,2) size 10x117 [border: (1px inset #808080)] [r=0 c=3 rs=4 cs=1]
               RenderImage {IMG} at (2,2) size 6x113
-          RenderTableRow {TR} at (0,13) size 343x106
-            RenderTableCell {TD} at (130,49) size 199x34 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+          RenderTableRow {TR} at (0,28) size 343x91
+            RenderTableCell {TD} at (130,56) size 199x34 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
               RenderInline {A} at (0,0) size 195x19 [color=#0000EE]
                 RenderText {#text} at (0,0) size 0x0
                 RenderImage {IMG} at (2,2) size 195x30
index 4f6742a..0f0ce24 100644 (file)
@@ -1,3 +1,32 @@
+2013-05-13  Suchit Agrawal  <a.suchit@samsung.com>
+
+        Cell heights are disproportional when a row-spanning cell contains a block element that determines the height of the rows
+        https://bugs.webkit.org/show_bug.cgi?id=52185
+
+        Reviewed by David Hyatt.
+
+        Cells heights are not proper when rowspan cell have its own height and rowspan height
+        is more than the height of the rows present in rowspan.
+
+        After calculating logical height of the rows in the table, we are recalculating the height
+        of the rows present in rowspan. Based on the ratio of row's logical height, we are
+        distributing rowspan cell height in rows.
+
+        Test: fast/table/table-rowspan-height-distribution-in-rows.html
+
+        * rendering/RenderTableSection.cpp:
+        (WebCore):
+
+        Update the logical height of the rows based on rowspan cell height.
+        (WebCore::RenderTableSection::distributeRowSpanHeightToRows):
+
+        It calculates logical height of the rows in the table.
+        (WebCore::RenderTableSection::calcRowLogicalHeight):
+
+        Added new private API to distribute rowSpan cell height in rows.
+        * rendering/RenderTableSection.h:
+        (RenderTableSection):
+
 2013-04-30  Balazs Kelemen  <b.kelemen@sisa.samsung.com>
 
         [GStreamer] cannot seek after video finished
index 59053e3..e7a13b0 100644 (file)
@@ -255,6 +255,199 @@ void RenderTableSection::addCell(RenderTableCell* cell, RenderTableRow* row)
     cell->setCol(table()->effColToCol(col));
 }
 
+// Distribute rowSpan cell height in rows those comes in rowSpan cell
+void RenderTableSection::distributeRowSpanHeightToRows(Vector<RenderTableCell*, 5>& rowSpanCells)
+{
+    RenderTableCell* cell;
+
+    // Rearranging the rowSpan cells in the order, we need to calculate the height of the rows.
+    cell = rowSpanCells[0];
+    for (unsigned i = 1; i < rowSpanCells.size(); i++) {
+        for (unsigned j = i; j > 0; j--) {
+            if (cell->rowIndex() == rowSpanCells[j]->rowIndex()) {
+                // if 2 or more cells have same rowIndex then height of the row will be calculated first for the cell
+                // which have lower rowSpan value.
+                if (cell->rowSpan() > rowSpanCells[j]->rowSpan()) {
+                    rowSpanCells[j - 1] = rowSpanCells[j];
+                    rowSpanCells[j - 1] = cell;
+                    if (j > 1)
+                        cell = rowSpanCells[j - 2];
+                } else if (cell->rowSpan() == rowSpanCells[j]->rowSpan()) {
+                    // If 2 or more cells have same rowIndex and same rowSpan then height of the row will be calculated
+                    // only for the cell which have more height. So more height cell pushed back in the list.
+                    if (cell->logicalHeightForRowSizing() > rowSpanCells[j]->logicalHeightForRowSizing()) {
+                        rowSpanCells[j - 1] = rowSpanCells[j];
+                        rowSpanCells[j] = cell;
+                    }
+                    break;
+                } else
+                    break;
+            } else {
+                // Height of the rows will be calculated first for the cell which comes under the boundries of other rowSpan cell.
+                if ((cell->rowIndex() + cell->rowSpan()) > rowSpanCells[j]->rowIndex() 
+                    && (cell->rowIndex() + cell->rowSpan()) >= (rowSpanCells[j]->rowIndex() + rowSpanCells[j]->rowSpan())) {
+                    rowSpanCells[j - 1] = rowSpanCells[j];
+                    rowSpanCells[j] = cell;
+                    if (j > 1)
+                        cell = rowSpanCells[j - 2];
+                } else
+                    break;
+            }
+        }
+        cell = rowSpanCells[i];
+    }
+
+    unsigned changedHeight = 0;
+    unsigned lastRowIndex = 0;
+    unsigned lastRowSpan = 1;
+
+    // Here we are recalculating the height of the rows in the rowSpan
+    for (unsigned i = 0; i < rowSpanCells.size(); i++) {
+        cell = rowSpanCells[i];
+
+        // If 2 or more cells have same rowIndex and same rowSpan then height of the row will be calculated
+        // only for the cell which have more height.
+        if ((i + 1) < rowSpanCells.size()) {
+            if (cell->rowIndex() == rowSpanCells[i + 1]->rowIndex() && cell->rowSpan() == rowSpanCells[i + 1]->rowSpan())
+                continue;
+        }
+
+        unsigned rowSpan = cell->rowSpan();
+        unsigned rowIndex = cell->rowIndex();
+        bool changedHeightApplied = false;
+        int initialPos = m_rowPos[rowIndex + rowSpan];
+
+        // Apply height changed by previous rowSpan cells
+        if (changedHeight > 0) {
+            // if previous rowSpan cell comes under the boundries of current rowSpan cell then apply the changed height
+            // to remain rows below previous rowSpan cell and till current rowSpan cell end boundry
+            if (lastRowIndex >= rowIndex) {
+                for (unsigned row = lastRowIndex + lastRowSpan; row <= (rowIndex + rowSpan); row++)
+                    m_rowPos[row] += changedHeight;
+
+                changedHeightApplied = true;
+            } else {
+                // if rowIndex of current rowSpan cell comes under the boundries of previous rowSpan cell then apply the changed height
+                // to remain rows below previous rowSpan cell and till current rowSpan cell end boundry
+                if (rowIndex < lastRowIndex + lastRowSpan) {
+                    for (unsigned row = lastRowIndex + lastRowSpan; row <= (rowIndex + rowSpan); row++)
+                        m_rowPos[row] += changedHeight;
+
+                    changedHeightApplied = true;
+                } else {
+                    // If rowIndex of current rowSpan cell is greater than the previous row span cell then apply the changed height
+                    // to rows below end of previous rowSpan cell and above current rowSpan cell.
+                    for (unsigned row = lastRowIndex + lastRowSpan; row < rowIndex; row++)
+                        m_rowPos[row] += changedHeight;
+                }
+            }
+        }
+
+        lastRowIndex = rowIndex;
+        lastRowSpan = rowSpan;
+
+        int totalRowsHeight = 0;
+        // Getting rowSpan cell height
+        int rowSpanCellHeight = cell->logicalHeightForRowSizing();
+        Vector<int> rowsHeight(rowSpan);
+        bool rowWithOnlyRowSpanCells = false;
+        int spacing = table()->vBorderSpacing();
+        int lastRowWithValidHeight = rowIndex;
+
+        unsigned effectiveCols = 0;
+        // Calculating number of effective columns within rowSpan
+        for (unsigned row = rowIndex; row < (rowIndex + rowSpan); row++) {
+            unsigned totalCols = m_grid[row].row.size();
+            unsigned col = 0;
+            unsigned nCols = 0;
+
+            if (totalCols) {
+                CellStruct rowSpanCell;
+                do {
+                    rowSpanCell = cellAt(row, col);
+                    if (rowSpanCell.cells.size())
+                        nCols++;
+                    else
+                        break;
+                    col++;
+                } while (col < totalCols);
+
+                if (nCols > effectiveCols)
+                    effectiveCols = nCols;
+            }
+        }
+
+        // Storing height of rows in current rowSpan cell, getting total height of rows and adjusting rowSpan cell height with border spacing.
+        for (unsigned row = rowIndex; row < (rowIndex + rowSpan); row++) {
+            rowsHeight[row - rowIndex] = (m_rowPos[row + 1] - (m_grid[row].rowRenderer ? spacing : 0)) - m_rowPos[row];
+            // If row height is zero and row having only rowSpan cells then one part of rowSpan cell height is applied to the row.
+            if (!rowsHeight[row - rowIndex]) {
+                unsigned totalCols = m_grid[row].row.size();
+                unsigned col = 0;
+
+                if (totalCols) {
+                    CellStruct rowSpanCell;
+                    unsigned rowSpanCells = 0;
+
+                    // Finding number of rowSpan cells.
+                    do {
+                        rowSpanCell = cellAt(row, col);
+                        if (rowSpanCell.cells.size() && rowSpanCell.cells[0]->rowSpan() > 1)
+                            rowSpanCells++;
+
+                        col++;
+                    } while (col < totalCols);
+
+                    // Row having only rowSpan cells then one part of rowSpan cell height is applied to the row.
+                    if (rowSpanCells == effectiveCols) {
+                        rowWithOnlyRowSpanCells = true;
+                        rowsHeight[row - rowIndex] = rowSpanCellHeight / rowSpan - (m_grid[row].rowRenderer ? spacing : 0);
+                    }
+                }
+            }
+            totalRowsHeight += rowsHeight[row - rowIndex];
+            if (rowsHeight[row - rowIndex])
+                lastRowWithValidHeight = row;
+            rowSpanCellHeight -= m_grid[row].rowRenderer ? spacing : 0;
+        }
+        rowSpanCellHeight += m_grid[lastRowWithValidHeight].rowRenderer ? spacing : 0;
+
+        if (rowWithOnlyRowSpanCells && rowSpanCellHeight < totalRowsHeight)
+            rowSpanCellHeight = totalRowsHeight;
+
+        if (rowWithOnlyRowSpanCells || (totalRowsHeight && rowSpanCellHeight > totalRowsHeight)) {
+            // Recalculating the height of rows based on rowSpan cell height if rowSpan cell height is more than total height of rows.
+            int remainHeight = rowSpanCellHeight;
+
+            if (!changedHeightApplied)
+                m_rowPos[rowIndex] += changedHeight;
+            for (unsigned row = rowIndex; row < (rowIndex + rowSpan); row++) {
+                int rowHeight = (rowSpanCellHeight * rowsHeight[row - rowIndex]) / totalRowsHeight;
+                remainHeight -= rowHeight;
+                m_rowPos[row + 1] = m_rowPos[row] + rowHeight + (m_grid[row].rowRenderer ? spacing : 0);
+            }
+            for (unsigned row = lastRowWithValidHeight; row < (rowIndex + rowSpan); row++)
+                m_rowPos[row + 1] += remainHeight;
+
+            changedHeight = (m_rowPos[rowIndex + rowSpan] - initialPos);
+            m_rowPos[rowIndex + rowSpan] -= changedHeight;
+        } else {
+            // Just apply changed height by previous rowSpan cells to rows in current rowSpan if it is not already applied.
+            if (!changedHeightApplied) {
+                for (unsigned row = rowIndex; row < rowIndex + rowSpan; row++)
+                    m_rowPos[row] += changedHeight;
+            } else
+                m_rowPos[rowIndex + rowSpan] -= changedHeight;
+        }
+    }
+
+    unsigned totalRows = m_grid.size();
+
+    // Apply changed height by rowSpan cells to rows present at the end of the table
+    for (unsigned row = lastRowIndex + lastRowSpan; row <= totalRows; row++)
+        m_rowPos[row] += changedHeight;
+}
+
 int RenderTableSection::calcRowLogicalHeight()
 {
 #ifndef NDEBUG
@@ -275,6 +468,9 @@ int RenderTableSection::calcRowLogicalHeight()
 
     unsigned totalRows = m_grid.size();
 
+    // Keeps all rowSpan cells.
+    Vector<RenderTableCell*, 5> rowSpanCells;
+
     for (unsigned r = 0; r < totalRows; r++) {
         m_grid[r].baseline = 0;
         LayoutUnit baselineDescent = 0;
@@ -292,32 +488,23 @@ int RenderTableSection::calcRowLogicalHeight()
                 if (current.inColSpan && cell->rowSpan() == 1)
                     continue;
 
-                // FIXME: We are always adding the height of a rowspan to the last rows which doesn't match
-                // other browsers. See webkit.org/b/52185 for example.
-                if ((cell->rowIndex() + cell->rowSpan() - 1) != r) {
-                    // We will apply the height of the rowspan to the current row if next row is not valid.
-                    if ((r + 1) < totalRows) {
-                        unsigned col = 0;
-                        CellStruct nextRowCell = cellAt(r + 1, col);
-
-                        // We are trying to find that next row is valid or not.
-                        while (nextRowCell.cells.size() && nextRowCell.cells[0]->rowSpan() > 1 && nextRowCell.cells[0]->rowIndex() < (r + 1)) {
-                            col++;
-                            if (col < totalCols)
-                                nextRowCell = cellAt(r + 1, col);
-                            else
-                                break;
+                if (cell->rowSpan() > 1) {
+                    // Storing rowSpan cells if row and rowIndex are same.
+                    if (cell->rowIndex() == r) {
+                        rowSpanCells.append(cell);
+
+                        // Find out the baseline. The baseline is set on the first row in a rowSpan.
+                        if (cell->isBaselineAligned()) {
+                            LayoutUnit baselinePosition = cell->cellBaselinePosition();
+                            if (baselinePosition > cell->borderBefore() + cell->paddingBefore()) {
+                                m_grid[r].baseline = max(m_grid[r].baseline, baselinePosition);
+                                m_rowPos[r + 1] = max<int>(m_rowPos[r + 1], m_rowPos[r] + m_grid[r].baseline);
+                            }
                         }
-
-                        // We are adding the height of the rowspan to the current row if next row is not valid.
-                        if (col < totalCols && nextRowCell.cells.size())
-                            continue;
                     }
+                    continue;
                 }
 
-                // For row spanning cells, |r| is the last row in the span.
-                unsigned cellStartRow = cell->rowIndex();
-
                 if (cell->hasOverrideHeight()) {
                     if (!statePusher.didPush()) {
                         // Technically, we should also push state for the row, but since
@@ -331,22 +518,15 @@ int RenderTableSection::calcRowLogicalHeight()
                 }
 
                 int cellLogicalHeight = cell->logicalHeightForRowSizing();
-                m_rowPos[r + 1] = max(m_rowPos[r + 1], m_rowPos[cellStartRow] + cellLogicalHeight);
+                m_rowPos[r + 1] = max(m_rowPos[r + 1], m_rowPos[r] + cellLogicalHeight);
 
-                // Find out the baseline. The baseline is set on the first row in a rowspan.
+                // Find out the baseline.
                 if (cell->isBaselineAligned()) {
                     LayoutUnit baselinePosition = cell->cellBaselinePosition();
                     if (baselinePosition > cell->borderBefore() + cell->paddingBefore()) {
-                        m_grid[cellStartRow].baseline = max(m_grid[cellStartRow].baseline, baselinePosition);
-                        // The descent of a cell that spans multiple rows does not affect the height of the first row it spans, so don't let it
-                        // become the baseline descent applied to the rest of the row. Also we don't account for the baseline descent of
-                        // non-spanning cells when computing a spanning cell's extent.
-                        int cellStartRowBaselineDescent = 0;
-                        if (cell->rowSpan() == 1) {
-                            baselineDescent = max(baselineDescent, cellLogicalHeight - (baselinePosition - cell->intrinsicPaddingBefore()));
-                            cellStartRowBaselineDescent = baselineDescent;
-                        }
-                        m_rowPos[cellStartRow + 1] = max<int>(m_rowPos[cellStartRow + 1], m_rowPos[cellStartRow] + m_grid[cellStartRow].baseline + cellStartRowBaselineDescent);
+                        m_grid[r].baseline = max(m_grid[r].baseline, baselinePosition);
+                        baselineDescent = max(baselineDescent, cellLogicalHeight - (baselinePosition - cell->intrinsicPaddingBefore()));
+                        m_rowPos[r + 1] = max<int>(m_rowPos[r + 1], m_rowPos[r] + m_grid[r].baseline + baselineDescent);
                     }
                 }
             }
@@ -357,6 +537,10 @@ int RenderTableSection::calcRowLogicalHeight()
         m_rowPos[r + 1] = max(m_rowPos[r + 1], m_rowPos[r]);
     }
 
+    // Calculating and applying the height of the rows in rowSpan if any rowSpan cell present in the table.
+    if (!rowSpanCells.isEmpty())
+        distributeRowSpanHeightToRows(rowSpanCells);
+
     ASSERT(!needsLayout());
 
     statePusher.pop();
index 1e14b9a..b76cc35 100644 (file)
@@ -222,6 +222,8 @@ private:
 
     void ensureRows(unsigned);
 
+    void distributeRowSpanHeightToRows(Vector<RenderTableCell*, 5>& rowSpanCells);
+
     void distributeExtraLogicalHeightToPercentRows(int& extraLogicalHeight, int totalPercent);
     void distributeExtraLogicalHeightToAutoRows(int& extraLogicalHeight, unsigned autoRowsCount);
     void distributeRemainingExtraLogicalHeight(int& extraLogicalHeight);