Title: [213305] trunk
Revision
213305
Author
hy...@apple.com
Date
2017-03-02 14:38:07 -0800 (Thu, 02 Mar 2017)

Log Message

flex-basis should be 0% (not 0px) when omitted
https://bugs.webkit.org/show_bug.cgi?id=169100
rdar://problem/30429154

Reviewed by Dean Jackson.

Source/WebCore:

Covered by existing tests.

* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::consumeFlex):

LayoutTests:

* css3/flexbox/bug669714-expected.txt:
* css3/flexbox/columns-auto-size-expected.txt:
* css3/flexbox/flex-longhand-parsing-expected.txt:
* css3/flexbox/flex-longhand-parsing.html:
* css3/flexbox/flex-property-parsing-expected.txt:
* css3/flexbox/flex-property-parsing.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (213304 => 213305)


--- trunk/LayoutTests/ChangeLog	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/LayoutTests/ChangeLog	2017-03-02 22:38:07 UTC (rev 213305)
@@ -1,3 +1,18 @@
+2017-03-02  Dave Hyatt  <hy...@apple.com>
+
+        flex-basis should be 0% (not 0px) when omitted
+        https://bugs.webkit.org/show_bug.cgi?id=169100
+        rdar://problem/30429154
+
+        Reviewed by Dean Jackson.
+
+        * css3/flexbox/bug669714-expected.txt:
+        * css3/flexbox/columns-auto-size-expected.txt:
+        * css3/flexbox/flex-longhand-parsing-expected.txt:
+        * css3/flexbox/flex-longhand-parsing.html:
+        * css3/flexbox/flex-property-parsing-expected.txt:
+        * css3/flexbox/flex-property-parsing.html:
+
 2017-03-02  Ryan Haddad  <ryanhad...@apple.com>
 
         Mark inspector/model/color.html as flaky.

Modified: trunk/LayoutTests/css3/flexbox/bug669714-expected.txt (213304 => 213305)


--- trunk/LayoutTests/css3/flexbox/bug669714-expected.txt	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/LayoutTests/css3/flexbox/bug669714-expected.txt	2017-03-02 22:38:07 UTC (rev 213305)
@@ -3,14 +3,5 @@
 XXX
 YYY
 
-FAIL #container 1 assert_equals: 
-<div class="layout-column" id="container">
-    <div class="layout-row">
-      <div class="layout-column">
-        <div class="flex" data-expected-height="18">XXX<span id="relpos"> </span></div>
-        <div>YYY</div>
-      </div>
-    </div>
-</div>
-height expected 18 but got 0
+PASS #container 1 
 

Modified: trunk/LayoutTests/css3/flexbox/columns-auto-size-expected.txt (213304 => 213305)


--- trunk/LayoutTests/css3/flexbox/columns-auto-size-expected.txt	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/LayoutTests/css3/flexbox/columns-auto-size-expected.txt	2017-03-02 22:38:07 UTC (rev 213305)
@@ -1,12 +1,5 @@
 
-FAIL .flexbox 1 assert_equals: 
-<div class="flexbox column vertical" style="margin-left: 100px;">
-  <div data-expected-width="50" data-offset-x="20" style="min-width: 0; flex: 1;"><div data-expected-width="50" data-offset-x="20" class="child-div" style="width: 50px"></div></div>
-  <div data-expected-width="0" data-offset-x="20" style="flex: 1;"></div>
-  <div data-expected-width="10" data-offset-x="10" style="width: 10px;"></div>
-  <div data-expected-width="10" data-offset-x="0" style="flex: 1 auto;"><div style="width: 10px"></div></div>
-</div>
-width expected 50 but got 0
+PASS .flexbox 1 
 PASS .flexbox 2 
 PASS .flexbox 3 
 PASS .flexbox 4 
@@ -15,13 +8,6 @@
 PASS .flexbox 7 
 PASS .flexbox 8 
 PASS .flexbox 9 
-FAIL .flexbox 10 assert_equals: 
-<div class="flexbox column horizontal">
-  <div data-expected-height="0" data-offset-y="0" style="flex: 1;"></div>
-  <div data-expected-height="10" data-offset-y="0" style="height: 10px;"></div>
-  <div data-expected-height="10" data-offset-y="10" style="flex: 1 auto;"><div style="height: 10px"></div></div>
-  <div data-expected-height="10" data-offset-y="20" style="min-height: 0; flex: 1;"><div data-expected-height="10" data-offset-y="20" class="child-div" style="height: 10px"></div></div>
-</div>
-height expected 10 but got 0
+PASS .flexbox 10 
 PASS .flexbox 11 
 

Modified: trunk/LayoutTests/css3/flexbox/flex-longhand-parsing-expected.txt (213304 => 213305)


--- trunk/LayoutTests/css3/flexbox/flex-longhand-parsing-expected.txt	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/LayoutTests/css3/flexbox/flex-longhand-parsing-expected.txt	2017-03-02 22:38:07 UTC (rev 213305)
@@ -28,11 +28,11 @@
 PASS getComputedStyle(flexitem).flex is "0 0 auto"
 PASS flexitem.style.flex is "1.5 0 auto"
 PASS getComputedStyle(flexitem).flex is "1.5 0 auto"
-PASS flexitem.style.flex is "3 1 0px"
+PASS flexitem.style.flex is "3 1 0%"
 PASS flexitem.style.flexGrow is "3"
 PASS flexitem.style.flexShrink is "1"
-PASS flexitem.style.flexBasis is "0px"
-PASS getComputedStyle(flexitem).flex is "3 1 0px"
+PASS flexitem.style.flexBasis is "0%"
+PASS getComputedStyle(flexitem).flex is "3 1 0%"
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/css3/flexbox/flex-longhand-parsing.html (213304 => 213305)


--- trunk/LayoutTests/css3/flexbox/flex-longhand-parsing.html	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/LayoutTests/css3/flexbox/flex-longhand-parsing.html	2017-03-02 22:38:07 UTC (rev 213305)
@@ -56,11 +56,11 @@
 shouldBeEqualToString('getComputedStyle(flexitem).flex', '1.5 0 auto');
 
 flexitem.style.flex = 3;
-shouldBeEqualToString('flexitem.style.flex', '3 1 0px');
+shouldBeEqualToString('flexitem.style.flex', '3 1 0%');
 shouldBeEqualToString('flexitem.style.flexGrow', '3');
 shouldBeEqualToString('flexitem.style.flexShrink', '1');
-shouldBeEqualToString('flexitem.style.flexBasis', '0px');
-shouldBeEqualToString('getComputedStyle(flexitem).flex', '3 1 0px');
+shouldBeEqualToString('flexitem.style.flexBasis', '0%');
+shouldBeEqualToString('getComputedStyle(flexitem).flex', '3 1 0%');
 
 </script>
 </body>

Modified: trunk/LayoutTests/css3/flexbox/flex-property-parsing-expected.txt (213304 => 213305)


--- trunk/LayoutTests/css3/flexbox/flex-property-parsing-expected.txt	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/LayoutTests/css3/flexbox/flex-property-parsing-expected.txt	2017-03-02 22:38:07 UTC (rev 213305)
@@ -9,12 +9,12 @@
 PASS getComputedStyle(flexitem).flex is "0 1 auto"
 PASS flexitem.style.flex is ""
 PASS getComputedStyle(flexitem).flex is "0 1 auto"
-PASS flexitem.style.flex is "2 1 0px"
-PASS getComputedStyle(flexitem).flex is "2 1 0px"
-PASS flexitem.style.flex is "0 1 0px"
-PASS getComputedStyle(flexitem).flex is "0 1 0px"
-PASS flexitem.style.flex is "1.5 1 0px"
-PASS getComputedStyle(flexitem).flex is "1.5 1 0px"
+PASS flexitem.style.flex is "2 1 0%"
+PASS getComputedStyle(flexitem).flex is "2 1 0%"
+PASS flexitem.style.flex is "0 1 0%"
+PASS getComputedStyle(flexitem).flex is "0 1 0%"
+PASS flexitem.style.flex is "1.5 1 0%"
+PASS getComputedStyle(flexitem).flex is "1.5 1 0%"
 PASS flexitem.style.flex is "1 1 auto"
 PASS getComputedStyle(flexitem).flex is "1 1 auto"
 PASS flexitem.style.flex is "1 1 1px"
@@ -25,12 +25,12 @@
 PASS getComputedStyle(flexitem).flex is "1 1 0px"
 PASS flexitem.style.flex is "0 0 auto"
 PASS getComputedStyle(flexitem).flex is "0 0 auto"
-PASS flexitem.style.flex is "0 0 0px"
-PASS getComputedStyle(flexitem).flex is "0 0 0px"
-PASS flexitem.style.flex is "0 1 0px"
-PASS getComputedStyle(flexitem).flex is "0 1 0px"
-PASS flexitem.style.flex is "1 0 0px"
-PASS getComputedStyle(flexitem).flex is "1 0 0px"
+PASS flexitem.style.flex is "0 0 0%"
+PASS getComputedStyle(flexitem).flex is "0 0 0%"
+PASS flexitem.style.flex is "0 1 0%"
+PASS getComputedStyle(flexitem).flex is "0 1 0%"
+PASS flexitem.style.flex is "1 0 0%"
+PASS getComputedStyle(flexitem).flex is "1 0 0%"
 PASS flexitem.style.flex is "2 1 auto"
 PASS getComputedStyle(flexitem).flex is "2 1 auto"
 PASS flexitem.style.flex is "3 1 4px"

Modified: trunk/LayoutTests/css3/flexbox/flex-property-parsing.html (213304 => 213305)


--- trunk/LayoutTests/css3/flexbox/flex-property-parsing.html	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/LayoutTests/css3/flexbox/flex-property-parsing.html	2017-03-02 22:38:07 UTC (rev 213305)
@@ -28,16 +28,16 @@
 shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 1 auto');
 
 flexitem.style.flex = '2';
-shouldBeEqualToString('flexitem.style.flex', '2 1 0px');
-shouldBeEqualToString('getComputedStyle(flexitem).flex', '2 1 0px');
+shouldBeEqualToString('flexitem.style.flex', '2 1 0%');
+shouldBeEqualToString('getComputedStyle(flexitem).flex', '2 1 0%');
 
 flexitem.style.flex = '0';
-shouldBeEqualToString('flexitem.style.flex', '0 1 0px');
-shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 1 0px');
+shouldBeEqualToString('flexitem.style.flex', '0 1 0%');
+shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 1 0%');
 
 flexitem.style.flex = '1.5';
-shouldBeEqualToString('flexitem.style.flex', '1.5 1 0px');
-shouldBeEqualToString('getComputedStyle(flexitem).flex', '1.5 1 0px');
+shouldBeEqualToString('flexitem.style.flex', '1.5 1 0%');
+shouldBeEqualToString('getComputedStyle(flexitem).flex', '1.5 1 0%');
 
 flexitem.style.flex = 'auto';
 shouldBeEqualToString('flexitem.style.flex', '1 1 auto');
@@ -61,16 +61,16 @@
 shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 0 auto');
 
 flexitem.style.flex = '0 0';
-shouldBeEqualToString('flexitem.style.flex', '0 0 0px');
-shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 0 0px');
+shouldBeEqualToString('flexitem.style.flex', '0 0 0%');
+shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 0 0%');
 
 flexitem.style.flex = '0 1';
-shouldBeEqualToString('flexitem.style.flex', '0 1 0px');
-shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 1 0px');
+shouldBeEqualToString('flexitem.style.flex', '0 1 0%');
+shouldBeEqualToString('getComputedStyle(flexitem).flex', '0 1 0%');
 
 flexitem.style.flex = '1 0';
-shouldBeEqualToString('flexitem.style.flex', '1 0 0px');
-shouldBeEqualToString('getComputedStyle(flexitem).flex', '1 0 0px');
+shouldBeEqualToString('flexitem.style.flex', '1 0 0%');
+shouldBeEqualToString('getComputedStyle(flexitem).flex', '1 0 0%');
 
 flexitem.style.flex = '2 auto';
 shouldBeEqualToString('flexitem.style.flex', '2 1 auto');

Modified: trunk/Source/WebCore/ChangeLog (213304 => 213305)


--- trunk/Source/WebCore/ChangeLog	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/Source/WebCore/ChangeLog	2017-03-02 22:38:07 UTC (rev 213305)
@@ -1,3 +1,16 @@
+2017-03-02  Dave Hyatt  <hy...@apple.com>
+
+        flex-basis should be 0% (not 0px) when omitted
+        https://bugs.webkit.org/show_bug.cgi?id=169100
+        rdar://problem/30429154
+
+        Reviewed by Dean Jackson.
+
+        Covered by existing tests.
+
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::CSSPropertyParser::consumeFlex):
+
 2017-02-22  Jiewen Tan  <jiewen_...@apple.com>
 
         WebCrypto API support for AES-GCM

Modified: trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp (213304 => 213305)


--- trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp	2017-03-02 22:30:23 UTC (rev 213304)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp	2017-03-02 22:38:07 UTC (rev 213305)
@@ -4631,8 +4631,13 @@
             flexGrow = 1;
         if (flexShrink == unsetValue)
             flexShrink = 1;
+        
+        // FIXME: Using % here is a hack to work around intrinsic sizing implementation being
+        // a mess (e.g., turned off for nested column flexboxes, failing to relayout properly even
+        // if turned back on for nested columns, etc.). We have layout test coverage of both
+        // scenarios.
         if (!flexBasis)
-            flexBasis = CSSPrimitiveValue::create(0, CSSPrimitiveValue::UnitType::CSS_PX);
+            flexBasis = CSSPrimitiveValue::create(0, CSSPrimitiveValue::UnitType::CSS_PERCENTAGE);
     }
 
     if (!m_range.atEnd())
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to