Title: [128517] trunk
Revision
128517
Author
[email protected]
Date
2012-09-13 15:56:07 -0700 (Thu, 13 Sep 2012)

Log Message

percentage heights in quirks mode with auto-sized body are computed incorrectly
https://bugs.webkit.org/show_bug.cgi?id=96426

Reviewed by Tony Chang.

Source/WebCore:

In quirks mode, for the body element, we need to keep walking up to the html element
if the body's height is auto. Also, we need to subtract the body/html elements
margin/border/padding so that we properly get the body's content height.

This behavior matches IE9, FF and Opera.

None of this applies to standards mode since we don't walk up the
containingBlock chain for auto-sized elements.

Test: fast/css/percentage-height-auto-sized-body-quirks.html

* rendering/RenderBox.cpp:
(WebCore::RenderBox::computePercentageLogicalHeight):

LayoutTests:

* fast/css/percentage-height-auto-sized-body-quirks-expected.txt: Added.
* fast/css/percentage-height-auto-sized-body-quirks.html: Added.
Verified that this matches IE9, FF15 and Opera12.

* fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks-expected.txt:
* platform/chromium-linux/fast/table/height-percent-test-expected.png:
* platform/chromium-linux/tables/mozilla/core/cell_heights-expected.png:
* platform/chromium-linux/tables/mozilla_expected_failures/bugs/bug19526-expected.png:
* platform/chromium-linux/tables/mozilla_expected_failures/bugs/bug85016-expected.png:
* platform/chromium-win/tables/mozilla/core/cell_heights-expected.txt:
* platform/chromium-win/tables/mozilla_expected_failures/bugs/bug19526-expected.txt:
* platform/chromium-win/tables/mozilla_expected_failures/bugs/bug85016-expected.txt:
* platform/mac/fast/table/height-percent-test-expected.txt:
Verified that all the changes match FF15.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (128516 => 128517)


--- trunk/LayoutTests/ChangeLog	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/ChangeLog	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1,5 +1,27 @@
 2012-09-13  Ojan Vafai  <[email protected]>
 
+        percentage heights in quirks mode with auto-sized body are computed incorrectly
+        https://bugs.webkit.org/show_bug.cgi?id=96426
+
+        Reviewed by Tony Chang.
+
+        * fast/css/percentage-height-auto-sized-body-quirks-expected.txt: Added.
+        * fast/css/percentage-height-auto-sized-body-quirks.html: Added.
+        Verified that this matches IE9, FF15 and Opera12.
+
+        * fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks-expected.txt:
+        * platform/chromium-linux/fast/table/height-percent-test-expected.png:
+        * platform/chromium-linux/tables/mozilla/core/cell_heights-expected.png:
+        * platform/chromium-linux/tables/mozilla_expected_failures/bugs/bug19526-expected.png:
+        * platform/chromium-linux/tables/mozilla_expected_failures/bugs/bug85016-expected.png:
+        * platform/chromium-win/tables/mozilla/core/cell_heights-expected.txt:
+        * platform/chromium-win/tables/mozilla_expected_failures/bugs/bug19526-expected.txt:
+        * platform/chromium-win/tables/mozilla_expected_failures/bugs/bug85016-expected.txt:
+        * platform/mac/fast/table/height-percent-test-expected.txt:
+        Verified that all the changes match FF15.
+
+2012-09-13  Ojan Vafai  <[email protected]>
+
         fast/table/bad-replaced-sizing-preferred-logical-widths.html is failing on Mac, Chromium-Mac, GTK, EFL
         https://bugs.webkit.org/show_bug.cgi?id=96594
 

Added: trunk/LayoutTests/fast/css/percentage-height-auto-sized-body-quirks-expected.txt (0 => 128517)


--- trunk/LayoutTests/fast/css/percentage-height-auto-sized-body-quirks-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/css/percentage-height-auto-sized-body-quirks-expected.txt	2012-09-13 22:56:07 UTC (rev 128517)
@@ -0,0 +1 @@
+PASS

Added: trunk/LayoutTests/fast/css/percentage-height-auto-sized-body-quirks.html (0 => 128517)


--- trunk/LayoutTests/fast/css/percentage-height-auto-sized-body-quirks.html	                        (rev 0)
+++ trunk/LayoutTests/fast/css/percentage-height-auto-sized-body-quirks.html	2012-09-13 22:56:07 UTC (rev 128517)
@@ -0,0 +1,14 @@
+<html style="height: 600px; margin: 10px;">
+<script src=""
+<script>
+if (window.testRunner)
+    testRunner.dumpAsText();
+</script>
+
+<body _onload_="checkLayout('#item')">
+
+<div style="height: 1000px"></div>
+<div id="item" style="height: 100%; background-color: salmon" data-expected-height=584></div>
+
+</body>
+</html>

Modified: trunk/LayoutTests/fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks-expected.txt (128516 => 128517)


--- trunk/LayoutTests/fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks-expected.txt	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks-expected.txt	2012-09-13 22:56:07 UTC (rev 128517)
@@ -25,13 +25,8 @@
         </div>
     </div>
 </div>
+PASS
 FAIL:
-Expected 584 for height, but got 1447. 
-
-<div class="container" style="width: auto; height: auto; float: left;">
-    <div class="item" style="width: 100%; height: 100%;" data-expected-height="584" data-expected-width="0"></div>
-</div>
-FAIL:
 Expected 584 for height, but got 600. 
 
 <div class="container" style="width: auto; height: auto; float: left;">

Modified: trunk/LayoutTests/fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks.html (128516 => 128517)


--- trunk/LayoutTests/fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks.html	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks.html	2012-09-13 22:56:07 UTC (rev 128517)
@@ -71,7 +71,6 @@
     </div>
 </div>
 
-<!-- FIXME: We incorrectly use the size of the body element for calculating the percentage height. https://bugs.webkit.org/show_bug.cgi?id=96426 --> 
 <div class="container" style="width: auto; height: auto; float: left;">
     <div class="item" style="width: 100%; height: 100%;" data-expected-height=584 data-expected-width=0></div>
 </div>

Modified: trunk/LayoutTests/platform/chromium/TestExpectations (128516 => 128517)


--- trunk/LayoutTests/platform/chromium/TestExpectations	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/chromium/TestExpectations	2012-09-13 22:56:07 UTC (rev 128517)
@@ -3626,6 +3626,11 @@
 
 BUGWK96524 WIN LINUX DEBUG : fast/filesystem/workers/detached-frame-crash.html = PASS CRASH
 
+BUG_OJAN WIN MAC : fast/table/height-percent-test.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN WIN MAC : tables/mozilla/core/cell_heights.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN WIN MAC : tables/mozilla_expected_failures/bugs/bug19526.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN WIN MAC : tables/mozilla_expected_failures/bugs/bug85016.html = TEXT IMAGE+TEXT IMAGE
+
 BUGWK96549 MAC : platform/chromium/virtual/gpu/fast/hidpi/focus-rings.html = IMAGE
 BUGWK96549 MAC : platform/chromium/virtual/gpu/fast/hidpi/video-controls-in-hidpi.html = IMAGE
 BUGWK96628 LION : fast/frames/calculate-order.html = PASS TEXT

Modified: trunk/LayoutTests/platform/chromium-linux/fast/table/height-percent-test-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/chromium-linux/tables/mozilla/core/cell_heights-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/chromium-linux/tables/mozilla_expected_failures/bugs/bug19526-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/chromium-linux/tables/mozilla_expected_failures/bugs/bug85016-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/chromium-win/tables/mozilla/core/cell_heights-expected.txt (128516 => 128517)


--- trunk/LayoutTests/platform/chromium-win/tables/mozilla/core/cell_heights-expected.txt	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/chromium-win/tables/mozilla/core/cell_heights-expected.txt	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1,8 +1,8 @@
-layer at (0,0) size 785x15840
+layer at (0,0) size 785x4366
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x15840
-  RenderBlock {HTML} at (0,0) size 785x15840
-    RenderBody {BODY} at (8,8) size 769x15824
+layer at (0,0) size 785x4366
+  RenderBlock {HTML} at (0,0) size 785x4366
+    RenderBody {BODY} at (8,8) size 769x4350
       RenderTable {TABLE} at (0,0) size 39x584 [bgcolor=#0000FF] [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 37x582
           RenderTableRow {TR} at (0,2) size 37x114
@@ -88,19 +88,19 @@
                 text run at (2,2) width 37: "100%"
       RenderBlock (anonymous) at (0,1668) size 769x20
         RenderBR {BR} at (0,0) size 0x19
-      RenderTable {TABLE} at (0,1688) size 39x1688 [bgcolor=#FFA500] [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 37x1686
-          RenderTableRow {TR} at (0,2) size 37x335
-            RenderTableCell {TD} at (2,157) size 33x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+      RenderTable {TABLE} at (0,1688) size 39x584 [bgcolor=#FFA500] [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 37x582
+          RenderTableRow {TR} at (0,2) size 37x114
+            RenderTableCell {TD} at (2,47) size 33x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 29x19
                 text run at (2,2) width 29: "20%"
-          RenderTableRow {TR} at (0,339) size 37x1345
-            RenderTableCell {TD} at (2,999) size 33x24 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,118) size 37x462
+            RenderTableCell {TD} at (2,337) size 33x24 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 29x19
                 text run at (2,2) width 29: "80%"
-      RenderBlock (anonymous) at (0,3376) size 769x20
+      RenderBlock (anonymous) at (0,2272) size 769x20
         RenderBR {BR} at (0,0) size 0x19
-      RenderTable {TABLE} at (0,3396) size 61x206 [bgcolor=#808080] [border: (1px outset #808080)]
+      RenderTable {TABLE} at (0,2292) size 61x206 [bgcolor=#808080] [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 59x204
           RenderTableRow {TR} at (0,2) size 59x200
             RenderTableCell {TD} at (2,90) size 25x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
@@ -109,9 +109,9 @@
             RenderTableCell {TD} at (29,90) size 28x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 24x19
                 text run at (2,2) width 24: "200"
-      RenderBlock (anonymous) at (0,3602) size 769x20
+      RenderBlock (anonymous) at (0,2498) size 769x20
         RenderBR {BR} at (0,0) size 0x19
-      RenderTable {TABLE} at (0,3622) size 61x198 [bgcolor=#FFA500] [border: (1px outset #808080)]
+      RenderTable {TABLE} at (0,2518) size 61x198 [bgcolor=#FFA500] [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 59x196
           RenderTableRow {TR} at (0,2) size 59x192
             RenderTableCell {TD} at (2,86) size 33x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
@@ -120,46 +120,46 @@
             RenderTableCell {TD} at (37,86) size 20x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 16x19
                 text run at (2,2) width 16: "20"
-      RenderBlock (anonymous) at (0,3820) size 769x20
+      RenderBlock (anonymous) at (0,2716) size 769x20
         RenderBR {BR} at (0,0) size 0x19
-      RenderTable {TABLE} at (0,3840) size 39x3839 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 37x3837
-          RenderTableRow {TR} at (0,2) size 37x537
-            RenderTableCell {TD} at (2,258) size 33x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+      RenderTable {TABLE} at (0,2736) size 39x584 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 37x582
+          RenderTableRow {TR} at (0,2) size 37x500
+            RenderTableCell {TD} at (2,240) size 33x24 [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: "500"
-          RenderTableRow {TR} at (0,541) size 37x3294
-            RenderTableCell {TD} at (2,2176) size 33x24 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,504) size 37x76
+            RenderTableCell {TD} at (2,530) size 33x24 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 29x19
                 text run at (2,2) width 29: "80%"
-      RenderBlock (anonymous) at (0,7679) size 769x20
+      RenderBlock (anonymous) at (0,3320) size 769x20
         RenderBR {BR} at (0,0) size 0x19
-      RenderTable {TABLE} at (0,7699) size 100x7699 [bgcolor=#FF0000] [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 98x7697
-          RenderTableRow {TR} at (0,2) size 98x2413
-            RenderTableCell {TD} at (2,2629) size 30x24 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
+      RenderTable {TABLE} at (0,3340) size 100x584 [bgcolor=#FF0000] [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 98x582
+          RenderTableRow {TR} at (0,2) size 98x41
+            RenderTableCell {TD} at (2,257) size 30x24 [border: (1px inset #808080)] [r=0 c=0 rs=2 cs=1]
               RenderText {#text} at (2,2) size 24x19
                 text run at (2,2) width 24: "500"
-            RenderTableCell {TD} at (34,1196) size 30x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (34,10) size 30x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 26x19
                 text run at (2,2) width 26: "auto"
-          RenderTableRow {TR} at (0,2417) size 98x2863
-            RenderTableCell {TD} at (34,3836) size 30x24 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+          RenderTableRow {TR} at (0,45) size 98x491
+            RenderTableCell {TD} at (34,278) size 30x24 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 26x19
                 text run at (2,2) width 26: "auto"
-            RenderTableCell {TD} at (66,3836) size 30x24 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (66,278) size 30x24 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 26x19
                 text run at (2,2) width 26: "auto"
-          RenderTableRow {TR} at (0,5282) size 98x2413
-            RenderTableCell {TD} at (2,6476) size 30x24 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,538) size 98x42
+            RenderTableCell {TD} at (2,547) size 30x24 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 26x19
                 text run at (2,2) width 26: "auto"
-            RenderTableCell {TD} at (34,6476) size 30x24 [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (34,547) size 30x24 [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 26x19
                 text run at (2,2) width 26: "auto"
-      RenderBlock (anonymous) at (0,15398) size 769x20
+      RenderBlock (anonymous) at (0,3924) size 769x20
         RenderBR {BR} at (0,0) size 0x19
-      RenderTable {TABLE} at (0,15418) size 53x406 [bgcolor=#FFA500] [border: (1px outset #808080)]
+      RenderTable {TABLE} at (0,3944) size 53x406 [bgcolor=#FFA500] [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 51x404
           RenderTableRow {TR} at (0,2) size 51x400
             RenderTableCell {TD} at (2,2) size 47x400 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]

Modified: trunk/LayoutTests/platform/chromium-win/tables/mozilla_expected_failures/bugs/bug19526-expected.txt (128516 => 128517)


--- trunk/LayoutTests/platform/chromium-win/tables/mozilla_expected_failures/bugs/bug19526-expected.txt	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/chromium-win/tables/mozilla_expected_failures/bugs/bug19526-expected.txt	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1,8 +1,8 @@
-layer at (0,0) size 785x1344
+layer at (0,0) size 785x1272
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x1344
-  RenderBlock {HTML} at (0,0) size 785x1344
-    RenderBody {BODY} at (8,8) size 769x1328
+layer at (0,0) size 785x1272
+  RenderBlock {HTML} at (0,0) size 785x1272
+    RenderBody {BODY} at (8,8) size 769x1256
       RenderBlock {P} at (0,0) size 769x20
         RenderText {#text} at (0,0) size 335x19
           text run at (0,0) width 335: "100 percent height table inside 100 percent height table:"
@@ -25,19 +25,19 @@
       RenderBlock {P} at (0,636) size 769x20
         RenderText {#text} at (0,0) size 327x19
           text run at (0,0) width 327: "50 percent height table inside 100 percent height table:"
-      RenderTable {TABLE} at (0,672) size 769x656 [bgcolor=#808080] [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 767x654
-          RenderTableRow {TR} at (0,2) size 767x650
-            RenderTableCell {TD} at (2,163) size 381x327 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-              RenderTable {TABLE} at (2,2) size 377x323 [bgcolor=#FFFF00] [border: (1px outset #808080)]
-                RenderTableSection {TBODY} at (1,1) size 375x321
-                  RenderTableRow {TR} at (0,2) size 375x317
-                    RenderTableCell {TD} at (2,148) size 185x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+      RenderTable {TABLE} at (0,672) size 769x584 [bgcolor=#808080] [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 767x582
+          RenderTableRow {TR} at (0,2) size 767x578
+            RenderTableCell {TD} at (2,145) size 381x291 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTable {TABLE} at (2,2) size 377x287 [bgcolor=#FFFF00] [border: (1px outset #808080)]
+                RenderTableSection {TBODY} at (1,1) size 375x285
+                  RenderTableRow {TR} at (0,2) size 375x281
+                    RenderTableCell {TD} at (2,130) size 185x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                       RenderText {#text} at (2,2) size 126x19
                         text run at (2,2) width 126: " Inner Table (yellow)"
-                    RenderTableCell {TD} at (189,148) size 184x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                    RenderTableCell {TD} at (189,130) size 184x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                       RenderText {#text} at (2,2) size 4x19
                         text run at (2,2) width 4: " "
-            RenderTableCell {TD} at (385,315) size 380x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (385,279) size 380x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (2,2) size 117x19
                 text run at (2,2) width 117: " Outer Table (grey)"

Modified: trunk/LayoutTests/platform/chromium-win/tables/mozilla_expected_failures/bugs/bug85016-expected.txt (128516 => 128517)


--- trunk/LayoutTests/platform/chromium-win/tables/mozilla_expected_failures/bugs/bug85016-expected.txt	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/chromium-win/tables/mozilla_expected_failures/bugs/bug85016-expected.txt	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1,8 +1,8 @@
-layer at (0,0) size 960x2988
+layer at (0,0) size 960x2063
   RenderView at (0,0) size 785x585
-layer at (0,0) size 785x2988
-  RenderBlock {HTML} at (0,0) size 785x2988
-    RenderBody {BODY} at (32,32) size 721x2924
+layer at (0,0) size 785x2063
+  RenderBlock {HTML} at (0,0) size 785x2063
+    RenderBody {BODY} at (32,32) size 721x1999
       RenderBlock {DIV} at (32,0) size 657x653 [border: (1px solid #008000)]
         RenderBlock {DIV} at (33,33) size 591x587 [border: (1px solid #FF0000)]
           RenderImage {IMG} at (1,1) size 589x585
@@ -17,9 +17,9 @@
       RenderBlock {P} at (0,1426) size 721x20
         RenderText {#text} at (0,0) size 443x19
           text run at (0,0) width 443: "percentage height image in table cell (red), in a DIV with no height (green)"
-      RenderBlock {DIV} at (32,1478) size 657x1446
-        RenderTable {TABLE} at (0,0) size 260x1446 [border: (1px solid #FF0000)]
-          RenderTableSection {TBODY} at (1,1) size 258x1444
-            RenderTableRow {TR} at (0,2) size 258x1440
-              RenderTableCell {TD} at (2,635) size 254x174 [border: (1px solid #FF0000)] [r=0 c=0 rs=1 cs=1]
+      RenderBlock {DIV} at (32,1478) size 657x521
+        RenderTable {TABLE} at (0,0) size 260x521 [border: (1px solid #FF0000)]
+          RenderTableSection {TBODY} at (1,1) size 258x519
+            RenderTableRow {TR} at (0,2) size 258x515
+              RenderTableCell {TD} at (2,172) size 254x174 [border: (1px solid #FF0000)] [r=0 c=0 rs=1 cs=1]
                 RenderImage {IMG} at (2,2) size 250x170

Modified: trunk/LayoutTests/platform/efl/TestExpectations (128516 => 128517)


--- trunk/LayoutTests/platform/efl/TestExpectations	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/efl/TestExpectations	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1047,6 +1047,10 @@
 // EFL does not yet support global selection
 BUGWK88238 SKIP : editing/pasteboard/paste-global-selection.html = TEXT
 
+BUG_OJAN : fast/table/height-percent-test.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla/core/cell_heights.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla_expected_failures/bugs/bug19526.html = TEXT IMAGE+TEXT IMAGE
+
 // Fails after r128270.
 BUGWK96517 : fast/events/popup-blocking-timers.html = TEXT
 

Modified: trunk/LayoutTests/platform/gtk/TestExpectations (128516 => 128517)


--- trunk/LayoutTests/platform/gtk/TestExpectations	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/gtk/TestExpectations	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1374,6 +1374,11 @@
 
 BUGWK96594 : fast/table/bad-replaced-sizing-preferred-logical-widths.html = TEXT
 
+BUG_OJAN : fast/table/height-percent-test.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla/core/cell_heights.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla_expected_failures/bugs/bug19526.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla_expected_failures/bugs/bug85016.html = TEXT IMAGE+TEXT IMAGE
+
 BUGWK73003 DEBUG : editing/spelling/spellcheck-async.html = TEXT
 BUGWK73003 DEBUG : editing/spelling/spellcheck-paste.html = PASS
 BUGWK50740 DEBUG : editing/spelling/spellcheck-queue.html = TEXT

Modified: trunk/LayoutTests/platform/mac/TestExpectations (128516 => 128517)


--- trunk/LayoutTests/platform/mac/TestExpectations	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2012-09-13 22:56:07 UTC (rev 128517)
@@ -355,6 +355,10 @@
 // (r128375) new test fails on Mac
 BUGWK96583 : fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks.html = TEXT
 
+BUG_OJAN : fast/table/height-percent-test.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla/core/cell_heights.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla_expected_failures/bugs/bug19526.html = TEXT IMAGE+TEXT IMAGE
+
 // New test added in r128389
 BUGWK96594 : fast/table/bad-replaced-sizing-preferred-logical-widths.html = TEXT
 

Modified: trunk/LayoutTests/platform/mac/fast/table/height-percent-test-expected.txt (128516 => 128517)


--- trunk/LayoutTests/platform/mac/fast/table/height-percent-test-expected.txt	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/mac/fast/table/height-percent-test-expected.txt	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1,8 +1,8 @@
-layer at (0,0) size 785x1374
+layer at (0,0) size 785x1304
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x1374
-  RenderBlock {HTML} at (0,0) size 785x1374
-    RenderBody {BODY} at (8,16) size 769x1342
+layer at (0,0) size 785x1304
+  RenderBlock {HTML} at (0,0) size 785x1304
+    RenderBody {BODY} at (8,16) size 769x1272
       RenderBlock {DIV} at (16,0) size 737x26 [border: (1px solid #000000)]
         RenderBlock (floating) {DIV} at (1,1) size 100x24
           RenderBlock {DIV} at (0,0) size 100x24 [bgcolor=#008000]
@@ -13,13 +13,13 @@
               RenderTableRow {TR} at (0,0) size 96x24
                 RenderTableCell {TD} at (0,1) size 96x22 [r=0 c=0 rs=1 cs=1]
                   RenderImage {IMG} at (0,0) size 96x22 [bgcolor=#008000]
-      RenderBlock {DIV} at (16,84) size 737x578 [border: (1px solid #000000)]
-        RenderBlock {DIV} at (1,1) size 735x576
-          RenderBlock {DIV} at (0,0) size 100x576 [bgcolor=#008000]
-      RenderBlock {DIV} at (16,678) size 737x664 [border: (1px solid #000000)]
-        RenderBlock {DIV} at (1,1) size 735x662
-          RenderTable {TABLE} at (0,0) size 96x662 [bgcolor=#FF0000]
-            RenderTableSection {TBODY} at (0,0) size 96x662
-              RenderTableRow {TR} at (0,0) size 96x662
-                RenderTableCell {TD} at (0,320) size 96x22 [r=0 c=0 rs=1 cs=1]
+      RenderBlock {DIV} at (16,84) size 737x586 [border: (1px solid #000000)]
+        RenderBlock {DIV} at (1,1) size 735x584
+          RenderBlock {DIV} at (0,0) size 100x584 [bgcolor=#008000]
+      RenderBlock {DIV} at (16,686) size 737x586 [border: (1px solid #000000)]
+        RenderBlock {DIV} at (1,1) size 735x584
+          RenderTable {TABLE} at (0,0) size 96x584 [bgcolor=#FF0000]
+            RenderTableSection {TBODY} at (0,0) size 96x584
+              RenderTableRow {TR} at (0,0) size 96x584
+                RenderTableCell {TD} at (0,281) size 96x22 [r=0 c=0 rs=1 cs=1]
                   RenderImage {IMG} at (0,0) size 96x22 [bgcolor=#008000]

Modified: trunk/LayoutTests/platform/qt/TestExpectations (128516 => 128517)


--- trunk/LayoutTests/platform/qt/TestExpectations	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/LayoutTests/platform/qt/TestExpectations	2012-09-13 22:56:07 UTC (rev 128517)
@@ -133,6 +133,11 @@
 // This has always failed on Qt - exposed by bug 89826
 BUGWK94004 : css2.1/20110323/c541-word-sp-000.htm = IMAGE
 
+BUG_OJAN : fast/table/height-percent-test.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla/core/cell_heights.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla_expected_failures/bugs/bug19526.html = TEXT IMAGE+TEXT IMAGE
+BUG_OJAN : tables/mozilla_expected_failures/bugs/bug85016.html = TEXT IMAGE+TEXT IMAGE
+
 // Added by bug 89826
 BUGWK94005 : css2.1/20110323/word-spacing-remove-space-003.htm = IMAGE
 BUGWK94005 : css2.1/20110323/word-spacing-remove-space-006.htm = IMAGE

Modified: trunk/Source/WebCore/ChangeLog (128516 => 128517)


--- trunk/Source/WebCore/ChangeLog	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/Source/WebCore/ChangeLog	2012-09-13 22:56:07 UTC (rev 128517)
@@ -1,3 +1,24 @@
+2012-09-13  Ojan Vafai  <[email protected]>
+
+        percentage heights in quirks mode with auto-sized body are computed incorrectly
+        https://bugs.webkit.org/show_bug.cgi?id=96426
+
+        Reviewed by Tony Chang.
+
+        In quirks mode, for the body element, we need to keep walking up to the html element
+        if the body's height is auto. Also, we need to subtract the body/html elements
+        margin/border/padding so that we properly get the body's content height.
+
+        This behavior matches IE9, FF and Opera.
+
+        None of this applies to standards mode since we don't walk up the
+        containingBlock chain for auto-sized elements.
+
+        Test: fast/css/percentage-height-auto-sized-body-quirks.html
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::computePercentageLogicalHeight):
+
 2012-09-13  Adrienne Walker  <[email protected]>
 
         Hide all ancestors of the full screen element when going full screen

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (128516 => 128517)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2012-09-13 22:52:22 UTC (rev 128516)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2012-09-13 22:56:07 UTC (rev 128517)
@@ -2130,9 +2130,12 @@
     // only at explicit containers.
     bool skippedAutoHeightContainingBlock = false;
     RenderBlock* cb = containingBlock();
-    while (!cb->isRenderView() && !cb->isBody() && !cb->isTableCell() && !cb->isOutOfFlowPositioned() && cb->style()->logicalHeight().isAuto() && isHorizontalWritingMode() == cb->isHorizontalWritingMode()) {
+    LayoutUnit rootMarginBorderPaddingHeight = 0;
+    while (!cb->isRenderView() && !cb->isTableCell() && !cb->isOutOfFlowPositioned() && cb->style()->logicalHeight().isAuto() && isHorizontalWritingMode() == cb->isHorizontalWritingMode()) {
         if (!document()->inQuirksMode() && !cb->isAnonymousBlock())
             break;
+        if (cb->isBody() || cb->isRoot())
+            rootMarginBorderPaddingHeight += cb->marginBefore() + cb->marginAfter() + cb->borderAndPaddingLogicalHeight();
         skippedAutoHeightContainingBlock = true;
         cb = cb->containingBlock();
         cb->addPercentHeightDescendant(const_cast<RenderBox*>(this));
@@ -2182,7 +2185,7 @@
             LayoutUnit contentBoxHeightWithScrollbar = cb->adjustContentBoxLogicalHeightForBoxSizing(heightWithScrollbar);
             availableHeight = max<LayoutUnit>(0, contentBoxHeightWithScrollbar - cb->scrollbarLogicalHeight());
         }
-    } else if (cb->isRenderView() || (cb->isBody() && document()->inQuirksMode()) || isOutOfFlowPositionedWithSpecifiedHeight) {
+    } else if (cb->isRenderView() || isOutOfFlowPositionedWithSpecifiedHeight) {
         // Don't allow this to affect the block' height() member variable, since this
         // can get called while the block is still laying out its kids.
         LayoutUnit oldHeight = cb->logicalHeight();
@@ -2194,6 +2197,8 @@
     if (availableHeight == -1)
         return availableHeight;
 
+    availableHeight -= rootMarginBorderPaddingHeight;
+
     LayoutUnit result = valueForLength(height, availableHeight);
     if (includeBorderPadding) {
         // FIXME: Table cells should default to box-sizing: border-box so we can avoid this hack.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to