Changeset 207288 in webkit


Ignore:
Timestamp:
Oct 13, 2016 8:25:14 AM (8 years ago)
Author:
svillar@igalia.com
Message:

[css-grid] Fix intrinsic maximums resolution with fit-content and auto
https://bugs.webkit.org/show_bug.cgi?id=163282

Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

The step 2.5 in section 12.5 https://drafts.csswg.org/css-grid/#algo-content of the specs,
details how to sizes tracks with intrinsic max track sizing functions.

Not so long ago there were only two max track sizing functions min-content and max-content
(auto was always resolved to max-content). However there were some recent changes that force
us to consider 2 new values: auto (which is not internally translated to max-content
although it still works the same) and specially the newly added fit-content.

Some of the new test cases are commented due to bug http://wkb.ug/163283.

Test: fast/css-grid-layout/grid-intrinsic-maximums.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::shouldProcessTrackForTrackSizeComputationPhase):

  • rendering/style/GridTrackSize.h:

(WebCore::GridTrackSize::cacheMinMaxTrackBreadthTypes):
(WebCore::GridTrackSize::hasIntrinsicMinTrackBreadth):
(WebCore::GridTrackSize::hasIntrinsicMaxTrackBreadth):
(WebCore::GridTrackSize::hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth):

LayoutTests:

New test cases to verify that all tracks with intrinsic max track sizing functions are used
in step 2.5 of the track sizing algorith. Some of the new test cases are commented due to
http://wkb.ug/163283.

  • fast/css-grid-layout/grid-intrinsic-maximums-expected.html: Added.
  • fast/css-grid-layout/grid-intrinsic-maximums.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r207283 r207288  
     12016-10-11  Sergio Villar Senin  <svillar@igalia.com>
     2
     3        [css-grid] Fix intrinsic maximums resolution with fit-content and auto
     4        https://bugs.webkit.org/show_bug.cgi?id=163282
     5
     6        Reviewed by Manuel Rego Casasnovas.
     7
     8        New test cases to verify that all tracks with intrinsic max track sizing functions are used
     9        in step 2.5 of the track sizing algorith. Some of the new test cases are commented due to
     10        http://wkb.ug/163283.
     11
     12        * fast/css-grid-layout/grid-intrinsic-maximums-expected.html: Added.
     13        * fast/css-grid-layout/grid-intrinsic-maximums.html: Added.
     14
    1152016-10-13  Carlos Alberto Lopez Perez  <clopez@igalia.com>
    216
  • trunk/Source/WebCore/ChangeLog

    r207287 r207288  
     12016-10-11  Sergio Villar Senin  <svillar@igalia.com>
     2
     3        [css-grid] Fix intrinsic maximums resolution with fit-content and auto
     4        https://bugs.webkit.org/show_bug.cgi?id=163282
     5
     6        Reviewed by Manuel Rego Casasnovas.
     7
     8        The step 2.5 in section 12.5 https://drafts.csswg.org/css-grid/#algo-content of the specs,
     9        details how to sizes tracks with intrinsic max track sizing functions.
     10
     11        Not so long ago there were only two max track sizing functions min-content and max-content
     12        (auto was always resolved to max-content). However there were some recent changes that force
     13        us to consider 2 new values: auto (which is not internally translated to max-content
     14        although it still works the same) and specially the newly added fit-content.
     15
     16        Some of the new test cases are commented due to bug http://wkb.ug/163283.
     17
     18        Test: fast/css-grid-layout/grid-intrinsic-maximums.html
     19
     20        * rendering/RenderGrid.cpp:
     21        (WebCore::RenderGrid::shouldProcessTrackForTrackSizeComputationPhase):
     22        * rendering/style/GridTrackSize.h:
     23        (WebCore::GridTrackSize::cacheMinMaxTrackBreadthTypes):
     24        (WebCore::GridTrackSize::hasIntrinsicMinTrackBreadth):
     25        (WebCore::GridTrackSize::hasIntrinsicMaxTrackBreadth):
     26        (WebCore::GridTrackSize::hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth):
     27
    1282016-10-13  Miguel Gomez  <magomez@igalia.com>
    229
  • trunk/Source/WebCore/rendering/RenderGrid.cpp

    r206310 r207288  
    12131213        return trackSize.hasMaxContentMinTrackBreadth();
    12141214    case ResolveIntrinsicMaximums:
    1215         return trackSize.hasMinOrMaxContentMaxTrackBreadth();
     1215        return trackSize.hasIntrinsicMaxTrackBreadth();
    12161216    case ResolveMaxContentMaximums:
    12171217        return trackSize.hasMaxContentOrAutoMaxTrackBreadth();
  • trunk/Source/WebCore/rendering/style/GridTrackSize.h

    r205977 r207288  
    105105        m_maxTrackBreadthIsMinContent = maxTrackBreadth().isLength() && maxTrackBreadth().length().isMinContent();
    106106        m_maxTrackBreadthIsAuto = maxTrackBreadth().isLength() && maxTrackBreadth().length().isAuto();
     107
     108        // These values depend on the above ones so keep them here.
     109        m_minTrackBreadthIsIntrinsic = m_minTrackBreadthIsMaxContent || m_minTrackBreadthIsMinContent
     110            || m_minTrackBreadthIsAuto || isFitContent();
     111        m_maxTrackBreadthIsIntrinsic = m_maxTrackBreadthIsMaxContent || m_maxTrackBreadthIsMinContent
     112            || m_maxTrackBreadthIsAuto || isFitContent();
    107113    }
    108114
    109     bool hasIntrinsicMinTrackBreadth() const { return m_minTrackBreadthIsMaxContent || m_minTrackBreadthIsMinContent || m_minTrackBreadthIsAuto; }
     115    bool hasIntrinsicMinTrackBreadth() const { return m_minTrackBreadthIsIntrinsic; }
     116    bool hasIntrinsicMaxTrackBreadth() const { return m_maxTrackBreadthIsIntrinsic; }
    110117    bool hasMinOrMaxContentMinTrackBreadth() const { return m_minTrackBreadthIsMaxContent || m_minTrackBreadthIsMinContent; }
    111118    bool hasAutoMinTrackBreadth() const { return m_minTrackBreadthIsAuto; }
     
    118125    bool hasMinContentMinTrackBreadth() const { return m_minTrackBreadthIsMinContent; }
    119126    bool hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth() const { return m_minTrackBreadthIsMaxContent && m_maxTrackBreadthIsMaxContent; }
    120     bool hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth() const { return (m_minTrackBreadthIsMinContent || m_minTrackBreadthIsAuto) && (m_maxTrackBreadthIsAuto || hasMinOrMaxContentMaxTrackBreadth()); }
     127    bool hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth() const { return (m_minTrackBreadthIsMinContent || m_minTrackBreadthIsAuto) && m_maxTrackBreadthIsIntrinsic; }
    121128
    122129private:
     
    132139    bool m_maxTrackBreadthIsMaxContent : 1;
    133140    bool m_maxTrackBreadthIsMinContent : 1;
     141    bool m_minTrackBreadthIsIntrinsic : 1;
     142    bool m_maxTrackBreadthIsIntrinsic : 1;
    134143};
    135144
Note: See TracChangeset for help on using the changeset viewer.