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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutFlexibleBox.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: Unskipped some repaint tests and rebaselined. Created 4 years, 7 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 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 24 matching lines...) Expand all
35 #include "core/layout/TextAutosizer.h" 35 #include "core/layout/TextAutosizer.h"
36 #include "core/paint/BlockPainter.h" 36 #include "core/paint/BlockPainter.h"
37 #include "core/paint/PaintLayer.h" 37 #include "core/paint/PaintLayer.h"
38 #include "core/style/ComputedStyle.h" 38 #include "core/style/ComputedStyle.h"
39 #include "platform/LengthFunctions.h" 39 #include "platform/LengthFunctions.h"
40 #include "wtf/MathExtras.h" 40 #include "wtf/MathExtras.h"
41 #include <limits> 41 #include <limits>
42 42
43 namespace blink { 43 namespace blink {
44 44
45 static const ItemPosition selfAlignmentNormalBehavior = ItemPositionStretch;
46
45 static bool hasAspectRatio(const LayoutBox& child) 47 static bool hasAspectRatio(const LayoutBox& child)
46 { 48 {
47 return child.isImage() || child.isCanvas() || child.isVideo(); 49 return child.isImage() || child.isCanvas() || child.isVideo();
48 } 50 }
49 51
50 struct LayoutFlexibleBox::LineContext { 52 struct LayoutFlexibleBox::LineContext {
51 LineContext(LayoutUnit crossAxisOffset, LayoutUnit crossAxisExtent, size_t n umberOfChildren, LayoutUnit maxAscent) 53 LineContext(LayoutUnit crossAxisOffset, LayoutUnit crossAxisExtent, size_t n umberOfChildren, LayoutUnit maxAscent)
52 : crossAxisOffset(crossAxisOffset) 54 : crossAxisOffset(crossAxisOffset)
53 , crossAxisExtent(crossAxisExtent) 55 , crossAxisExtent(crossAxisExtent)
54 , numberOfChildren(numberOfChildren) 56 , numberOfChildren(numberOfChildren)
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 int LayoutFlexibleBox::baselinePosition(FontBaseline, bool, LineDirectionMode di rection, LinePositionMode mode) const 176 int LayoutFlexibleBox::baselinePosition(FontBaseline, bool, LineDirectionMode di rection, LinePositionMode mode) const
175 { 177 {
176 ASSERT(mode == PositionOnContainingLine); 178 ASSERT(mode == PositionOnContainingLine);
177 int baseline = firstLineBoxBaseline(); 179 int baseline = firstLineBoxBaseline();
178 if (baseline == -1) 180 if (baseline == -1)
179 baseline = synthesizedBaselineFromContentBox(*this, direction); 181 baseline = synthesizedBaselineFromContentBox(*this, direction);
180 182
181 return beforeMarginInLineDirection(direction) + baseline; 183 return beforeMarginInLineDirection(direction) + baseline;
182 } 184 }
183 185
184 static const StyleContentAlignmentData& normalValueBehavior() 186 static const StyleContentAlignmentData& contentAlignmentNormalBehavior()
185 { 187 {
186 // The justify-content property applies along the main axis, but since flexi ng 188 // The justify-content property applies along the main axis, but since flexi ng
187 // in the main axis is controlled by flex, stretch behaves as flex-start (ig noring 189 // in the main axis is controlled by flex, stretch behaves as flex-start (ig noring
188 // the specified fallback alignment, if any). 190 // the specified fallback alignment, if any).
189 // https://drafts.csswg.org/css-align/#distribution-flex 191 // https://drafts.csswg.org/css-align/#distribution-flex
190 static const StyleContentAlignmentData normalBehavior = {ContentPositionNorm al, ContentDistributionStretch}; 192 static const StyleContentAlignmentData normalBehavior = {ContentPositionNorm al, ContentDistributionStretch};
191 return normalBehavior; 193 return normalBehavior;
192 } 194 }
193 195
194 int LayoutFlexibleBox::firstLineBoxBaseline() const 196 int LayoutFlexibleBox::firstLineBoxBaseline() const
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 void LayoutFlexibleBox::removeChild(LayoutObject* child) 304 void LayoutFlexibleBox::removeChild(LayoutObject* child)
303 { 305 {
304 LayoutBlock::removeChild(child); 306 LayoutBlock::removeChild(child);
305 m_intrinsicSizeAlongMainAxis.remove(child); 307 m_intrinsicSizeAlongMainAxis.remove(child);
306 } 308 }
307 309
308 void LayoutFlexibleBox::styleDidChange(StyleDifference diff, const ComputedStyle * oldStyle) 310 void LayoutFlexibleBox::styleDidChange(StyleDifference diff, const ComputedStyle * oldStyle)
309 { 311 {
310 LayoutBlock::styleDidChange(diff, oldStyle); 312 LayoutBlock::styleDidChange(diff, oldStyle);
311 313
312 if (oldStyle && oldStyle->alignItemsPosition() == ItemPositionStretch && dif f.needsFullLayout()) { 314 if (oldStyle && oldStyle->resolvedAlignItems(selfAlignmentNormalBehavior).po sition() == ItemPositionStretch && diff.needsFullLayout()) {
313 // Flex items that were previously stretching need to be relayed out so we can compute new available cross axis space. 315 // Flex items that were previously stretching need to be relayed out so we can compute new available cross axis space.
314 // This is only necessary for stretching since other alignment values do n't change the size of the box. 316 // This is only necessary for stretching since other alignment values do n't change the size of the box.
317 const ComputedStyle& newStyle = styleRef();
315 for (LayoutBox* child = firstChildBox(); child; child = child->nextSibli ngBox()) { 318 for (LayoutBox* child = firstChildBox(); child; child = child->nextSibli ngBox()) {
316 ItemPosition previousAlignment = ComputedStyle::resolveAlignment(*ol dStyle, child->styleRef(), ItemPositionStretch); 319 const ComputedStyle& childStyle = child->styleRef();
317 if (previousAlignment == ItemPositionStretch && previousAlignment != ComputedStyle::resolveAlignment(styleRef(), child->styleRef(), ItemPositionStre tch)) 320 ItemPosition previousAlignment = childStyle.resolvedAlignSelf(*oldSt yle, selfAlignmentNormalBehavior).position();
321 if (previousAlignment == ItemPositionStretch && previousAlignment != childStyle.resolvedAlignSelf(newStyle, selfAlignmentNormalBehavior).position())
318 child->setChildNeedsLayout(MarkOnlyThis); 322 child->setChildNeedsLayout(MarkOnlyThis);
319 } 323 }
320 } 324 }
321 } 325 }
322 326
323 void LayoutFlexibleBox::layoutBlock(bool relayoutChildren) 327 void LayoutFlexibleBox::layoutBlock(bool relayoutChildren)
324 { 328 {
325 ASSERT(needsLayout()); 329 ASSERT(needsLayout());
326 330
327 if (!relayoutChildren && simplifiedLayout()) 331 if (!relayoutChildren && simplifiedLayout())
(...skipping 1036 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 if (justifyContentDistribution == ContentDistributionSpaceAround) 1368 if (justifyContentDistribution == ContentDistributionSpaceAround)
1365 return availableFreeSpace / numberOfChildren; 1369 return availableFreeSpace / numberOfChildren;
1366 } 1370 }
1367 return LayoutUnit(); 1371 return LayoutUnit();
1368 } 1372 }
1369 1373
1370 static LayoutUnit alignmentOffset(LayoutUnit availableFreeSpace, ItemPosition po sition, LayoutUnit ascent, LayoutUnit maxAscent, bool isWrapReverse) 1374 static LayoutUnit alignmentOffset(LayoutUnit availableFreeSpace, ItemPosition po sition, LayoutUnit ascent, LayoutUnit maxAscent, bool isWrapReverse)
1371 { 1375 {
1372 switch (position) { 1376 switch (position) {
1373 case ItemPositionAuto: 1377 case ItemPositionAuto:
1378 case ItemPositionNormal:
1374 ASSERT_NOT_REACHED(); 1379 ASSERT_NOT_REACHED();
1375 break; 1380 break;
1376 case ItemPositionStretch: 1381 case ItemPositionStretch:
1377 // Actual stretching must be handled by the caller. 1382 // Actual stretching must be handled by the caller.
1378 // Since wrap-reverse flips cross start and cross end, stretch children should be aligned with the cross end. 1383 // Since wrap-reverse flips cross start and cross end, stretch children should be aligned with the cross end.
1379 // This matters because applyStretchAlignment doesn't always stretch or stretch fully (explicit cross size given, 1384 // This matters because applyStretchAlignment doesn't always stretch or stretch fully (explicit cross size given,
1380 // or stretching constrained by max-height/max-width). 1385 // or stretching constrained by max-height/max-width).
1381 // For flex-start and flex-end this is handled by alignmentForChild(). 1386 // For flex-start and flex-end this is handled by alignmentForChild().
1382 if (isWrapReverse) 1387 if (isWrapReverse)
1383 return availableFreeSpace; 1388 return availableFreeSpace;
(...skipping 28 matching lines...) Expand all
1412 if (hasOrthogonalFlow(child)) 1417 if (hasOrthogonalFlow(child))
1413 child.setOverrideLogicalContentHeight(childPreferredSize - child.borderA ndPaddingLogicalHeight()); 1418 child.setOverrideLogicalContentHeight(childPreferredSize - child.borderA ndPaddingLogicalHeight());
1414 else 1419 else
1415 child.setOverrideLogicalContentWidth(childPreferredSize - child.borderAn dPaddingLogicalWidth()); 1420 child.setOverrideLogicalContentWidth(childPreferredSize - child.borderAn dPaddingLogicalWidth());
1416 } 1421 }
1417 1422
1418 LayoutUnit LayoutFlexibleBox::staticMainAxisPositionForPositionedChild(const Lay outBox& child) 1423 LayoutUnit LayoutFlexibleBox::staticMainAxisPositionForPositionedChild(const Lay outBox& child)
1419 { 1424 {
1420 const LayoutUnit availableSpace = mainAxisContentExtent(contentLogicalHeight ()) - mainAxisExtentForChild(child); 1425 const LayoutUnit availableSpace = mainAxisContentExtent(contentLogicalHeight ()) - mainAxisExtentForChild(child);
1421 1426
1422 ContentPosition position = styleRef().resolvedJustifyContentPosition(normalV alueBehavior()); 1427 ContentPosition position = styleRef().resolvedJustifyContentPosition(content AlignmentNormalBehavior());
1423 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist ribution(normalValueBehavior()); 1428 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist ribution(contentAlignmentNormalBehavior());
1424 LayoutUnit offset = initialJustifyContentOffset(availableSpace, position, di stribution, 1); 1429 LayoutUnit offset = initialJustifyContentOffset(availableSpace, position, di stribution, 1);
1425 if (styleRef().flexDirection() == FlowRowReverse || styleRef().flexDirection () == FlowColumnReverse) 1430 if (styleRef().flexDirection() == FlowRowReverse || styleRef().flexDirection () == FlowColumnReverse)
1426 offset = availableSpace - offset; 1431 offset = availableSpace - offset;
1427 return offset; 1432 return offset;
1428 } 1433 }
1429 1434
1430 LayoutUnit LayoutFlexibleBox::staticCrossAxisPositionForPositionedChild(const La youtBox& child) 1435 LayoutUnit LayoutFlexibleBox::staticCrossAxisPositionForPositionedChild(const La youtBox& child)
1431 { 1436 {
1432 LayoutUnit availableSpace = crossAxisContentExtent() - crossAxisExtentForChi ld(child); 1437 LayoutUnit availableSpace = crossAxisContentExtent() - crossAxisExtentForChi ld(child);
1433 return alignmentOffset(availableSpace, alignmentForChild(child), LayoutUnit( ), LayoutUnit(), styleRef().flexWrap() == FlexWrapReverse); 1438 return alignmentOffset(availableSpace, alignmentForChild(child), LayoutUnit( ), LayoutUnit(), styleRef().flexWrap() == FlexWrapReverse);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 LayoutUnit staticBlockPosition = flowAwareBorderBefore() + flowAwarePaddingB efore(); 1490 LayoutUnit staticBlockPosition = flowAwareBorderBefore() + flowAwarePaddingB efore();
1486 if (childLayer->staticBlockPosition() != staticBlockPosition) { 1491 if (childLayer->staticBlockPosition() != staticBlockPosition) {
1487 childLayer->setStaticBlockPosition(staticBlockPosition); 1492 childLayer->setStaticBlockPosition(staticBlockPosition);
1488 if (child.style()->hasStaticBlockPosition(style()->isHorizontalWritingMo de())) 1493 if (child.style()->hasStaticBlockPosition(style()->isHorizontalWritingMo de()))
1489 child.setChildNeedsLayout(MarkOnlyThis); 1494 child.setChildNeedsLayout(MarkOnlyThis);
1490 } 1495 }
1491 } 1496 }
1492 1497
1493 ItemPosition LayoutFlexibleBox::alignmentForChild(const LayoutBox& child) const 1498 ItemPosition LayoutFlexibleBox::alignmentForChild(const LayoutBox& child) const
1494 { 1499 {
1495 ItemPosition align = ComputedStyle::resolveAlignment(styleRef(), child.style Ref(), ItemPositionStretch); 1500 ItemPosition align = child.styleRef().resolvedAlignSelf(styleRef(), selfAlig nmentNormalBehavior).position();
1501 DCHECK(align != ItemPositionAuto && align != ItemPositionNormal);
1496 1502
1497 if (align == ItemPositionBaseline && hasOrthogonalFlow(child)) 1503 if (align == ItemPositionBaseline && hasOrthogonalFlow(child))
1498 align = ItemPositionFlexStart; 1504 align = ItemPositionFlexStart;
1499 1505
1500 if (style()->flexWrap() == FlexWrapReverse) { 1506 if (style()->flexWrap() == FlexWrapReverse) {
1501 if (align == ItemPositionFlexStart) 1507 if (align == ItemPositionFlexStart)
1502 align = ItemPositionFlexEnd; 1508 align = ItemPositionFlexEnd;
1503 else if (align == ItemPositionFlexEnd) 1509 else if (align == ItemPositionFlexEnd)
1504 align = ItemPositionFlexStart; 1510 align = ItemPositionFlexStart;
1505 } 1511 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1578 { 1584 {
1579 if (isHorizontalFlow()) 1585 if (isHorizontalFlow())
1580 return child.styleRef().overflowY(); 1586 return child.styleRef().overflowY();
1581 return child.styleRef().overflowX(); 1587 return child.styleRef().overflowX();
1582 } 1588 }
1583 1589
1584 void LayoutFlexibleBox::layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, cons t OrderedFlexItemList& children, const Vector<LayoutUnit, 16>& childSizes, Layou tUnit availableFreeSpace, bool relayoutChildren, SubtreeLayoutScope& layoutScope , Vector<LineContext>& lineContexts) 1590 void LayoutFlexibleBox::layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, cons t OrderedFlexItemList& children, const Vector<LayoutUnit, 16>& childSizes, Layou tUnit availableFreeSpace, bool relayoutChildren, SubtreeLayoutScope& layoutScope , Vector<LineContext>& lineContexts)
1585 { 1591 {
1586 ASSERT(childSizes.size() == children.size()); 1592 ASSERT(childSizes.size() == children.size());
1587 1593
1588 ContentPosition position = styleRef().resolvedJustifyContentPosition(normalV alueBehavior()); 1594 ContentPosition position = styleRef().resolvedJustifyContentPosition(content AlignmentNormalBehavior());
1589 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist ribution(normalValueBehavior()); 1595 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist ribution(contentAlignmentNormalBehavior());
1590 1596
1591 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren( children); 1597 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren( children);
1592 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, available FreeSpace); 1598 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, available FreeSpace);
1593 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart() ; 1599 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart() ;
1594 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, position, distribution, numberOfChildrenForJustifyContent); 1600 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, position, distribution, numberOfChildrenForJustifyContent);
1595 if (style()->flexDirection() == FlowRowReverse && shouldPlaceBlockDirectionS crollbarOnLogicalLeft()) 1601 if (style()->flexDirection() == FlowRowReverse && shouldPlaceBlockDirectionS crollbarOnLogicalLeft())
1596 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizo ntalScrollbarHeight(); 1602 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizo ntalScrollbarHeight();
1597 1603
1598 LayoutUnit totalMainExtent = mainAxisExtent(); 1604 LayoutUnit totalMainExtent = mainAxisExtent();
1599 if (!shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) 1605 if (!shouldPlaceBlockDirectionScrollbarOnLogicalLeft())
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 } 1686 }
1681 1687
1682 if (m_numberOfInFlowChildrenOnFirstLine == -1) 1688 if (m_numberOfInFlowChildrenOnFirstLine == -1)
1683 m_numberOfInFlowChildrenOnFirstLine = seenInFlowPositionedChildren; 1689 m_numberOfInFlowChildrenOnFirstLine = seenInFlowPositionedChildren;
1684 lineContexts.append(LineContext(crossAxisOffset, maxChildCrossAxisExtent, ch ildren.size(), maxAscent)); 1690 lineContexts.append(LineContext(crossAxisOffset, maxChildCrossAxisExtent, ch ildren.size(), maxAscent));
1685 crossAxisOffset += maxChildCrossAxisExtent; 1691 crossAxisOffset += maxChildCrossAxisExtent;
1686 } 1692 }
1687 1693
1688 void LayoutFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children, LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace) 1694 void LayoutFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children, LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace)
1689 { 1695 {
1690 ContentPosition position = styleRef().resolvedJustifyContentPosition(normalV alueBehavior()); 1696 ContentPosition position = styleRef().resolvedJustifyContentPosition(content AlignmentNormalBehavior());
1691 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist ribution(normalValueBehavior()); 1697 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist ribution(contentAlignmentNormalBehavior());
1692 1698
1693 // This is similar to the logic in layoutAndPlaceChildren, except we place t he children 1699 // This is similar to the logic in layoutAndPlaceChildren, except we place t he children
1694 // starting from the end of the flexbox. We also don't need to layout anythi ng since we're 1700 // starting from the end of the flexbox. We also don't need to layout anythi ng since we're
1695 // just moving the children to a new position. 1701 // just moving the children to a new position.
1696 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren( children); 1702 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren( children);
1697 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwa rePaddingEnd(); 1703 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwa rePaddingEnd();
1698 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, position, distribution, numberOfChildrenForJustifyContent); 1704 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, position, distribution, numberOfChildrenForJustifyContent);
1699 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontal ScrollbarHeight(); 1705 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontal ScrollbarHeight();
1700 1706
1701 size_t seenInFlowPositionedChildren = 0; 1707 size_t seenInFlowPositionedChildren = 0;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1740 if (alignContentDistribution == ContentDistributionSpaceBetween) 1746 if (alignContentDistribution == ContentDistributionSpaceBetween)
1741 return availableFreeSpace / (numberOfLines - 1); 1747 return availableFreeSpace / (numberOfLines - 1);
1742 if (alignContentDistribution == ContentDistributionSpaceAround || alignC ontentDistribution == ContentDistributionStretch) 1748 if (alignContentDistribution == ContentDistributionSpaceAround || alignC ontentDistribution == ContentDistributionStretch)
1743 return availableFreeSpace / numberOfLines; 1749 return availableFreeSpace / numberOfLines;
1744 } 1750 }
1745 return LayoutUnit(); 1751 return LayoutUnit();
1746 } 1752 }
1747 1753
1748 void LayoutFlexibleBox::alignFlexLines(Vector<LineContext>& lineContexts) 1754 void LayoutFlexibleBox::alignFlexLines(Vector<LineContext>& lineContexts)
1749 { 1755 {
1750 ContentPosition position = styleRef().resolvedAlignContentPosition(normalVal ueBehavior()); 1756 ContentPosition position = styleRef().resolvedAlignContentPosition(contentAl ignmentNormalBehavior());
1751 ContentDistributionType distribution = styleRef().resolvedAlignContentDistri bution(normalValueBehavior()); 1757 ContentDistributionType distribution = styleRef().resolvedAlignContentDistri bution(contentAlignmentNormalBehavior());
1752 1758
1753 // If we have a single line flexbox or a multiline line flexbox with only on e flex line, 1759 // If we have a single line flexbox or a multiline line flexbox with only on e flex line,
1754 // the line height is all the available space. 1760 // the line height is all the available space.
1755 // For flex-direction: row, this means we need to use the height, so we do t his after calling updateLogicalHeight. 1761 // For flex-direction: row, this means we need to use the height, so we do t his after calling updateLogicalHeight.
1756 if (lineContexts.size() == 1) { 1762 if (lineContexts.size() == 1) {
1757 lineContexts[0].crossAxisExtent = crossAxisContentExtent(); 1763 lineContexts[0].crossAxisExtent = crossAxisContentExtent();
1758 return; 1764 return;
1759 } 1765 }
1760 1766
1761 if (position == ContentPositionFlexStart) 1767 if (position == ContentPositionFlexStart)
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1903 ASSERT(child); 1909 ASSERT(child);
1904 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent; 1910 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent;
1905 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge; 1911 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge;
1906 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent; 1912 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent;
1907 adjustAlignmentForChild(*child, newOffset - originalOffset); 1913 adjustAlignmentForChild(*child, newOffset - originalOffset);
1908 } 1914 }
1909 } 1915 }
1910 } 1916 }
1911 1917
1912 } // namespace blink 1918 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698