Chromium Code Reviews| Index: third_party/WebKit/Source/core/style/GridTrackSize.h |
| diff --git a/third_party/WebKit/Source/core/style/GridTrackSize.h b/third_party/WebKit/Source/core/style/GridTrackSize.h |
| index 9cd614951b61226eb012bae0ef1d4122ff171239..0f20a90c2340e6e65a6e1d4d13459a70800c06c3 100644 |
| --- a/third_party/WebKit/Source/core/style/GridTrackSize.h |
| +++ b/third_party/WebKit/Source/core/style/GridTrackSize.h |
| @@ -38,19 +38,25 @@ namespace blink { |
| enum GridTrackSizeType { |
| LengthTrackSizing, |
| - MinMaxTrackSizing |
| + MinMaxTrackSizing, |
| + FitContentTrackSizing |
| }; |
| +// This class represents a <track-size> from the spec. Althought there are 3 different types of |
| +// <track-size> there is always an equivalent minmax() representation that could represent any of |
| +// them. The only special case is fit-content(argument) which is similar to minmax(auto,max-content) |
|
Manuel Rego
2016/08/31 07:24:29
Nit: Missing space after "auto,".
svillar
2016/08/31 09:50:04
Acknowledged.
|
| +// except that the track size is clamped at argument if it is greater than the auto minimum. At the |
| +// GridTrackSize level we don't need to worry about clamping so we treat that case exactly as |
| +// minmax(auto, max-content) althought we store the argument for later use in m_maxTrackBreadth. |
| class GridTrackSize { |
| DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); |
| public: |
| - GridTrackSize(const GridLength& length) |
| - : m_type(LengthTrackSizing) |
| - , m_minTrackBreadth(length) |
| + GridTrackSize(const GridLength& length, GridTrackSizeType trackSizeType = LengthTrackSizing) |
| + : m_type(trackSizeType) |
| + , m_minTrackBreadth(trackSizeType == FitContentTrackSizing ? Length(Auto) : length) |
| , m_maxTrackBreadth(length) |
| - , m_minTrackBreadthIsMaxContent(false) |
| - , m_maxTrackBreadthIsMaxContent(false) |
| { |
| + DCHECK(trackSizeType == LengthTrackSizing || trackSizeType == FitContentTrackSizing); |
| cacheMinMaxTrackBreadthTypes(); |
| } |
| @@ -58,27 +64,24 @@ public: |
| : m_type(MinMaxTrackSizing) |
| , m_minTrackBreadth(minTrackBreadth) |
| , m_maxTrackBreadth(maxTrackBreadth) |
| - , m_minTrackBreadthIsMaxContent(false) |
| - , m_maxTrackBreadthIsMaxContent(false) |
| { |
| cacheMinMaxTrackBreadthTypes(); |
| } |
| - const GridLength& length() const |
| + GridLength length() const |
| { |
| - ASSERT(m_type == LengthTrackSizing); |
| - ASSERT(m_minTrackBreadth == m_maxTrackBreadth); |
| - const GridLength& minTrackBreadth = m_minTrackBreadth; |
| - return minTrackBreadth; |
| + DCHECK(m_type == LengthTrackSizing || m_type == FitContentTrackSizing); |
| + DCHECK(m_minTrackBreadth == m_maxTrackBreadth || m_type == FitContentTrackSizing); |
| + return m_maxTrackBreadth; |
| } |
| - const GridLength& minTrackBreadth() const { return m_minTrackBreadth; } |
| - |
| - const GridLength& maxTrackBreadth() const { return m_maxTrackBreadth; } |
| + GridLength minTrackBreadth() const { return m_minTrackBreadth; } |
| + GridLength maxTrackBreadth() const { return !isFitContent() ? m_maxTrackBreadth : GridLength(Length(MaxContent)); } |
|
cbiesinger
2016/08/29 20:07:07
please don't use negation like that, it's harder t
|
| GridTrackSizeType type() const { return m_type; } |
| bool isContentSized() const { return m_minTrackBreadth.isContentSized() || m_maxTrackBreadth.isContentSized(); } |
| + bool isFitContent() const { return m_type == FitContentTrackSizing; } |
| bool operator==(const GridTrackSize& other) const |
| { |