Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutGrid.cpp

Issue 1709963002: [css-align] New CSS Value 'normal' for Self Alignment (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed repaint tests. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 19 matching lines...) Expand all
30 #include "core/paint/GridPainter.h" 30 #include "core/paint/GridPainter.h"
31 #include "core/paint/PaintLayer.h" 31 #include "core/paint/PaintLayer.h"
32 #include "core/style/ComputedStyle.h" 32 #include "core/style/ComputedStyle.h"
33 #include "core/style/GridArea.h" 33 #include "core/style/GridArea.h"
34 #include "platform/LengthFunctions.h" 34 #include "platform/LengthFunctions.h"
35 #include <algorithm> 35 #include <algorithm>
36 36
37 namespace blink { 37 namespace blink {
38 38
39 static const int infinity = -1; 39 static const int infinity = -1;
40 static const ItemPosition selfAlignmentNormalBehavior = ItemPositionStretch;
40 41
41 class GridItemWithSpan; 42 class GridItemWithSpan;
42 43
43 class GridTrack { 44 class GridTrack {
44 public: 45 public:
45 GridTrack() 46 GridTrack()
46 : m_baseSize(0) 47 : m_baseSize(0)
47 , m_growthLimit(0) 48 , m_growthLimit(0)
48 , m_plannedSize(0) 49 , m_plannedSize(0)
49 , m_sizeDuringDistribution(0) 50 , m_sizeDuringDistribution(0)
(...skipping 1480 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 // the grid and its children are correctly laid out according to the new sty le rules. 1531 // the grid and its children are correctly laid out according to the new sty le rules.
1531 setNeedsLayout(LayoutInvalidationReason::GridChanged); 1532 setNeedsLayout(LayoutInvalidationReason::GridChanged);
1532 1533
1533 m_grid.resize(0); 1534 m_grid.resize(0);
1534 m_gridItemArea.clear(); 1535 m_gridItemArea.clear();
1535 m_gridItemsOverflowingGridArea.resize(0); 1536 m_gridItemsOverflowingGridArea.resize(0);
1536 m_gridItemsIndexesMap.clear(); 1537 m_gridItemsIndexesMap.clear();
1537 m_gridIsDirty = true; 1538 m_gridIsDirty = true;
1538 } 1539 }
1539 1540
1540 static const StyleContentAlignmentData& normalValueBehavior() 1541 static const StyleContentAlignmentData& contentAlignmentNormalBehavior()
1541 { 1542 {
1542 static const StyleContentAlignmentData normalBehavior = {ContentPositionNorm al, ContentDistributionStretch}; 1543 static const StyleContentAlignmentData normalBehavior = {ContentPositionNorm al, ContentDistributionStretch};
1543 return normalBehavior; 1544 return normalBehavior;
1544 } 1545 }
1545 1546
1546 void LayoutGrid::applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection direction, GridSizingData& sizingData) 1547 void LayoutGrid::applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection direction, GridSizingData& sizingData)
1547 { 1548 {
1548 LayoutUnit& availableSpace = sizingData.freeSpaceForDirection(direction); 1549 LayoutUnit& availableSpace = sizingData.freeSpaceForDirection(direction);
1549 if (availableSpace <= 0 1550 if (availableSpace <= 0
1550 || (direction == ForColumns && styleRef().resolvedJustifyContentDistribu tion(normalValueBehavior()) != ContentDistributionStretch) 1551 || (direction == ForColumns && styleRef().resolvedJustifyContentDistribu tion(contentAlignmentNormalBehavior()) != ContentDistributionStretch)
1551 || (direction == ForRows && styleRef().resolvedAlignContentDistribution( normalValueBehavior()) != ContentDistributionStretch)) 1552 || (direction == ForRows && styleRef().resolvedAlignContentDistribution( contentAlignmentNormalBehavior()) != ContentDistributionStretch))
1552 return; 1553 return;
1553 1554
1554 // Spec defines auto-sized tracks as the ones with an 'auto' max-sizing func tion. 1555 // Spec defines auto-sized tracks as the ones with an 'auto' max-sizing func tion.
1555 Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTra cks : sizingData.rowTracks; 1556 Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTra cks : sizingData.rowTracks;
1556 Vector<unsigned> autoSizedTracksIndex; 1557 Vector<unsigned> autoSizedTracksIndex;
1557 for (unsigned i = 0; i < tracks.size(); ++i) { 1558 for (unsigned i = 0; i < tracks.size(); ++i) {
1558 const GridTrackSize& trackSize = gridTrackSize(direction, i); 1559 const GridTrackSize& trackSize = gridTrackSize(direction, i);
1559 if (trackSize.hasAutoMaxTrackBreadth()) 1560 if (trackSize.hasAutoMaxTrackBreadth())
1560 autoSizedTracksIndex.append(i); 1561 autoSizedTracksIndex.append(i);
1561 } 1562 }
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1880 void LayoutGrid::applyStretchAlignmentToChildIfNeeded(LayoutBox& child) 1881 void LayoutGrid::applyStretchAlignmentToChildIfNeeded(LayoutBox& child)
1881 { 1882 {
1882 // We clear height override values because we will decide now whether it's a llowed or 1883 // We clear height override values because we will decide now whether it's a llowed or
1883 // not, evaluating the conditions which might have changed since the old val ues were set. 1884 // not, evaluating the conditions which might have changed since the old val ues were set.
1884 child.clearOverrideLogicalContentHeight(); 1885 child.clearOverrideLogicalContentHeight();
1885 1886
1886 auto& childStyle = child.styleRef(); 1887 auto& childStyle = child.styleRef();
1887 bool isHorizontalMode = isHorizontalWritingMode(); 1888 bool isHorizontalMode = isHorizontalWritingMode();
1888 bool hasAutoSizeInColumnAxis = isHorizontalMode ? childStyle.height().isAuto () : childStyle.width().isAuto(); 1889 bool hasAutoSizeInColumnAxis = isHorizontalMode ? childStyle.height().isAuto () : childStyle.width().isAuto();
1889 bool allowedToStretchChildAlongColumnAxis = hasAutoSizeInColumnAxis && !chil dStyle.marginBeforeUsing(style()).isAuto() && !childStyle.marginAfterUsing(style ()).isAuto(); 1890 bool allowedToStretchChildAlongColumnAxis = hasAutoSizeInColumnAxis && !chil dStyle.marginBeforeUsing(style()).isAuto() && !childStyle.marginAfterUsing(style ()).isAuto();
1890 if (allowedToStretchChildAlongColumnAxis && ComputedStyle::resolveAlignment( styleRef(), childStyle, ItemPositionStretch) == ItemPositionStretch) { 1891 if (allowedToStretchChildAlongColumnAxis && childStyle.resolvedAlignSelf(sel fAlignmentNormalBehavior).position() == ItemPositionStretch) {
1891 // TODO (lajava): If the child has orthogonal flow, then it already has an override height set, so use it. 1892 // TODO (lajava): If the child has orthogonal flow, then it already has an override height set, so use it.
1892 // TODO (lajava): grid track sizing and positioning do not support ortho gonal modes yet. 1893 // TODO (lajava): grid track sizing and positioning do not support ortho gonal modes yet.
1893 if (child.isHorizontalWritingMode() == isHorizontalMode) { 1894 if (child.isHorizontalWritingMode() == isHorizontalMode) {
1894 LayoutUnit stretchedLogicalHeight = availableAlignmentSpaceForChildB eforeStretching(child.overrideContainingBlockContentLogicalHeight(), child); 1895 LayoutUnit stretchedLogicalHeight = availableAlignmentSpaceForChildB eforeStretching(child.overrideContainingBlockContentLogicalHeight(), child);
1895 LayoutUnit desiredLogicalHeight = child.constrainLogicalHeightByMinM ax(stretchedLogicalHeight, LayoutUnit(-1)); 1896 LayoutUnit desiredLogicalHeight = child.constrainLogicalHeightByMinM ax(stretchedLogicalHeight, LayoutUnit(-1));
1896 child.setOverrideLogicalContentHeight(desiredLogicalHeight - child.b orderAndPaddingLogicalHeight()); 1897 child.setOverrideLogicalContentHeight(desiredLogicalHeight - child.b orderAndPaddingLogicalHeight());
1897 if (desiredLogicalHeight != child.logicalHeight()) { 1898 if (desiredLogicalHeight != child.logicalHeight()) {
1898 // TODO (lajava): Can avoid laying out here in some cases. See h ttps://webkit.org/b/87905. 1899 // TODO (lajava): Can avoid laying out here in some cases. See h ttps://webkit.org/b/87905.
1899 child.setLogicalHeight(LayoutUnit()); 1900 child.setLogicalHeight(LayoutUnit());
1900 child.setNeedsLayout(LayoutInvalidationReason::GridChanged); 1901 child.setNeedsLayout(LayoutInvalidationReason::GridChanged);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1958 child.setMarginBefore(availableAlignmentSpace, style()); 1959 child.setMarginBefore(availableAlignmentSpace, style());
1959 } else if (marginAfter.isAuto()) { 1960 } else if (marginAfter.isAuto()) {
1960 child.setMarginAfter(availableAlignmentSpace, style()); 1961 child.setMarginAfter(availableAlignmentSpace, style());
1961 } 1962 }
1962 } 1963 }
1963 1964
1964 GridAxisPosition LayoutGrid::columnAxisPositionForChild(const LayoutBox& child) const 1965 GridAxisPosition LayoutGrid::columnAxisPositionForChild(const LayoutBox& child) const
1965 { 1966 {
1966 bool hasSameWritingMode = child.styleRef().getWritingMode() == styleRef().ge tWritingMode(); 1967 bool hasSameWritingMode = child.styleRef().getWritingMode() == styleRef().ge tWritingMode();
1967 1968
1968 switch (ComputedStyle::resolveAlignment(styleRef(), child.styleRef(), ItemPo sitionStretch)) { 1969 switch (child.styleRef().resolvedAlignSelf(selfAlignmentNormalBehavior).posi tion()) {
1969 case ItemPositionSelfStart: 1970 case ItemPositionSelfStart:
1970 // If orthogonal writing-modes, this computes to 'start'. 1971 // If orthogonal writing-modes, this computes to 'start'.
1971 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet. 1972 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet.
1972 // self-start is based on the child's block axis direction. That's why w e need to check against the grid container's block flow. 1973 // self-start is based on the child's block axis direction. That's why w e need to check against the grid container's block flow.
1973 return (isOrthogonalChild(child) || hasSameWritingMode) ? GridAxisStart : GridAxisEnd; 1974 return (isOrthogonalChild(child) || hasSameWritingMode) ? GridAxisStart : GridAxisEnd;
1974 case ItemPositionSelfEnd: 1975 case ItemPositionSelfEnd:
1975 // If orthogonal writing-modes, this computes to 'end'. 1976 // If orthogonal writing-modes, this computes to 'end'.
1976 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet. 1977 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet.
1977 // self-end is based on the child's block axis direction. That's why we need to check against the grid container's block flow. 1978 // self-end is based on the child's block axis direction. That's why we need to check against the grid container's block flow.
1978 return (isOrthogonalChild(child) || hasSameWritingMode) ? GridAxisEnd : GridAxisStart; 1979 return (isOrthogonalChild(child) || hasSameWritingMode) ? GridAxisEnd : GridAxisStart;
(...skipping 16 matching lines...) Expand all
1995 case ItemPositionEnd: 1996 case ItemPositionEnd:
1996 return GridAxisEnd; 1997 return GridAxisEnd;
1997 case ItemPositionStretch: 1998 case ItemPositionStretch:
1998 return GridAxisStart; 1999 return GridAxisStart;
1999 case ItemPositionBaseline: 2000 case ItemPositionBaseline:
2000 case ItemPositionLastBaseline: 2001 case ItemPositionLastBaseline:
2001 // FIXME: These two require implementing Baseline Alignment. For now, we always 'start' align the child. 2002 // FIXME: These two require implementing Baseline Alignment. For now, we always 'start' align the child.
2002 // crbug.com/234191 2003 // crbug.com/234191
2003 return GridAxisStart; 2004 return GridAxisStart;
2004 case ItemPositionAuto: 2005 case ItemPositionAuto:
2006 case ItemPositionNormal:
2005 break; 2007 break;
2006 } 2008 }
2007 2009
2008 ASSERT_NOT_REACHED(); 2010 ASSERT_NOT_REACHED();
2009 return GridAxisStart; 2011 return GridAxisStart;
2010 } 2012 }
2011 2013
2012 GridAxisPosition LayoutGrid::rowAxisPositionForChild(const LayoutBox& child) con st 2014 GridAxisPosition LayoutGrid::rowAxisPositionForChild(const LayoutBox& child) con st
2013 { 2015 {
2014 bool hasSameDirection = child.styleRef().direction() == styleRef().direction (); 2016 bool hasSameDirection = child.styleRef().direction() == styleRef().direction ();
2015 bool isLTR = styleRef().isLeftToRightDirection(); 2017 bool isLTR = styleRef().isLeftToRightDirection();
2016 2018
2017 switch (ComputedStyle::resolveJustification(styleRef(), child.styleRef(), It emPositionStretch)) { 2019 switch (child.styleRef().resolvedJustifySelf(selfAlignmentNormalBehavior).po sition()) {
2018 case ItemPositionSelfStart: 2020 case ItemPositionSelfStart:
2019 // For orthogonal writing-modes, this computes to 'start' 2021 // For orthogonal writing-modes, this computes to 'start'
2020 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet. 2022 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet.
2021 // self-start is based on the child's direction. That's why we need to c heck against the grid container's direction. 2023 // self-start is based on the child's direction. That's why we need to c heck against the grid container's direction.
2022 return (isOrthogonalChild(child) || hasSameDirection) ? GridAxisStart : GridAxisEnd; 2024 return (isOrthogonalChild(child) || hasSameDirection) ? GridAxisStart : GridAxisEnd;
2023 case ItemPositionSelfEnd: 2025 case ItemPositionSelfEnd:
2024 // For orthogonal writing-modes, this computes to 'start' 2026 // For orthogonal writing-modes, this computes to 'start'
2025 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet. 2027 // FIXME: grid track sizing and positioning do not support orthogonal mo des yet.
2026 return (isOrthogonalChild(child) || hasSameDirection) ? GridAxisEnd : Gr idAxisStart; 2028 return (isOrthogonalChild(child) || hasSameDirection) ? GridAxisEnd : Gr idAxisStart;
2027 case ItemPositionLeft: 2029 case ItemPositionLeft:
2028 return isLTR ? GridAxisStart : GridAxisEnd; 2030 return isLTR ? GridAxisStart : GridAxisEnd;
2029 case ItemPositionRight: 2031 case ItemPositionRight:
2030 return isLTR ? GridAxisEnd : GridAxisStart; 2032 return isLTR ? GridAxisEnd : GridAxisStart;
2031 case ItemPositionCenter: 2033 case ItemPositionCenter:
2032 return GridAxisCenter; 2034 return GridAxisCenter;
2033 case ItemPositionFlexStart: // Only used in flex layout, otherwise equivalen t to 'start'. 2035 case ItemPositionFlexStart: // Only used in flex layout, otherwise equivalen t to 'start'.
2034 case ItemPositionStart: 2036 case ItemPositionStart:
2035 return GridAxisStart; 2037 return GridAxisStart;
2036 case ItemPositionFlexEnd: // Only used in flex layout, otherwise equivalent to 'end'. 2038 case ItemPositionFlexEnd: // Only used in flex layout, otherwise equivalent to 'end'.
2037 case ItemPositionEnd: 2039 case ItemPositionEnd:
2038 return GridAxisEnd; 2040 return GridAxisEnd;
2039 case ItemPositionStretch: 2041 case ItemPositionStretch:
2040 return GridAxisStart; 2042 return GridAxisStart;
2041 case ItemPositionBaseline: 2043 case ItemPositionBaseline:
2042 case ItemPositionLastBaseline: 2044 case ItemPositionLastBaseline:
2043 // FIXME: These two require implementing Baseline Alignment. For now, we always 'start' align the child. 2045 // FIXME: These two require implementing Baseline Alignment. For now, we always 'start' align the child.
2044 // crbug.com/234191 2046 // crbug.com/234191
2045 return GridAxisStart; 2047 return GridAxisStart;
2046 case ItemPositionAuto: 2048 case ItemPositionAuto:
2049 case ItemPositionNormal:
2047 break; 2050 break;
2048 } 2051 }
2049 2052
2050 ASSERT_NOT_REACHED(); 2053 ASSERT_NOT_REACHED();
2051 return GridAxisStart; 2054 return GridAxisStart;
2052 } 2055 }
2053 2056
2054 LayoutUnit LayoutGrid::columnAxisOffsetForChild(const LayoutBox& child, GridSizi ngData& sizingData) const 2057 LayoutUnit LayoutGrid::columnAxisOffsetForChild(const LayoutBox& child, GridSizi ngData& sizingData) const
2055 { 2058 {
2056 const GridSpan& rowsSpan = cachedGridSpan(child, ForRows); 2059 const GridSpan& rowsSpan = cachedGridSpan(child, ForRows);
(...skipping 12 matching lines...) Expand all
2069 LayoutUnit endOfRow = m_rowPositions[childEndLine]; 2072 LayoutUnit endOfRow = m_rowPositions[childEndLine];
2070 // m_rowPositions include distribution offset (because of content alignm ent) and gutters 2073 // m_rowPositions include distribution offset (because of content alignm ent) and gutters
2071 // so we need to subtract them to get the actual end position for a give n row 2074 // so we need to subtract them to get the actual end position for a give n row
2072 // (this does not have to be done for the last track as there are no mor e m_columnPositions after it). 2075 // (this does not have to be done for the last track as there are no mor e m_columnPositions after it).
2073 LayoutUnit trackGap = guttersSize(ForRows, 2); 2076 LayoutUnit trackGap = guttersSize(ForRows, 2);
2074 if (childEndLine < m_rowPositions.size() - 1) { 2077 if (childEndLine < m_rowPositions.size() - 1) {
2075 endOfRow -= trackGap; 2078 endOfRow -= trackGap;
2076 endOfRow -= m_offsetBetweenRows; 2079 endOfRow -= m_offsetBetweenRows;
2077 } 2080 }
2078 LayoutUnit childBreadth = child.logicalHeight() + child.marginLogicalHei ght(); 2081 LayoutUnit childBreadth = child.logicalHeight() + child.marginLogicalHei ght();
2079 OverflowAlignment overflow = child.styleRef().resolvedAlignment(styleRef (), ItemPositionStretch).overflow(); 2082 OverflowAlignment overflow = child.styleRef().resolvedAlignSelf(selfAlig nmentNormalBehavior).overflow();
2080 LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(over flow, endOfRow - startOfRow, childBreadth); 2083 LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(over flow, endOfRow - startOfRow, childBreadth);
2081 return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPos ition : offsetFromStartPosition / 2); 2084 return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPos ition : offsetFromStartPosition / 2);
2082 } 2085 }
2083 } 2086 }
2084 2087
2085 ASSERT_NOT_REACHED(); 2088 ASSERT_NOT_REACHED();
2086 return LayoutUnit(); 2089 return LayoutUnit();
2087 } 2090 }
2088 2091
2089 LayoutUnit LayoutGrid::rowAxisOffsetForChild(const LayoutBox& child, GridSizingD ata& sizingData) const 2092 LayoutUnit LayoutGrid::rowAxisOffsetForChild(const LayoutBox& child, GridSizingD ata& sizingData) const
(...skipping 14 matching lines...) Expand all
2104 LayoutUnit endOfColumn = m_columnPositions[childEndLine]; 2107 LayoutUnit endOfColumn = m_columnPositions[childEndLine];
2105 // m_columnPositions include distribution offset (because of content ali gnment) and gutters 2108 // m_columnPositions include distribution offset (because of content ali gnment) and gutters
2106 // so we need to subtract them to get the actual end position for a give n column 2109 // so we need to subtract them to get the actual end position for a give n column
2107 // (this does not have to be done for the last track as there are no mor e m_columnPositions after it). 2110 // (this does not have to be done for the last track as there are no mor e m_columnPositions after it).
2108 LayoutUnit trackGap = guttersSize(ForColumns, 2); 2111 LayoutUnit trackGap = guttersSize(ForColumns, 2);
2109 if (childEndLine < m_columnPositions.size() - 1) { 2112 if (childEndLine < m_columnPositions.size() - 1) {
2110 endOfColumn -= trackGap; 2113 endOfColumn -= trackGap;
2111 endOfColumn -= m_offsetBetweenColumns; 2114 endOfColumn -= m_offsetBetweenColumns;
2112 } 2115 }
2113 LayoutUnit childBreadth = child.logicalWidth() + child.marginLogicalWidt h(); 2116 LayoutUnit childBreadth = child.logicalWidth() + child.marginLogicalWidt h();
2114 LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(chil d.styleRef().justifySelfOverflowAlignment(), endOfColumn - startOfColumn, childB readth); 2117 OverflowAlignment overflow = child.styleRef().resolvedJustifySelf(selfAl ignmentNormalBehavior).overflow();
2118 LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(over flow, endOfColumn - startOfColumn, childBreadth);
2115 return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPos ition : offsetFromStartPosition / 2); 2119 return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPos ition : offsetFromStartPosition / 2);
2116 } 2120 }
2117 } 2121 }
2118 2122
2119 ASSERT_NOT_REACHED(); 2123 ASSERT_NOT_REACHED();
2120 return LayoutUnit(); 2124 return LayoutUnit();
2121 } 2125 }
2122 2126
2123 ContentPosition static resolveContentDistributionFallback(ContentDistributionTyp e distribution) 2127 ContentPosition static resolveContentDistributionFallback(ContentDistributionTyp e distribution)
2124 { 2128 {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2166 return {}; 2170 return {};
2167 } 2171 }
2168 2172
2169 ASSERT_NOT_REACHED(); 2173 ASSERT_NOT_REACHED();
2170 return {}; 2174 return {};
2171 } 2175 }
2172 2176
2173 ContentAlignmentData LayoutGrid::computeContentPositionAndDistributionOffset(Gri dTrackSizingDirection direction, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks) const 2177 ContentAlignmentData LayoutGrid::computeContentPositionAndDistributionOffset(Gri dTrackSizingDirection direction, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks) const
2174 { 2178 {
2175 bool isRowAxis = direction == ForColumns; 2179 bool isRowAxis = direction == ForColumns;
2176 ContentPosition position = isRowAxis ? styleRef().resolvedJustifyContentPosi tion(normalValueBehavior()) : styleRef().resolvedAlignContentPosition(normalValu eBehavior()); 2180 ContentPosition position = isRowAxis ? styleRef().resolvedJustifyContentPosi tion(contentAlignmentNormalBehavior()) : styleRef().resolvedAlignContentPosition (contentAlignmentNormalBehavior());
2177 ContentDistributionType distribution = isRowAxis ? styleRef().resolvedJustif yContentDistribution(normalValueBehavior()) : styleRef().resolvedAlignContentDis tribution(normalValueBehavior()); 2181 ContentDistributionType distribution = isRowAxis ? styleRef().resolvedJustif yContentDistribution(contentAlignmentNormalBehavior()) : styleRef().resolvedAlig nContentDistribution(contentAlignmentNormalBehavior());
2178 // If <content-distribution> value can't be applied, 'position' will become the associated 2182 // If <content-distribution> value can't be applied, 'position' will become the associated
2179 // <content-position> fallback value. 2183 // <content-position> fallback value.
2180 ContentAlignmentData contentAlignment = contentDistributionOffset(availableF reeSpace, position, distribution, numberOfGridTracks); 2184 ContentAlignmentData contentAlignment = contentDistributionOffset(availableF reeSpace, position, distribution, numberOfGridTracks);
2181 if (contentAlignment.isValid()) 2185 if (contentAlignment.isValid())
2182 return contentAlignment; 2186 return contentAlignment;
2183 2187
2184 OverflowAlignment overflow = isRowAxis ? styleRef().justifyContentOverflowAl ignment() : styleRef().alignContentOverflowAlignment(); 2188 OverflowAlignment overflow = isRowAxis ? styleRef().justifyContentOverflowAl ignment() : styleRef().alignContentOverflowAlignment();
2185 if (availableFreeSpace <= 0 && overflow == OverflowAlignmentSafe) 2189 if (availableFreeSpace <= 0 && overflow == OverflowAlignmentSafe)
2186 return {LayoutUnit(), LayoutUnit()}; 2190 return {LayoutUnit(), LayoutUnit()};
2187 2191
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2240 2244
2241 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child, sizingData )); 2245 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child, sizingData ));
2242 } 2246 }
2243 2247
2244 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa intOffset) const 2248 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa intOffset) const
2245 { 2249 {
2246 GridPainter(*this).paintChildren(paintInfo, paintOffset); 2250 GridPainter(*this).paintChildren(paintInfo, paintOffset);
2247 } 2251 }
2248 2252
2249 } // namespace blink 2253 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698