Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp |
| index 2ce5335c7c952e25732ab4126a4289b13b10babe..46c3e1665db2e76535c546e58f79773fd94fa2f7 100644 |
| --- a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp |
| +++ b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp |
| @@ -1418,9 +1418,15 @@ void LayoutFlexibleBox::alignChildren(const Vector<LineContext>& lineContexts) |
| adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child)); |
| break; |
| } |
| + case ItemPositionStart: |
| case ItemPositionFlexStart: |
| + // We treat flex-start the same as start because alignmentForChild fixed |
| + // it up appropriately |
| break; |
| + case ItemPositionEnd: |
| case ItemPositionFlexEnd: |
| + // We treat flex-end the same as end because alignmentForChild fixed |
| + // it up appropriately |
| adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child)); |
| break; |
| case ItemPositionCenter: |
| @@ -1437,15 +1443,30 @@ void LayoutFlexibleBox::alignChildren(const Vector<LineContext>& lineContexts) |
| minMarginAfterBaseline = std::min(minMarginAfterBaseline, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child) - startOffset); |
| break; |
| } |
| - case ItemPositionLastBaseline: |
| - case ItemPositionSelfStart: |
| - case ItemPositionSelfEnd: |
| - case ItemPositionStart: |
| - case ItemPositionEnd: |
| + case ItemPositionSelfStart: { |
| + bool hasSameCrossStartEdges = hasOrthogonalFlow(*child) ? child->styleRef().isLeftToRightDirection() == styleRef().isLeftToRightDirection() : child->styleRef().isFlippedBlocksWritingMode() == styleRef().isFlippedBlocksWritingMode(); |
| + if (!hasSameCrossStartEdges) |
| + adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child)); |
| + break; |
| + } |
| + case ItemPositionSelfEnd: { |
| + bool hasSameCrossStartEdges = hasOrthogonalFlow(*child) ? child->styleRef().isLeftToRightDirection() == styleRef().isLeftToRightDirection() : child->styleRef().isFlippedBlocksWritingMode() == styleRef().isFlippedBlocksWritingMode(); |
| + if (hasSameCrossStartEdges) |
| + adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child)); |
| + break; |
| + } |
| case ItemPositionLeft: |
| + // Cross-axis is only parallel to container's inline-axis when column-flow is used. |
| + if (isColumnFlow() && !style()->isLeftToRightDirection()) |
|
cbiesinger
2015/12/01 00:12:49
is that true? shouldn't it be if (!isHorizontalFlo
|
| + adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child)); |
| + break; |
| case ItemPositionRight: |
| - // FIXME: Implement these (https://crbug.com/507690). The extended grammar |
| - // is not enabled by default so we shouldn't hit this codepath. |
| + // Cross-axis is only parallel to container's inline-axis when column-flow is used. |
| + if (isColumnFlow() && style()->isLeftToRightDirection()) |
| + adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child)); |
| + break; |
| + case ItemPositionLastBaseline: // TODO (lajava): This feature is at-risk of being dropped during the CR period. |
|
cbiesinger
2015/12/01 00:12:49
if we're still parsing it, it seems better not to
|
| + default: |
| ASSERT_NOT_REACHED(); |
| break; |
| } |