Title: [151451] trunk
Revision
151451
Author
rob...@webkit.org
Date
2013-06-11 12:03:09 -0700 (Tue, 11 Jun 2013)

Log Message

Positioned Replaced Elements That Aren't RenderReplaced get Incorrect Width
https://bugs.webkit.org/show_bug.cgi?id=93735

Reviewed by Darin Adler.

Source/WebCore:

Replaced elements that aren't RenderReplaced aren't |isReplaced| and don't have an
intrinsic height or width. This causes them to go down the wrong height and width computation
path in RenderBox when they are absolute positioned.

The notion of |isReplaced| is entwined with the notion of being |isInline| so it isn't really
possible to make them isReplaced without re-wiring a lot of code. So instead use an ad-hoc definition
of isReplacedElement in RenderBox to bring all replaced elements into the height and width calculation.
To make sure we get the right height and width in there, give non-RenderReplaced replaced renderers
the helpers for returning their approximation of intrinsic height and width.

Test: fast/replaced/width-and-height-of-positioned-replaced-elements.html

* rendering/RenderBox.cpp:
(WebCore::isReplacedElement):
(WebCore::RenderBox::computePositionedLogicalWidth):
(WebCore::RenderBox::computePositionedLogicalHeight):
* rendering/RenderBox.h:
(WebCore::RenderBox::intrinsicSize):
* rendering/RenderButton.h:
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::RenderListBox):
(WebCore::RenderListBox::computeLogicalHeight):
* rendering/RenderListBox.h:
* rendering/RenderMenuList.h:
* rendering/RenderReplaced.h:
* rendering/RenderTextControl.cpp:
(WebCore::RenderTextControl::RenderTextControl):
(WebCore::RenderTextControl::computeLogicalHeight):
* rendering/RenderTextControl.h:

LayoutTests:

* fast/forms/onselect-textfield-expected.txt:
* fast/replaced/width-and-height-of-positioned-replaced-elements-expected.png: Added.
* fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt: Added.
* fast/replaced/width-and-height-of-positioned-replaced-elements.html: Added.
* platform/mac-wk2/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt: Added.
* platform/mac/fast/forms/button-positioned-expected.txt:
* platform/mac/fast/forms/input-appearance-preventDefault-expected.txt:
* platform/mac/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt: Added.
* platform/qt/fast/forms/button-positioned-expected.txt:
* platform/qt/fast/forms/input-appearance-preventDefault-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (151450 => 151451)


--- trunk/LayoutTests/ChangeLog	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/LayoutTests/ChangeLog	2013-06-11 19:03:09 UTC (rev 151451)
@@ -1,3 +1,21 @@
+2013-05-27  Robert Hogan  <rob...@webkit.org>
+
+        Positioned Replaced Elements That Aren't RenderReplaced get Incorrect Width
+        https://bugs.webkit.org/show_bug.cgi?id=93735
+
+        Reviewed by Darin Adler.
+
+        * fast/forms/onselect-textfield-expected.txt:
+        * fast/replaced/width-and-height-of-positioned-replaced-elements-expected.png: Added.
+        * fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt: Added.
+        * fast/replaced/width-and-height-of-positioned-replaced-elements.html: Added.
+        * platform/mac-wk2/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt: Added.
+        * platform/mac/fast/forms/button-positioned-expected.txt:
+        * platform/mac/fast/forms/input-appearance-preventDefault-expected.txt:
+        * platform/mac/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt: Added.
+        * platform/qt/fast/forms/button-positioned-expected.txt:
+        * platform/qt/fast/forms/input-appearance-preventDefault-expected.txt:
+
 2013-06-11  Robert Hogan  <rob...@webkit.org>
 
         Add baselines for test added in r151444

Modified: trunk/LayoutTests/fast/forms/onselect-textfield-expected.txt (151450 => 151451)


--- trunk/LayoutTests/fast/forms/onselect-textfield-expected.txt	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/LayoutTests/fast/forms/onselect-textfield-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -9,11 +9,11 @@
 
 Double clicking to make selection for text field
 onselect fired for text field
-After double clicking: text field selection start: 6 end: 10
+After double clicking: text field selection start: 0 end: 5
 
 Calling blur on text field
-After blur: text field selection start: 6 end: 10
+After blur: text field selection start: 0 end: 5
 
 Calling focus on text field
-After focus: text field selection start: 6 end: 10
+After focus: text field selection start: 0 end: 5
 

Added: trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.png


(Binary files differ)
Property changes on: trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt (0 => 151451)


--- trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -0,0 +1,25 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x51
+  RenderBlock {HTML} at (0,0) size 800x51
+    RenderBody {BODY} at (8,16) size 784x19
+      RenderBlock {P} at (0,0) size 784x19
+        RenderText {#text} at (0,0) size 581x19
+          text run at (0,0) width 581: "webkit.org/b/93735: Use the replaced height and width computation for positioned form controls"
+layer at (7,32) size 408x28
+  RenderTextControl {INPUT} at (7,32) size 408x28
+layer at (9,36) size 404x20
+  RenderBlock {DIV} at (2,4) size 404x20
+layer at (7,82) size 56x34
+  RenderButton {INPUT} at (7,82) size 56x34 [bgcolor=#C0C0C0]
+    RenderBlock (anonymous) at (6,6) size 44x24
+      RenderText at (6,0) size 32x24
+        text run at (6,0) width 32: "text"
+layer at (7,132) size 136x28
+  RenderMenuList {SELECT} at (7,132) size 136x28 [bgcolor=#FFFFFF]
+    RenderBlock (anonymous) at (4,4) size 108x20
+      RenderText at (0,0) size 80x20
+        text run at (0,0) width 80: "test"
+layer at (7,182) size 423x48
+  RenderTextControl {TEXTAREA} at (7,182) size 423x48
+    RenderBlock {DIV} at (2,2) size 419x20
Property changes on: trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements.html (0 => 151451)


--- trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements.html	                        (rev 0)
+++ trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements.html	2013-06-11 19:03:09 UTC (rev 151451)
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+input, select, textarea {
+    left: 5px;
+    right: 5px;
+    position: absolute;
+    font: 20px/1 Ahem;
+}
+</style>
+</head>
+<body>
+    <p> webkit.org/b/93735: Use the replaced height and width computation for positioned form controls </p>
+    <input id="input" style="top: 30px">
+    <input type="button" id="button" value="text" style="top: 80px">
+    <select id="select" style="top: 130px"><option>test</select>
+    <textarea id="textarea" style="top: 180px"></textarea>
+</body>
+</html>
Property changes on: trunk/LayoutTests/fast/replaced/width-and-height-of-positioned-replaced-elements.html
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/LayoutTests/platform/mac/fast/forms/button-positioned-expected.txt (151450 => 151451)


--- trunk/LayoutTests/platform/mac/fast/forms/button-positioned-expected.txt	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/LayoutTests/platform/mac/fast/forms/button-positioned-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -3,13 +3,13 @@
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-layer at (10,10) size 154x18
-  RenderButton {BUTTON} at (10,10) size 154x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-    RenderBlock (anonymous) at (8,2) size 138x13
-      RenderText {#text} at (0,0) size 138x13
-        text run at (0,0) width 138: "This button is positioned."
-layer at (10,10) size 175x18
-  RenderButton {INPUT} at (10,10) size 175x18 [bgcolor=#C0C0C0]
-    RenderBlock (anonymous) at (8,2) size 159x13
-      RenderText at (0,0) size 159x13
-        text run at (0,0) width 159: "This button is also positioned"
+layer at (10,10) size 170x15
+  RenderButton {BUTTON} at (10,10) size 170x15 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+    RenderBlock (anonymous) at (8,2) size 154x13
+      RenderText {#text} at (8,0) size 138x13
+        text run at (8,0) width 138: "This button is positioned."
+layer at (10,10) size 191x18
+  RenderButton {INPUT} at (10,10) size 191x18 [bgcolor=#C0C0C0]
+    RenderBlock (anonymous) at (8,2) size 175x13
+      RenderText at (8,0) size 159x13
+        text run at (8,0) width 159: "This button is also positioned"

Modified: trunk/LayoutTests/platform/mac/fast/forms/input-appearance-preventDefault-expected.txt (151450 => 151451)


--- trunk/LayoutTests/platform/mac/fast/forms/input-appearance-preventDefault-expected.txt	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/LayoutTests/platform/mac/fast/forms/input-appearance-preventDefault-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -8,10 +8,10 @@
         text run at (0,18) width 666: "This tests that preventDefault called onmousedown will prevent a caret from being placed in the text field."
       RenderText {#text} at (0,0) size 0x0
       RenderText {#text} at (0,0) size 0x0
-layer at (12,52) size 123x19
-  RenderTextControl {INPUT} at (12,52) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
-layer at (15,55) size 117x13 scrollWidth 130
-  RenderBlock {DIV} at (3,3) size 117x13
+layer at (12,52) size 129x25
+  RenderTextControl {INPUT} at (12,52) size 129x25 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+layer at (15,58) size 123x13 scrollWidth 130
+  RenderBlock {DIV} at (3,6) size 123x13
     RenderText {#text} at (0,0) size 129x13
       text run at (0,0) width 129: "No caret should be here"
 layer at (10,70) size 323x36

Added: trunk/LayoutTests/platform/mac/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt (0 => 151451)


--- trunk/LayoutTests/platform/mac/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -0,0 +1,25 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x50
+  RenderBlock {HTML} at (0,0) size 800x50
+    RenderBody {BODY} at (8,16) size 784x18
+      RenderBlock {P} at (0,0) size 784x18
+        RenderText {#text} at (0,0) size 608x18
+          text run at (0,0) width 608: "webkit.org/b/93735: Use the replaced height and width computation for positioned form controls"
+layer at (7,32) size 412x32
+  RenderTextControl {INPUT} at (7,32) size 412x32 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+layer at (10,38) size 406x20
+  RenderBlock {DIV} at (3,6) size 406x20
+layer at (7,82) size 57x21
+  RenderButton {INPUT} at (7,82) size 57x21 [bgcolor=#C0C0C0]
+    RenderBlock (anonymous) at (8,2) size 41x16
+      RenderText at (8,0) size 25x16
+        text run at (8,0) width 25: "text"
+layer at (7,132) size 55x21
+  RenderMenuList {SELECT} at (7,132) size 55x21 [bgcolor=#FFFFFF]
+    RenderBlock (anonymous) at (0,0) size 55x21
+      RenderText at (8,2) size 24x16
+        text run at (8,2) width 24: "test"
+layer at (7,182) size 427x52 clip at (8,183) size 425x50
+  RenderTextControl {TEXTAREA} at (7,182) size 427x52 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    RenderBlock {DIV} at (3,3) size 421x20
Property changes on: trunk/LayoutTests/platform/mac/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/platform/mac-wk2/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt (0 => 151451)


--- trunk/LayoutTests/platform/mac-wk2/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -0,0 +1,25 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x50
+  RenderBlock {HTML} at (0,0) size 800x50
+    RenderBody {BODY} at (8,16) size 784x18
+      RenderBlock {P} at (0,0) size 784x18
+        RenderText {#text} at (0,0) size 608x18
+          text run at (0,0) width 608: "webkit.org/b/93735: Use the replaced height and width computation for positioned form controls"
+layer at (7,32) size 412x32
+  RenderTextControl {INPUT} at (7,32) size 412x32 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+layer at (10,38) size 406x20
+  RenderBlock {DIV} at (3,6) size 406x20
+layer at (7,82) size 57x21
+  RenderButton {INPUT} at (7,82) size 57x21 [bgcolor=#C0C0C0]
+    RenderBlock (anonymous) at (8,2) size 41x16
+      RenderText at (8,0) size 25x16
+        text run at (8,0) width 25: "text"
+layer at (7,132) size 55x21
+  RenderMenuList {SELECT} at (7,132) size 55x21 [bgcolor=#FFFFFF]
+    RenderBlock (anonymous) at (0,0) size 55x21
+      RenderText at (8,2) size 24x16
+        text run at (8,2) width 24: "test"
+layer at (7,182) size 427x52 clip at (8,183) size 425x50
+  RenderTextControl {TEXTAREA} at (7,182) size 427x52 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    RenderBlock {DIV} at (3,3) size 421x20
Property changes on: trunk/LayoutTests/platform/mac-wk2/fast/replaced/width-and-height-of-positioned-replaced-elements-expected.txt
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/LayoutTests/platform/qt/fast/forms/button-positioned-expected.txt (151450 => 151451)


--- trunk/LayoutTests/platform/qt/fast/forms/button-positioned-expected.txt	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/LayoutTests/platform/qt/fast/forms/button-positioned-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -3,13 +3,13 @@
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-layer at (10,10) size 162x31
-  RenderButton {BUTTON} at (10,10) size 162x31 [bgcolor=#C0C0C0]
-    RenderBlock (anonymous) at (6,6) size 150x19
-      RenderText {#text} at (0,0) size 150x19
-        text run at (0,0) width 150: "This button is positioned."
-layer at (10,10) size 186x31
-  RenderButton {INPUT} at (10,10) size 186x31 [bgcolor=#C0C0C0]
-    RenderBlock (anonymous) at (6,6) size 174x19
-      RenderText at (0,0) size 174x19
-        text run at (0,0) width 174: "This button is also positioned"
+layer at (10,10) size 174x29
+  RenderButton {BUTTON} at (10,10) size 174x29 [bgcolor=#C0C0C0]
+    RenderBlock (anonymous) at (6,6) size 162x19
+      RenderText {#text} at (6,0) size 150x19
+        text run at (6,0) width 150: "This button is positioned."
+layer at (10,10) size 198x29
+  RenderButton {INPUT} at (10,10) size 198x29 [bgcolor=#C0C0C0]
+    RenderBlock (anonymous) at (6,6) size 186x19
+      RenderText at (6,0) size 174x19
+        text run at (6,0) width 174: "This button is also positioned"

Modified: trunk/LayoutTests/platform/qt/fast/forms/input-appearance-preventDefault-expected.txt (151450 => 151451)


--- trunk/LayoutTests/platform/qt/fast/forms/input-appearance-preventDefault-expected.txt	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/LayoutTests/platform/qt/fast/forms/input-appearance-preventDefault-expected.txt	2013-06-11 19:03:09 UTC (rev 151451)
@@ -8,10 +8,10 @@
         text run at (0,19) width 630: "This tests that preventDefault called onmousedown will prevent a caret from being placed in the text field."
       RenderText {#text} at (0,0) size 0x0
       RenderText {#text} at (0,0) size 0x0
-layer at (12,52) size 192x23
-  RenderTextControl {INPUT} at (12,52) size 192x23
-layer at (14,54) size 188x19
-  RenderBlock {DIV} at (2,2) size 188x19
+layer at (12,52) size 196x27
+  RenderTextControl {INPUT} at (12,52) size 196x27
+layer at (14,56) size 192x19
+  RenderBlock {DIV} at (2,4) size 192x19
     RenderText {#text} at (0,0) size 146x19
       text run at (0,0) width 146: "No caret should be here"
 layer at (10,70) size 308x38

Modified: trunk/Source/WebCore/ChangeLog (151450 => 151451)


--- trunk/Source/WebCore/ChangeLog	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/ChangeLog	2013-06-11 19:03:09 UTC (rev 151451)
@@ -1,3 +1,40 @@
+2013-05-27  Robert Hogan  <rob...@webkit.org>
+
+        Positioned Replaced Elements That Aren't RenderReplaced get Incorrect Width
+        https://bugs.webkit.org/show_bug.cgi?id=93735
+
+        Reviewed by Darin Adler.
+
+        Replaced elements that aren't RenderReplaced aren't |isReplaced| and don't have an 
+        intrinsic height or width. This causes them to go down the wrong height and width computation
+        path in RenderBox when they are absolute positioned. 
+        
+        The notion of |isReplaced| is entwined with the notion of being |isInline| so it isn't really 
+        possible to make them isReplaced without re-wiring a lot of code. So instead use an ad-hoc definition
+        of isReplacedElement in RenderBox to bring all replaced elements into the height and width calculation.
+        To make sure we get the right height and width in there, give non-RenderReplaced replaced renderers
+        the helpers for returning their approximation of intrinsic height and width.
+
+        Test: fast/replaced/width-and-height-of-positioned-replaced-elements.html
+
+        * rendering/RenderBox.cpp:
+        (WebCore::isReplacedElement):
+        (WebCore::RenderBox::computePositionedLogicalWidth):
+        (WebCore::RenderBox::computePositionedLogicalHeight):
+        * rendering/RenderBox.h:
+        (WebCore::RenderBox::intrinsicSize):
+        * rendering/RenderButton.h:
+        * rendering/RenderListBox.cpp:
+        (WebCore::RenderListBox::RenderListBox):
+        (WebCore::RenderListBox::computeLogicalHeight):
+        * rendering/RenderListBox.h:
+        * rendering/RenderMenuList.h:
+        * rendering/RenderReplaced.h:
+        * rendering/RenderTextControl.cpp:
+        (WebCore::RenderTextControl::RenderTextControl):
+        (WebCore::RenderTextControl::computeLogicalHeight):
+        * rendering/RenderTextControl.h:
+
 2013-06-11  Ryosuke Niwa  <rn...@webkit.org>
 
         There are unused variables in ApplyStyleCommand::mergeEndWithNextIfIdentical and ReplaceSelectionCommand::removeUnrenderedTextNodesAtEnds

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2013-06-11 19:03:09 UTC (rev 151451)
@@ -3034,9 +3034,15 @@
     }
 }
 
+static bool isReplacedElement(const RenderBox* child)
+{
+    // FIXME: Bug 117267, we should make form control elements isReplaced too so that we can just check for that.
+    return child->isReplaced() || (child->node() && child->node()->isElementNode() && toElement(child->node())->isFormControlElement() && !child->isFieldset());
+}
+
 void RenderBox::computePositionedLogicalWidth(LogicalExtentComputedValues& computedValues, RenderRegion* region) const
 {
-    if (isReplaced()) {
+    if (isReplacedElement(this)) {
         // FIXME: Positioned replaced elements inside a flow thread are not working properly
         // with variable width regions (see https://bugs.webkit.org/show_bug.cgi?id=69896 ).
         computePositionedLogicalWidthReplaced(computedValues);
@@ -3378,7 +3384,7 @@
 
 void RenderBox::computePositionedLogicalHeight(LogicalExtentComputedValues& computedValues) const
 {
-    if (isReplaced()) {
+    if (isReplacedElement(this)) {
         computePositionedLogicalHeightReplaced(computedValues);
         return;
     }

Modified: trunk/Source/WebCore/rendering/RenderBox.h (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderBox.h	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderBox.h	2013-06-11 19:03:09 UTC (rev 151451)
@@ -399,7 +399,6 @@
         return document()->inQuirksMode() && style()->logicalHeight().isAuto() && !isFloatingOrOutOfFlowPositioned() && (isRoot() || isBody()) && !document()->shouldDisplaySeamlesslyWithParent() && !isInline();
     }
 
-    virtual LayoutSize intrinsicSize() const { return LayoutSize(); }
     LayoutUnit intrinsicLogicalWidth() const { return style()->isHorizontalWritingMode() ? intrinsicSize().width() : intrinsicSize().height(); }
     LayoutUnit intrinsicLogicalHeight() const { return style()->isHorizontalWritingMode() ? intrinsicSize().height() : intrinsicSize().width(); }
 
@@ -641,6 +640,7 @@
 
     LayoutUnit viewLogicalHeightForPercentages() const;
 
+    virtual LayoutSize intrinsicSize() const { return LayoutSize(); }
     void computePositionedLogicalHeight(LogicalExtentComputedValues&) const;
     void computePositionedLogicalWidthUsing(Length logicalWidth, const RenderBoxModelObject* containerBlock, TextDirection containerDirection,
                                             LayoutUnit containerLogicalWidth, LayoutUnit bordersPlusPadding,

Modified: trunk/Source/WebCore/rendering/RenderButton.h (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderButton.h	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderButton.h	2013-06-11 19:03:09 UTC (rev 151451)
@@ -67,6 +67,8 @@
 
     void timerFired(Timer<RenderButton>*);
 
+    virtual LayoutSize intrinsicSize() const OVERRIDE FINAL { return LayoutSize(maxPreferredLogicalWidth(), LayoutUnit()); }
+
     RenderTextFragment* m_buttonText;
     RenderBlock* m_inner;
 

Modified: trunk/Source/WebCore/rendering/RenderListBox.cpp (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderListBox.cpp	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderListBox.cpp	2013-06-11 19:03:09 UTC (rev 151451)
@@ -89,6 +89,7 @@
     , m_inAutoscroll(false)
     , m_optionsWidth(0)
     , m_indexOffset(0)
+    , m_intrinsicLogicalHeight(0)
 {
     ASSERT(element);
     ASSERT(element->isHTMLElement());
@@ -269,8 +270,8 @@
 
 void RenderListBox::computeLogicalHeight(LayoutUnit, LayoutUnit logicalTop, LogicalExtentComputedValues& computedValues) const
 {
-    LayoutUnit height = itemHeight() * size() - rowSpacing + borderAndPaddingHeight();
-    RenderBox::computeLogicalHeight(height, logicalTop, computedValues);
+    m_intrinsicLogicalHeight = itemHeight() * size() - rowSpacing + borderAndPaddingHeight();
+    RenderBox::computeLogicalHeight(m_intrinsicLogicalHeight, logicalTop, computedValues);
 }
 
 int RenderListBox::baselinePosition(FontBaseline baselineType, bool firstLine, LineDirectionMode lineDirection, LinePositionMode linePositionMode) const

Modified: trunk/Source/WebCore/rendering/RenderListBox.h (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderListBox.h	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderListBox.h	2013-06-11 19:03:09 UTC (rev 151451)
@@ -88,6 +88,8 @@
     virtual void autoscroll(const IntPoint&);
     virtual void stopAutoscroll();
 
+    virtual LayoutSize intrinsicSize() const OVERRIDE FINAL { return LayoutSize(maxPreferredLogicalWidth(), m_intrinsicLogicalHeight); }
+
     virtual bool shouldPanScroll() const { return true; }
     virtual void panScroll(const IntPoint&);
 
@@ -149,6 +151,7 @@
     bool m_inAutoscroll;
     int m_optionsWidth;
     int m_indexOffset;
+    mutable LayoutUnit m_intrinsicLogicalHeight;
 
     RefPtr<Scrollbar> m_vBar;
 };

Modified: trunk/Source/WebCore/rendering/RenderMenuList.h (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderMenuList.h	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderMenuList.h	2013-06-11 19:03:09 UTC (rev 151451)
@@ -75,6 +75,7 @@
 
     virtual const char* renderName() const { return "RenderMenuList"; }
 
+    virtual LayoutSize intrinsicSize() const OVERRIDE FINAL { return LayoutSize(maxPreferredLogicalWidth(), logicalHeight()); }
     virtual void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const OVERRIDE;
     virtual void computePreferredLogicalWidths() OVERRIDE;
 

Modified: trunk/Source/WebCore/rendering/RenderReplaced.h (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderReplaced.h	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderReplaced.h	2013-06-11 19:03:09 UTC (rev 151451)
@@ -43,7 +43,7 @@
 
     virtual void layout();
 
-    virtual LayoutSize intrinsicSize() const OVERRIDE { return m_intrinsicSize; }
+    virtual LayoutSize intrinsicSize() const OVERRIDE FINAL { return m_intrinsicSize; }
     virtual void computeIntrinsicRatioInformation(FloatSize& intrinsicSize, double& intrinsicRatio, bool& isPercentageIntrinsicSize) const;
 
     virtual void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const OVERRIDE;

Modified: trunk/Source/WebCore/rendering/RenderTextControl.cpp (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderTextControl.cpp	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderTextControl.cpp	2013-06-11 19:03:09 UTC (rev 151451)
@@ -38,6 +38,7 @@
 
 RenderTextControl::RenderTextControl(Element* element)
     : RenderBlock(element)
+    , m_intrinsicLogicalHeight(0)
 {
     ASSERT(isHTMLTextFormControlElement(element));
 }
@@ -142,21 +143,20 @@
     return ScrollbarTheme::theme()->scrollbarThickness();
 }
 
-void RenderTextControl::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues& computedValues) const
+void RenderTextControl::computeLogicalHeight(LayoutUnit, LayoutUnit logicalTop, LogicalExtentComputedValues& computedValues) const
 {
     HTMLElement* innerText = innerTextElement();
     ASSERT(innerText);
     if (RenderBox* innerTextBox = innerText->renderBox()) {
         LayoutUnit nonContentHeight = innerTextBox->borderAndPaddingHeight() + innerTextBox->marginHeight();
-        logicalHeight = computeControlLogicalHeight(innerTextBox->lineHeight(true, HorizontalLine, PositionOfInteriorLineBoxes), nonContentHeight) + borderAndPaddingHeight();
+        m_intrinsicLogicalHeight = computeControlLogicalHeight(innerTextBox->lineHeight(true, HorizontalLine, PositionOfInteriorLineBoxes), nonContentHeight) + borderAndPaddingHeight();
 
         // We are able to have a horizontal scrollbar if the overflow style is scroll, or if its auto and there's no word wrap.
         if ((isHorizontalWritingMode() && (style()->overflowX() == OSCROLL ||  (style()->overflowX() == OAUTO && innerText->renderer()->style()->overflowWrap() == NormalOverflowWrap)))
             || (!isHorizontalWritingMode() && (style()->overflowY() == OSCROLL ||  (style()->overflowY() == OAUTO && innerText->renderer()->style()->overflowWrap() == NormalOverflowWrap))))
-            logicalHeight += scrollbarThickness();
+            m_intrinsicLogicalHeight += scrollbarThickness();
     }
-
-    RenderBox::computeLogicalHeight(logicalHeight, logicalTop, computedValues);
+    RenderBox::computeLogicalHeight(m_intrinsicLogicalHeight, logicalTop, computedValues);
 }
 
 void RenderTextControl::hitInnerTextElement(HitTestResult& result, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset)

Modified: trunk/Source/WebCore/rendering/RenderTextControl.h (151450 => 151451)


--- trunk/Source/WebCore/rendering/RenderTextControl.h	2013-06-11 19:02:20 UTC (rev 151450)
+++ trunk/Source/WebCore/rendering/RenderTextControl.h	2013-06-11 19:03:09 UTC (rev 151451)
@@ -81,6 +81,10 @@
     virtual bool canBeProgramaticallyScrolled() const { return true; }
 
     virtual bool requiresForcedStyleRecalcPropagation() const { return true; }
+
+    virtual LayoutSize intrinsicSize() const OVERRIDE FINAL { return LayoutSize(maxPreferredLogicalWidth(), m_intrinsicLogicalHeight); }
+
+    mutable LayoutUnit m_intrinsicLogicalHeight;
 };
 
 inline RenderTextControl* toRenderTextControl(RenderObject* object)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to