[css-grid] mimax(auto, <flex>) should be serialized as <flex>
authorrego@igalia.com <rego@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 2 Nov 2016 12:40:23 +0000 (12:40 +0000)
committerrego@igalia.com <rego@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 2 Nov 2016 12:40:23 +0000 (12:40 +0000)
https://bugs.webkit.org/show_bug.cgi?id=164316

Reviewed by Sergio Villar Senin.

Source/WebCore:

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::specifiedValueForGridTrackSize): Add a simple if to serialize
properly this case.
* rendering/style/GridLength.h:
(WebCore::GridLength::isAuto): Add new function to check if GridLength
is or not "auto".

LayoutTests:

Add new test case to verify it. We can only check it
using grid-auto-columns|rows, because grid-template-columns|rows
is serialized to the used breadth.

* fast/css-grid-layout/grid-auto-columns-rows-get-set-expected.txt:
* fast/css-grid-layout/grid-auto-columns-rows-get-set.html:

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

LayoutTests/ChangeLog
LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set-expected.txt
LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set.html
Source/WebCore/ChangeLog
Source/WebCore/css/CSSComputedStyleDeclaration.cpp
Source/WebCore/rendering/style/GridLength.h

index 2a9c5b8..2bb024c 100644 (file)
@@ -1,3 +1,17 @@
+2016-11-02  Manuel Rego Casasnovas  <rego@igalia.com>
+
+        [css-grid] mimax(auto, <flex>) should be serialized as <flex>
+        https://bugs.webkit.org/show_bug.cgi?id=164316
+
+        Reviewed by Sergio Villar Senin.
+
+        Add new test case to verify it. We can only check it
+        using grid-auto-columns|rows, because grid-template-columns|rows
+        is serialized to the used breadth.
+
+        * fast/css-grid-layout/grid-auto-columns-rows-get-set-expected.txt:
+        * fast/css-grid-layout/grid-auto-columns-rows-get-set.html:
+
 2016-11-02  Romain Bellessort  <romain.bellessort@crf.canon.fr>
 
         [Readable Streams API] Enable creation of ReadableByteStreamController
index 77fb300..51104e5 100644 (file)
@@ -52,6 +52,8 @@ PASS getComputedStyle(element, '').getPropertyValue('grid-auto-columns') is "min
 PASS getComputedStyle(element, '').getPropertyValue('grid-auto-rows') is "auto 30px minmax(10%, 60%)"
 PASS getComputedStyle(element, '').getPropertyValue('grid-auto-columns') is "fit-content(10px) fit-content(30%)"
 PASS getComputedStyle(element, '').getPropertyValue('grid-auto-rows') is "fit-content(5%) fit-content(40px)"
+PASS getComputedStyle(element, '').getPropertyValue('grid-auto-columns') is "2fr"
+PASS getComputedStyle(element, '').getPropertyValue('grid-auto-rows') is "1fr"
 
 Test setting grid-auto-columns and grid-auto-rows to bad minmax value through JS
 PASS getComputedStyle(element, '').getPropertyValue('grid-auto-columns') is "auto"
index f369ac9..5e26b7e 100644 (file)
@@ -123,6 +123,7 @@ testAutoValues("minmax(-webkit-min-content, 8vh)", "minmax(10vw, -webkit-min-con
 testAutoValues("minmax(-webkit-min-content, -webkit-max-content)", "minmax(-webkit-max-content, -webkit-min-content)");
 testAutoValues("minmax(-webkit-min-content, 10px) 48px 5%", "auto 30px minmax(10%, 60%)");
 testAutoValues("fit-content(10px) fit-content(30%)", "fit-content(5%) fit-content(calc(20px + 2em))", "fit-content(10px) fit-content(30%)", "fit-content(5%) fit-content(40px)");
+testAutoValues("minmax(auto, 2fr)", "minmax(auto, 1fr)", "2fr", "1fr");
 
 debug("");
 debug("Test setting grid-auto-columns and grid-auto-rows to bad minmax value through JS");
index 550be5b..066e8d1 100644 (file)
@@ -1,3 +1,17 @@
+2016-11-02  Manuel Rego Casasnovas  <rego@igalia.com>
+
+        [css-grid] mimax(auto, <flex>) should be serialized as <flex>
+        https://bugs.webkit.org/show_bug.cgi?id=164316
+
+        Reviewed by Sergio Villar Senin.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::specifiedValueForGridTrackSize): Add a simple if to serialize
+        properly this case.
+        * rendering/style/GridLength.h:
+        (WebCore::GridLength::isAuto): Add new function to check if GridLength
+        is or not "auto".
+
 2016-11-02  Romain Bellessort  <romain.bellessort@crf.canon.fr>
 
         [Readable Streams API] Enable creation of ReadableByteStreamController
index 1fd9987..46c93b6 100644 (file)
@@ -1012,6 +1012,9 @@ static Ref<CSSValue> specifiedValueForGridTrackSize(const GridTrackSize& trackSi
     }
     default:
         ASSERT(trackSize.type() == MinMaxTrackSizing);
+        if (trackSize.minTrackBreadth().isAuto() && trackSize.maxTrackBreadth().isFlex())
+            return CSSValuePool::singleton().createValue(trackSize.maxTrackBreadth().flex(), CSSPrimitiveValue::CSS_FR);
+
         auto minMaxTrackBreadths = CSSValueList::createCommaSeparated();
         minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.minTrackBreadth(), style));
         minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.maxTrackBreadth(), style));
index 2747007..6780327 100644 (file)
@@ -72,6 +72,7 @@ public:
     }
 
     bool isContentSized() const { return m_type == LengthType && (m_length.isAuto() || m_length.isMinContent() || m_length.isMaxContent()); }
+    bool isAuto() const { return m_type == LengthType && m_length.isAuto(); }
 
 private:
     // Ideally we would put the 2 following fields in a union, but Length has a constructor,