| Index: third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| index 559ff539950feba2497a8a70f9deafaf72a786b3..1b285d3b3d2bc6da1a9fd56e3f359a4464c6163d 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| @@ -37,6 +37,7 @@
|
| namespace blink {
|
|
|
| static const int infinity = -1;
|
| +static const ItemPosition selfAlignmentNormalBehavior = ItemPositionStretch;
|
|
|
| class GridItemWithSpan;
|
|
|
| @@ -1537,7 +1538,7 @@ void LayoutGrid::dirtyGrid()
|
| m_gridIsDirty = true;
|
| }
|
|
|
| -static const StyleContentAlignmentData& normalValueBehavior()
|
| +static const StyleContentAlignmentData& contentAlignmentNormalBehavior()
|
| {
|
| static const StyleContentAlignmentData normalBehavior = {ContentPositionNormal, ContentDistributionStretch};
|
| return normalBehavior;
|
| @@ -1547,8 +1548,8 @@ void LayoutGrid::applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection
|
| {
|
| LayoutUnit& availableSpace = sizingData.freeSpaceForDirection(direction);
|
| if (availableSpace <= 0
|
| - || (direction == ForColumns && styleRef().resolvedJustifyContentDistribution(normalValueBehavior()) != ContentDistributionStretch)
|
| - || (direction == ForRows && styleRef().resolvedAlignContentDistribution(normalValueBehavior()) != ContentDistributionStretch))
|
| + || (direction == ForColumns && styleRef().resolvedJustifyContentDistribution(contentAlignmentNormalBehavior()) != ContentDistributionStretch)
|
| + || (direction == ForRows && styleRef().resolvedAlignContentDistribution(contentAlignmentNormalBehavior()) != ContentDistributionStretch))
|
| return;
|
|
|
| // Spec defines auto-sized tracks as the ones with an 'auto' max-sizing function.
|
| @@ -1887,7 +1888,7 @@ void LayoutGrid::applyStretchAlignmentToChildIfNeeded(LayoutBox& child)
|
| bool isHorizontalMode = isHorizontalWritingMode();
|
| bool hasAutoSizeInColumnAxis = isHorizontalMode ? childStyle.height().isAuto() : childStyle.width().isAuto();
|
| bool allowedToStretchChildAlongColumnAxis = hasAutoSizeInColumnAxis && !childStyle.marginBeforeUsing(style()).isAuto() && !childStyle.marginAfterUsing(style()).isAuto();
|
| - if (allowedToStretchChildAlongColumnAxis && ComputedStyle::resolveAlignment(styleRef(), childStyle, ItemPositionStretch) == ItemPositionStretch) {
|
| + if (allowedToStretchChildAlongColumnAxis && childStyle.resolvedAlignSelf(selfAlignmentNormalBehavior).position() == ItemPositionStretch) {
|
| // TODO (lajava): If the child has orthogonal flow, then it already has an override height set, so use it.
|
| // TODO (lajava): grid track sizing and positioning do not support orthogonal modes yet.
|
| if (child.isHorizontalWritingMode() == isHorizontalMode) {
|
| @@ -1965,7 +1966,7 @@ GridAxisPosition LayoutGrid::columnAxisPositionForChild(const LayoutBox& child)
|
| {
|
| bool hasSameWritingMode = child.styleRef().getWritingMode() == styleRef().getWritingMode();
|
|
|
| - switch (ComputedStyle::resolveAlignment(styleRef(), child.styleRef(), ItemPositionStretch)) {
|
| + switch (child.styleRef().resolvedAlignSelf(selfAlignmentNormalBehavior).position()) {
|
| case ItemPositionSelfStart:
|
| // If orthogonal writing-modes, this computes to 'start'.
|
| // FIXME: grid track sizing and positioning do not support orthogonal modes yet.
|
| @@ -2002,6 +2003,7 @@ GridAxisPosition LayoutGrid::columnAxisPositionForChild(const LayoutBox& child)
|
| // crbug.com/234191
|
| return GridAxisStart;
|
| case ItemPositionAuto:
|
| + case ItemPositionNormal:
|
| break;
|
| }
|
|
|
| @@ -2014,7 +2016,7 @@ GridAxisPosition LayoutGrid::rowAxisPositionForChild(const LayoutBox& child) con
|
| bool hasSameDirection = child.styleRef().direction() == styleRef().direction();
|
| bool isLTR = styleRef().isLeftToRightDirection();
|
|
|
| - switch (ComputedStyle::resolveJustification(styleRef(), child.styleRef(), ItemPositionStretch)) {
|
| + switch (child.styleRef().resolvedJustifySelf(selfAlignmentNormalBehavior).position()) {
|
| case ItemPositionSelfStart:
|
| // For orthogonal writing-modes, this computes to 'start'
|
| // FIXME: grid track sizing and positioning do not support orthogonal modes yet.
|
| @@ -2044,6 +2046,7 @@ GridAxisPosition LayoutGrid::rowAxisPositionForChild(const LayoutBox& child) con
|
| // crbug.com/234191
|
| return GridAxisStart;
|
| case ItemPositionAuto:
|
| + case ItemPositionNormal:
|
| break;
|
| }
|
|
|
| @@ -2076,7 +2079,7 @@ LayoutUnit LayoutGrid::columnAxisOffsetForChild(const LayoutBox& child, GridSizi
|
| endOfRow -= m_offsetBetweenRows;
|
| }
|
| LayoutUnit childBreadth = child.logicalHeight() + child.marginLogicalHeight();
|
| - OverflowAlignment overflow = child.styleRef().resolvedAlignment(styleRef(), ItemPositionStretch).overflow();
|
| + OverflowAlignment overflow = child.styleRef().resolvedAlignSelf(selfAlignmentNormalBehavior).overflow();
|
| LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(overflow, endOfRow - startOfRow, childBreadth);
|
| return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPosition : offsetFromStartPosition / 2);
|
| }
|
| @@ -2111,7 +2114,8 @@ LayoutUnit LayoutGrid::rowAxisOffsetForChild(const LayoutBox& child, GridSizingD
|
| endOfColumn -= m_offsetBetweenColumns;
|
| }
|
| LayoutUnit childBreadth = child.logicalWidth() + child.marginLogicalWidth();
|
| - LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(child.styleRef().justifySelfOverflowAlignment(), endOfColumn - startOfColumn, childBreadth);
|
| + OverflowAlignment overflow = child.styleRef().resolvedJustifySelf(selfAlignmentNormalBehavior).overflow();
|
| + LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(overflow, endOfColumn - startOfColumn, childBreadth);
|
| return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPosition : offsetFromStartPosition / 2);
|
| }
|
| }
|
| @@ -2173,8 +2177,8 @@ static ContentAlignmentData contentDistributionOffset(const LayoutUnit& availabl
|
| ContentAlignmentData LayoutGrid::computeContentPositionAndDistributionOffset(GridTrackSizingDirection direction, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks) const
|
| {
|
| bool isRowAxis = direction == ForColumns;
|
| - ContentPosition position = isRowAxis ? styleRef().resolvedJustifyContentPosition(normalValueBehavior()) : styleRef().resolvedAlignContentPosition(normalValueBehavior());
|
| - ContentDistributionType distribution = isRowAxis ? styleRef().resolvedJustifyContentDistribution(normalValueBehavior()) : styleRef().resolvedAlignContentDistribution(normalValueBehavior());
|
| + ContentPosition position = isRowAxis ? styleRef().resolvedJustifyContentPosition(contentAlignmentNormalBehavior()) : styleRef().resolvedAlignContentPosition(contentAlignmentNormalBehavior());
|
| + ContentDistributionType distribution = isRowAxis ? styleRef().resolvedJustifyContentDistribution(contentAlignmentNormalBehavior()) : styleRef().resolvedAlignContentDistribution(contentAlignmentNormalBehavior());
|
| // If <content-distribution> value can't be applied, 'position' will become the associated
|
| // <content-position> fallback value.
|
| ContentAlignmentData contentAlignment = contentDistributionOffset(availableFreeSpace, position, distribution, numberOfGridTracks);
|
|
|