| 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 9dd7479fb492ed1ce80437d48edb7e60809a0eab..a9d80d7ebbd8775def2668b9adf41c2c2b336d45 100644
 | 
| --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
 | 
| +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
 | 
| @@ -150,7 +150,8 @@ class LayoutGrid::GridIterator {
 | 
|  
 | 
|   public:
 | 
|    // |direction| is the direction that is fixed to |fixedTrackIndex| so e.g
 | 
| -  // GridIterator(m_grid, ForColumns, 1) will walk over the rows of the 2nd column.
 | 
| +  // GridIterator(m_grid, ForColumns, 1) will walk over the rows of the 2nd
 | 
| +  // column.
 | 
|    GridIterator(const GridRepresentation& grid,
 | 
|                 GridTrackSizingDirection direction,
 | 
|                 size_t fixedTrackIndex,
 | 
| @@ -194,7 +195,8 @@ class LayoutGrid::GridIterator {
 | 
|      size_t maxRows = std::min(m_rowIndex + rowSpan, m_grid.size());
 | 
|      size_t maxColumns = std::min(m_columnIndex + columnSpan, m_grid[0].size());
 | 
|  
 | 
| -    // This adds a O(N^2) behavior that shouldn't be a big deal as we expect spanning areas to be small.
 | 
| +    // This adds a O(N^2) behavior that shouldn't be a big deal as we expect
 | 
| +    // spanning areas to be small.
 | 
|      for (size_t row = m_rowIndex; row < maxRows; ++row) {
 | 
|        for (size_t column = m_columnIndex; column < maxColumns; ++column) {
 | 
|          const GridCell& children = m_grid[row][column];
 | 
| @@ -228,7 +230,8 @@ class LayoutGrid::GridIterator {
 | 
|                               m_rowIndex, m_rowIndex + rowSpan),
 | 
|                           GridSpan::translatedDefiniteGridSpan(
 | 
|                               m_columnIndex, m_columnIndex + columnSpan)));
 | 
| -        // Advance the iterator to avoid an infinite loop where we would return the same grid area over and over.
 | 
| +        // Advance the iterator to avoid an infinite loop where we would return
 | 
| +        // the same grid area over and over.
 | 
|          ++varyingTrackIndex;
 | 
|          return result;
 | 
|        }
 | 
| @@ -256,7 +259,8 @@ struct LayoutGrid::GridSizingData {
 | 
|    Vector<GridTrack> rowTracks;
 | 
|    Vector<size_t> contentSizedTracksIndex;
 | 
|  
 | 
| -  // Performance optimization: hold onto these Vectors until the end of Layout to avoid repeated malloc / free.
 | 
| +  // Performance optimization: hold onto these Vectors until the end of Layout
 | 
| +  // to avoid repeated malloc / free.
 | 
|    Vector<GridTrack*> filteredTracks;
 | 
|    Vector<GridItemWithSpan> itemsSortedByIncreasingSpan;
 | 
|    Vector<GridTrack*> growBeyondGrowthLimitsTracks;
 | 
| @@ -312,8 +316,9 @@ struct LayoutGrid::GridSizingData {
 | 
|   private:
 | 
|    LayoutUnit freeSpaceForColumns{};
 | 
|    LayoutUnit freeSpaceForRows{};
 | 
| -  // No need to store one per direction as it will be only used for computations during each axis
 | 
| -  // track sizing. It's cached here because we need it to compute relative sizes.
 | 
| +  // No need to store one per direction as it will be only used for computations
 | 
| +  // during each axis track sizing. It's cached here because we need it to
 | 
| +  // compute relative sizes.
 | 
|    LayoutUnit m_availableSpace;
 | 
|  };
 | 
|  
 | 
| @@ -338,14 +343,16 @@ LayoutGrid* LayoutGrid::createAnonymous(Document* document) {
 | 
|  void LayoutGrid::addChild(LayoutObject* newChild, LayoutObject* beforeChild) {
 | 
|    LayoutBlock::addChild(newChild, beforeChild);
 | 
|  
 | 
| -  // The grid needs to be recomputed as it might contain auto-placed items that will change their position.
 | 
| +  // The grid needs to be recomputed as it might contain auto-placed items that
 | 
| +  // will change their position.
 | 
|    dirtyGrid();
 | 
|  }
 | 
|  
 | 
|  void LayoutGrid::removeChild(LayoutObject* child) {
 | 
|    LayoutBlock::removeChild(child);
 | 
|  
 | 
| -  // The grid needs to be recomputed as it might contain auto-placed items that will change their position.
 | 
| +  // The grid needs to be recomputed as it might contain auto-placed items that
 | 
| +  // will change their position.
 | 
|    dirtyGrid();
 | 
|  }
 | 
|  
 | 
| @@ -355,8 +362,10 @@ void LayoutGrid::styleDidChange(StyleDifference diff,
 | 
|    if (!oldStyle)
 | 
|      return;
 | 
|  
 | 
| -  // FIXME: The following checks could be narrowed down if we kept track of which type of grid items we have:
 | 
| -  // - explicit grid size changes impact negative explicitely positioned and auto-placed grid items.
 | 
| +  // FIXME: The following checks could be narrowed down if we kept track of
 | 
| +  // which type of grid items we have:
 | 
| +  // - explicit grid size changes impact negative explicitely positioned and
 | 
| +  //   auto-placed grid items.
 | 
|    // - named grid lines only impact grid items with named grid lines.
 | 
|    // - auto-flow changes only impacts auto-placed children.
 | 
|  
 | 
| @@ -391,10 +400,11 @@ bool LayoutGrid::namedGridLinesDefinitionDidChange(
 | 
|  
 | 
|  size_t LayoutGrid::gridColumnCount() const {
 | 
|    DCHECK(!m_gridIsDirty);
 | 
| -  // Due to limitations in our internal representation, we cannot know the number of columns from
 | 
| -  // m_grid *if* there is no row (because m_grid would be empty). That's why in that case we need
 | 
| -  // to get it from the style. Note that we know for sure that there are't any implicit tracks,
 | 
| -  // because not having rows implies that there are no "normal" children (out-of-flow children are
 | 
| +  // Due to limitations in our internal representation, we cannot know the
 | 
| +  // number of columns from m_grid *if* there is no row (because m_grid would be
 | 
| +  // empty). That's why in that case we need to get it from the style. Note that
 | 
| +  // we know for sure that there are't any implicit tracks, because not having
 | 
| +  // rows implies that there are no "normal" children (out-of-flow children are
 | 
|    // not stored in m_grid).
 | 
|    return m_grid.size() ? m_grid[0].size()
 | 
|                         : GridPositionsResolver::explicitGridColumnCount(
 | 
| @@ -444,14 +454,16 @@ void LayoutGrid::repeatTracksSizingIfNeeded(GridSizingData& sizingData,
 | 
|                                              LayoutUnit availableSpaceForRows) {
 | 
|    DCHECK(sizingData.sizingState > GridSizingData::RowSizingFirstIteration);
 | 
|  
 | 
| -  // In orthogonal flow cases column track's size is determined by using the computed
 | 
| -  // row track's size, which it was estimated during the first cycle of the sizing
 | 
| -  // algorithm. Hence we need to repeat computeUsedBreadthOfGridTracks for both,
 | 
| -  // columns and rows, to determine the final values.
 | 
| +  // In orthogonal flow cases column track's size is determined by using the
 | 
| +  // computed row track's size, which it was estimated during the first cycle of
 | 
| +  // the sizing algorithm.
 | 
| +  // Hence we need to repeat computeUsedBreadthOfGridTracks for both, columns
 | 
| +  // and rows, to determine the final values.
 | 
|    // TODO (lajava): orthogonal flows is just one of the cases which may require
 | 
| -  // a new cycle of the sizing algorithm; there may be more. In addition, not all the
 | 
| -  // cases with orthogonal flows require this extra cycle; we need a more specific
 | 
| -  // condition to detect whether child's min-content contribution has changed or not.
 | 
| +  // a new cycle of the sizing algorithm; there may be more. In addition, not
 | 
| +  // all the cases with orthogonal flows require this extra cycle; we need a
 | 
| +  // more specific condition to detect whether child's min-content contribution
 | 
| +  // has changed or not.
 | 
|    if (m_hasAnyOrthogonalChild) {
 | 
|      computeTrackSizesForDefiniteSize(ForColumns, sizingData,
 | 
|                                       availableSpaceForColumns);
 | 
| @@ -469,8 +481,8 @@ void LayoutGrid::layoutBlock(bool relayoutChildren) {
 | 
|    SubtreeLayoutScope layoutScope(*this);
 | 
|  
 | 
|    {
 | 
| -    // LayoutState needs this deliberate scope to pop before updating scroll information (which
 | 
| -    // may trigger relayout).
 | 
| +    // LayoutState needs this deliberate scope to pop before updating scroll
 | 
| +    // information (which may trigger relayout).
 | 
|      LayoutState state(*this, locationOffset());
 | 
|  
 | 
|      LayoutSize previousSize = size();
 | 
| @@ -480,8 +492,9 @@ void LayoutGrid::layoutBlock(bool relayoutChildren) {
 | 
|  
 | 
|      TextAutosizer::LayoutScope textAutosizerLayoutScope(this, &layoutScope);
 | 
|  
 | 
| -    // TODO(svillar): we won't need to do this once the intrinsic width computation is isolated
 | 
| -    // from the LayoutGrid object state (it should not touch any attribute) (see crbug.com/627812)
 | 
| +    // TODO(svillar): we won't need to do this once the intrinsic width
 | 
| +    // computation is isolated from the LayoutGrid object state (it should not
 | 
| +    // touch any attribute) (see crbug.com/627812)
 | 
|      if (m_autoRepeatColumns &&
 | 
|          m_autoRepeatColumns !=
 | 
|              computeAutoRepeatTracksCount(ForColumns, TrackSizing))
 | 
| @@ -490,17 +503,19 @@ void LayoutGrid::layoutBlock(bool relayoutChildren) {
 | 
|  
 | 
|      GridSizingData sizingData(gridColumnCount(), gridRowCount());
 | 
|  
 | 
| -    // 1- First, the track sizing algorithm is used to resolve the sizes of the grid columns.
 | 
| -    // At this point the logical width is always definite as the above call to updateLogicalWidth()
 | 
| -    // properly resolves intrinsic sizes. We cannot do the same for heights though because many code
 | 
| -    // paths inside updateLogicalHeight() require a previous call to setLogicalHeight() to resolve
 | 
| -    // heights properly (like for positioned items for example).
 | 
| +    // 1- First, the track sizing algorithm is used to resolve the sizes of the
 | 
| +    // grid columns.
 | 
| +    // At this point the logical width is always definite as the above call to
 | 
| +    // updateLogicalWidth() properly resolves intrinsic sizes. We cannot do the
 | 
| +    // same for heights though because many code paths inside
 | 
| +    // updateLogicalHeight() require a previous call to setLogicalHeight() to
 | 
| +    // resolve heights properly (like for positioned items for example).
 | 
|      LayoutUnit availableSpaceForColumns = availableLogicalWidth();
 | 
|      computeTrackSizesForDefiniteSize(ForColumns, sizingData,
 | 
|                                       availableSpaceForColumns);
 | 
|  
 | 
| -    // 2- Next, the track sizing algorithm resolves the sizes of the grid rows, using the
 | 
| -    // grid column sizes calculated in the previous step.
 | 
| +    // 2- Next, the track sizing algorithm resolves the sizes of the grid rows,
 | 
| +    // using the grid column sizes calculated in the previous step.
 | 
|      if (cachedHasDefiniteLogicalHeight()) {
 | 
|        computeTrackSizesForDefiniteSize(
 | 
|            ForRows, sizingData,
 | 
| @@ -518,13 +533,14 @@ void LayoutGrid::layoutBlock(bool relayoutChildren) {
 | 
|      LayoutUnit oldClientAfterEdge = clientLogicalBottom();
 | 
|      updateLogicalHeight();
 | 
|  
 | 
| -    // 3- If the min-content contribution of any grid items have changed based on the row
 | 
| -    // sizes calculated in step 2, steps 1 and 2 are repeated with the new min-content
 | 
| -    // contribution (once only).
 | 
| +    // 3- If the min-content contribution of any grid items have changed based
 | 
| +    // on the row sizes calculated in step 2, steps 1 and 2 are repeated with
 | 
| +    // the new min-content contribution (once only).
 | 
|      repeatTracksSizingIfNeeded(sizingData, availableSpaceForColumns,
 | 
|                                 contentLogicalHeight());
 | 
|  
 | 
| -    // Grid container should have the minimum height of a line if it's editable. That doesn't affect track sizing though.
 | 
| +    // Grid container should have the minimum height of a line if it's editable.
 | 
| +    // That doesn't affect track sizing though.
 | 
|      if (hasLineIfEmpty())
 | 
|        setLogicalHeight(
 | 
|            std::max(logicalHeight(), minimumLogicalHeightForEmptyLine()));
 | 
| @@ -572,7 +588,8 @@ LayoutUnit LayoutGrid::gridGapForDirection(
 | 
|                          ? availableLogicalWidth()
 | 
|                          : availableLogicalHeightForPercentageComputation();
 | 
|  
 | 
| -  // TODO(rego): Maybe we could cache the computed percentage as a performance improvement.
 | 
| +  // TODO(rego): Maybe we could cache the computed percentage as a performance
 | 
| +  // improvement.
 | 
|    return valueForLength(gap, availableSize);
 | 
|  }
 | 
|  
 | 
| @@ -590,10 +607,11 @@ LayoutUnit LayoutGrid::guttersSize(GridTrackSizingDirection direction,
 | 
|    if (!hasAutoRepeatEmptyTracks(direction))
 | 
|      return gap * (span - 1);
 | 
|  
 | 
| -  // If there are collapsing tracks we need to be sure that gutters are properly collapsed. Apart
 | 
| -  // from that, if we have a collapsed track in the edges of the span we're considering, we need
 | 
| -  // to move forward (or backwards) in order to know whether the collapsed tracks reach the end of
 | 
| -  // the grid (so the gap becomes 0) or there is a non empty track before that.
 | 
| +  // If there are collapsing tracks we need to be sure that gutters are properly
 | 
| +  // collapsed. Apart from that, if we have a collapsed track in the edges of
 | 
| +  // the span we're considering, we need to move forward (or backwards) in order
 | 
| +  // to know whether the collapsed tracks reach the end of the grid (so the gap
 | 
| +  // becomes 0) or there is a non empty track before that.
 | 
|  
 | 
|    LayoutUnit gapAccumulator;
 | 
|    size_t endLine = startLine + span;
 | 
| @@ -609,8 +627,9 @@ LayoutUnit LayoutGrid::guttersSize(GridTrackSizingDirection direction,
 | 
|      gapAccumulator -= gap;
 | 
|    }
 | 
|  
 | 
| -  // If the startLine is the start line of a collapsed track we need to go backwards till we reach
 | 
| -  // a non collapsed track. If we find a non collapsed track we need to add that gap.
 | 
| +  // If the startLine is the start line of a collapsed track we need to go
 | 
| +  // backwards till we reach a non collapsed track. If we find a non collapsed
 | 
| +  // track we need to add that gap.
 | 
|    if (startLine && isEmptyAutoRepeatTrack(direction, startLine)) {
 | 
|      size_t nonEmptyTracksBeforeStartLine = startLine;
 | 
|      auto begin = isRowAxis ? m_autoRepeatEmptyColumns->begin()
 | 
| @@ -623,8 +642,9 @@ LayoutUnit LayoutGrid::guttersSize(GridTrackSizingDirection direction,
 | 
|        gapAccumulator += gap;
 | 
|    }
 | 
|  
 | 
| -  // If the endLine is the end line of a collapsed track we need to go forward till we reach a non
 | 
| -  // collapsed track. If we find a non collapsed track we need to add that gap.
 | 
| +  // If the endLine is the end line of a collapsed track we need to go forward
 | 
| +  // till we reach a non collapsed track. If we find a non collapsed track we
 | 
| +  // need to add that gap.
 | 
|    if (isEmptyAutoRepeatTrack(direction, endLine - 1)) {
 | 
|      size_t nonEmptyTracksAfterEndLine =
 | 
|          (isRowAxis ? gridColumnCount() : gridRowCount()) - endLine;
 | 
| @@ -633,7 +653,8 @@ LayoutUnit LayoutGrid::guttersSize(GridTrackSizingDirection direction,
 | 
|                                   : m_autoRepeatEmptyRows->find(endLine - 1);
 | 
|      auto endEmptyTrack = isRowAxis ? m_autoRepeatEmptyColumns->end()
 | 
|                                     : m_autoRepeatEmptyRows->end();
 | 
| -    // HashSet iterators do not implement operator- so we have to manually iterate to know the number of remaining empty tracks.
 | 
| +    // HashSet iterators do not implement operator- so we have to manually
 | 
| +    // iterate to know the number of remaining empty tracks.
 | 
|      for (auto it = ++currentEmptyTrack; it != endEmptyTrack; ++it) {
 | 
|        DCHECK(nonEmptyTracksAfterEndLine);
 | 
|        --nonEmptyTracksAfterEndLine;
 | 
| @@ -730,7 +751,8 @@ void LayoutGrid::computeUsedBreadthOfGridTracks(
 | 
|    Vector<size_t> flexibleSizedTracksIndex;
 | 
|    sizingData.contentSizedTracksIndex.shrink(0);
 | 
|  
 | 
| -  // Grid gutters were removed from freeSpace by the caller, but we must use them to compute relative (i.e. percentages) sizes.
 | 
| +  // Grid gutters were removed from freeSpace by the caller, but we must use
 | 
| +  // them to compute relative (i.e. percentages) sizes.
 | 
|    LayoutUnit maxSize = sizingData.availableSpace().clampNegativeToZero();
 | 
|    bool hasDefiniteFreeSpace = sizingData.sizingOperation == TrackSizing;
 | 
|  
 | 
| @@ -767,8 +789,8 @@ void LayoutGrid::computeUsedBreadthOfGridTracks(
 | 
|      ASSERT(!track.infiniteGrowthPotential());
 | 
|      baseSizesWithoutMaximization += track.baseSize();
 | 
|      growthLimitsWithoutMaximization += track.growthLimit();
 | 
| -    // The growth limit caps must be cleared now in order to properly sort tracks by growth
 | 
| -    // potential on an eventual "Maximize Tracks".
 | 
| +    // The growth limit caps must be cleared now in order to properly sort
 | 
| +    // tracks by growth potential on an eventual "Maximize Tracks".
 | 
|      track.setGrowthLimitCap(WTF::nullopt);
 | 
|    }
 | 
|    freeSpace = initialFreeSpace - baseSizesWithoutMaximization;
 | 
| @@ -776,7 +798,8 @@ void LayoutGrid::computeUsedBreadthOfGridTracks(
 | 
|    if (hasDefiniteFreeSpace && freeSpace <= 0)
 | 
|      return;
 | 
|  
 | 
| -  // 3. Grow all Grid tracks in GridTracks from their baseSize up to their growthLimit value until freeSpace is exhausted.
 | 
| +  // 3. Grow all Grid tracks in GridTracks from their baseSize up to their
 | 
| +  // growthLimit value until freeSpace is exhausted.
 | 
|    const size_t tracksSize = tracks.size();
 | 
|    if (hasDefiniteFreeSpace) {
 | 
|      Vector<GridTrack*> tracksForDistribution(tracksSize);
 | 
| @@ -888,11 +911,13 @@ double LayoutGrid::computeFlexFactorUnitSize(
 | 
|      LayoutUnit& leftOverSpace,
 | 
|      const Vector<size_t, 8>& flexibleTracksIndexes,
 | 
|      std::unique_ptr<TrackIndexSet> tracksToTreatAsInflexible) const {
 | 
| -  // We want to avoid the effect of flex factors sum below 1 making the factor unit size to grow exponentially.
 | 
| +  // We want to avoid the effect of flex factors sum below 1 making the factor
 | 
| +  // unit size to grow exponentially.
 | 
|    double hypotheticalFactorUnitSize =
 | 
|        leftOverSpace / std::max<double>(1, flexFactorSum);
 | 
|  
 | 
| -  // product of the hypothetical "flex factor unit" and any flexible track's "flex factor" must be grater than such track's "base size".
 | 
| +  // product of the hypothetical "flex factor unit" and any flexible track's
 | 
| +  // "flex factor" must be grater than such track's "base size".
 | 
|    std::unique_ptr<TrackIndexSet> additionalTracksToTreatAsInflexible =
 | 
|        std::move(tracksToTreatAsInflexible);
 | 
|    bool validFlexFactorUnit = true;
 | 
| @@ -999,9 +1024,10 @@ const GridTrackSize& LayoutGrid::rawGridTrackSize(
 | 
|                                : styleRef().gridAutoRepeatRowsInsertionPoint();
 | 
|    size_t autoRepeatTracksCount = autoRepeatCountForDirection(direction);
 | 
|  
 | 
| -  // We should not use GridPositionsResolver::explicitGridXXXCount() for this because the
 | 
| -  // explicit grid might be larger than the number of tracks in grid-template-rows|columns (if
 | 
| -  // grid-template-areas is specified for example).
 | 
| +  // We should not use GridPositionsResolver::explicitGridXXXCount() for this
 | 
| +  // because the explicit grid might be larger than the number of tracks in
 | 
| +  // grid-template-rows|columns (if grid-template-areas is specified for
 | 
| +  // example).
 | 
|    size_t explicitTracksCount = trackStyles.size() + autoRepeatTracksCount;
 | 
|  
 | 
|    int untranslatedIndexAsInt =
 | 
| @@ -1010,7 +1036,8 @@ const GridTrackSize& LayoutGrid::rawGridTrackSize(
 | 
|    size_t autoTrackStylesSize = autoTrackStyles.size();
 | 
|    if (untranslatedIndexAsInt < 0) {
 | 
|      int index = untranslatedIndexAsInt % static_cast<int>(autoTrackStylesSize);
 | 
| -    // We need to traspose the index because the first negative implicit line will get the last defined auto track and so on.
 | 
| +    // We need to traspose the index because the first negative implicit line
 | 
| +    // will get the last defined auto track and so on.
 | 
|      index += index ? autoTrackStylesSize : 0;
 | 
|      return autoTrackStyles[index];
 | 
|    }
 | 
| @@ -1046,9 +1073,11 @@ GridTrackSize LayoutGrid::gridTrackSize(GridTrackSizingDirection direction,
 | 
|  
 | 
|    GridLength minTrackBreadth = trackSize.minTrackBreadth();
 | 
|    GridLength maxTrackBreadth = trackSize.maxTrackBreadth();
 | 
| -  // If the logical width/height of the grid container is indefinite, percentage values are treated as <auto>.
 | 
| +  // If the logical width/height of the grid container is indefinite, percentage
 | 
| +  // values are treated as <auto>.
 | 
|    if (minTrackBreadth.hasPercentage() || maxTrackBreadth.hasPercentage()) {
 | 
| -    // For the inline axis this only happens when we're computing the intrinsic sizes (AvailableSpaceIndefinite).
 | 
| +    // For the inline axis this only happens when we're computing the intrinsic
 | 
| +    // sizes (AvailableSpaceIndefinite).
 | 
|      if ((sizingOperation == IntrinsicSizeComputation) ||
 | 
|          (direction == ForRows && !cachedHasDefiniteLogicalHeight())) {
 | 
|        if (minTrackBreadth.hasPercentage())
 | 
| @@ -1058,8 +1087,9 @@ GridTrackSize LayoutGrid::gridTrackSize(GridTrackSizingDirection direction,
 | 
|      }
 | 
|    }
 | 
|  
 | 
| -  // Flex sizes are invalid as a min sizing function. However we still can have a flexible |minTrackBreadth|
 | 
| -  // if the track had a flex size directly (e.g. "1fr"), the spec says that in this case it implies an automatic minimum.
 | 
| +  // Flex sizes are invalid as a min sizing function. However we still can have
 | 
| +  // a flexible |minTrackBreadth| if the track had a flex size directly (e.g.
 | 
| +  // "1fr"), the spec says that in this case it implies an automatic minimum.
 | 
|    if (minTrackBreadth.isFlex())
 | 
|      minTrackBreadth = Length(Auto);
 | 
|  
 | 
| @@ -1074,15 +1104,17 @@ LayoutUnit LayoutGrid::logicalHeightForChild(LayoutBox& child,
 | 
|                                               GridSizingData& sizingData) const {
 | 
|    GridTrackSizingDirection childBlockDirection =
 | 
|        flowAwareDirectionForChild(child, ForRows);
 | 
| -  // If |child| has a relative logical height, we shouldn't let it override its intrinsic height, which is
 | 
| -  // what we are interested in here. Thus we need to set the block-axis override size to -1 (no possible resolution).
 | 
| +  // If |child| has a relative logical height, we shouldn't let it override its
 | 
| +  // intrinsic height, which is what we are interested in here. Thus we need to
 | 
| +  // set the block-axis override size to -1 (no possible resolution).
 | 
|    if (shouldClearOverrideContainingBlockContentSizeForChild(child, ForRows)) {
 | 
|      setOverrideContainingBlockContentSizeForChild(child, childBlockDirection,
 | 
|                                                    LayoutUnit(-1));
 | 
|      child.setNeedsLayout(LayoutInvalidationReason::GridChanged);
 | 
|    }
 | 
|  
 | 
| -  // We need to clear the stretched height to properly compute logical height during layout.
 | 
| +  // We need to clear the stretched height to properly compute logical height
 | 
| +  // during layout.
 | 
|    if (child.needsLayout())
 | 
|      child.clearOverrideLogicalContentHeight();
 | 
|  
 | 
| @@ -1159,23 +1191,27 @@ LayoutUnit LayoutGrid::minContentForChild(LayoutBox& child,
 | 
|    GridTrackSizingDirection childInlineDirection =
 | 
|        flowAwareDirectionForChild(child, ForColumns);
 | 
|    if (direction == childInlineDirection) {
 | 
| -    // If |child| has a relative logical width, we shouldn't let it override its intrinsic width, which is
 | 
| -    // what we are interested in here. Thus we need to set the inline-axis override size to -1 (no possible resolution).
 | 
| +    // If |child| has a relative logical width, we shouldn't let it override its
 | 
| +    // intrinsic width, which is what we are interested in here. Thus we need to
 | 
| +    // set the inline-axis override size to -1 (no possible resolution).
 | 
|      if (shouldClearOverrideContainingBlockContentSizeForChild(child,
 | 
|                                                                ForColumns))
 | 
|        setOverrideContainingBlockContentSizeForChild(child, childInlineDirection,
 | 
|                                                      LayoutUnit(-1));
 | 
|  
 | 
| -    // FIXME: It's unclear if we should return the intrinsic width or the preferred width.
 | 
| +    // FIXME: It's unclear if we should return the intrinsic width or the
 | 
| +    // preferred width.
 | 
|      // See http://lists.w3.org/Archives/Public/www-style/2013Jan/0245.html
 | 
|      return child.minPreferredLogicalWidth() +
 | 
|             marginIntrinsicLogicalWidthForChild(child);
 | 
|    }
 | 
|  
 | 
| -  // All orthogonal flow boxes were already laid out during an early layout phase performed in FrameView::performLayout.
 | 
| -  // It's true that grid track sizing was not completed at that time and it may afffect the final height of a
 | 
| -  // grid item, but since it's forbidden to perform a layout during intrinsic width computation, we have to use
 | 
| -  // that computed height for now.
 | 
| +  // All orthogonal flow boxes were already laid out during an early layout
 | 
| +  // phase performed in FrameView::performLayout.
 | 
| +  // It's true that grid track sizing was not completed at that time and it may
 | 
| +  // afffect the final height of a grid item, but since it's forbidden to
 | 
| +  // perform a layout during intrinsic width computation, we have to use that
 | 
| +  // computed height for now.
 | 
|    if (direction == ForColumns &&
 | 
|        sizingData.sizingOperation == IntrinsicSizeComputation) {
 | 
|      DCHECK(isOrthogonalChild(child));
 | 
| @@ -1195,23 +1231,27 @@ LayoutUnit LayoutGrid::maxContentForChild(LayoutBox& child,
 | 
|    GridTrackSizingDirection childInlineDirection =
 | 
|        flowAwareDirectionForChild(child, ForColumns);
 | 
|    if (direction == childInlineDirection) {
 | 
| -    // If |child| has a relative logical width, we shouldn't let it override its intrinsic width, which is
 | 
| -    // what we are interested in here. Thus we need to set the inline-axis override size to -1 (no possible resolution).
 | 
| +    // If |child| has a relative logical width, we shouldn't let it override its
 | 
| +    // intrinsic width, which is what we are interested in here. Thus we need to
 | 
| +    // set the inline-axis override size to -1 (no possible resolution).
 | 
|      if (shouldClearOverrideContainingBlockContentSizeForChild(child,
 | 
|                                                                ForColumns))
 | 
|        setOverrideContainingBlockContentSizeForChild(child, childInlineDirection,
 | 
|                                                      LayoutUnit(-1));
 | 
|  
 | 
| -    // FIXME: It's unclear if we should return the intrinsic width or the preferred width.
 | 
| +    // FIXME: It's unclear if we should return the intrinsic width or the
 | 
| +    // preferred width.
 | 
|      // See http://lists.w3.org/Archives/Public/www-style/2013Jan/0245.html
 | 
|      return child.maxPreferredLogicalWidth() +
 | 
|             marginIntrinsicLogicalWidthForChild(child);
 | 
|    }
 | 
|  
 | 
| -  // All orthogonal flow boxes were already laid out during an early layout phase performed in FrameView::performLayout.
 | 
| -  // It's true that grid track sizing was not completed at that time and it may afffect the final height of a
 | 
| -  // grid item, but since it's forbidden to perform a layout during intrinsic width computation, we have to use
 | 
| -  // that computed height for now.
 | 
| +  // All orthogonal flow boxes were already laid out during an early layout
 | 
| +  // phase performed in FrameView::performLayout.
 | 
| +  // It's true that grid track sizing was not completed at that time and it may
 | 
| +  // afffect the final height of a grid item, but since it's forbidden to
 | 
| +  // perform a layout during intrinsic width computation, we have to use that
 | 
| +  // computed height for now.
 | 
|    if (direction == ForColumns &&
 | 
|        sizingData.sizingOperation == IntrinsicSizeComputation) {
 | 
|      DCHECK(isOrthogonalChild(child));
 | 
| @@ -1224,10 +1264,12 @@ LayoutUnit LayoutGrid::maxContentForChild(LayoutBox& child,
 | 
|    return logicalHeightForChild(child, sizingData);
 | 
|  }
 | 
|  
 | 
| -// We're basically using a class instead of a std::pair because of accessing gridItem() or getGridSpan() is much more
 | 
| -// self-explanatory that using .first or .second members in the pair. Having a std::pair<LayoutBox*, size_t>
 | 
| -// does not work either because we still need the GridSpan so we'd have to add an extra hash lookup for each item
 | 
| -// at the beginning of LayoutGrid::resolveContentBasedTrackSizingFunctionsForItems().
 | 
| +// We're basically using a class instead of a std::pair because of accessing
 | 
| +// gridItem() or getGridSpan() is much more self-explanatory that using .first
 | 
| +// or .second members in the pair. Having a std::pair<LayoutBox*, size_t>
 | 
| +// does not work either because we still need the GridSpan so we'd have to add
 | 
| +// an extra hash lookup for each item at the beginning of
 | 
| +// LayoutGrid::resolveContentBasedTrackSizingFunctionsForItems().
 | 
|  class GridItemWithSpan {
 | 
|   public:
 | 
|    GridItemWithSpan(LayoutBox& gridItem, const GridSpan& gridSpan)
 | 
| @@ -1560,8 +1602,8 @@ void LayoutGrid::resolveContentBasedTrackSizingFunctionsForItems(
 | 
|  
 | 
|  static bool sortByGridTrackGrowthPotential(const GridTrack* track1,
 | 
|                                             const GridTrack* track2) {
 | 
| -  // This check ensures that we respect the irreflexivity property of the strict weak ordering required by std::sort
 | 
| -  // (forall x: NOT x < x).
 | 
| +  // This check ensures that we respect the irreflexivity property of the strict
 | 
| +  // weak ordering required by std::sort(forall x: NOT x < x).
 | 
|    bool track1HasInfiniteGrowthPotentialWithoutCap =
 | 
|        track1->infiniteGrowthPotential() && !track1->growthLimitCap();
 | 
|    bool track2HasInfiniteGrowthPotentialWithoutCap =
 | 
| @@ -1634,8 +1676,9 @@ void LayoutGrid::distributeSpaceToTracks(
 | 
|    }
 | 
|  
 | 
|    if (availableLogicalSpace > 0 && growBeyondGrowthLimitsTracks) {
 | 
| -    // We need to sort them because there might be tracks with growth limit caps (like the ones
 | 
| -    // with fit-content()) which cannot indefinitely grow over the limits.
 | 
| +    // We need to sort them because there might be tracks with growth limit caps
 | 
| +    // (like the ones with fit-content()) which cannot indefinitely grow over
 | 
| +    // the limits.
 | 
|      if (phase == ResolveMaxContentMaximums)
 | 
|        std::sort(growBeyondGrowthLimitsTracks->begin(),
 | 
|                  growBeyondGrowthLimitsTracks->end(),
 | 
| @@ -1765,12 +1808,14 @@ size_t LayoutGrid::computeAutoRepeatTracksCount(
 | 
|                             : autoTrackSize.minTrackBreadth().length();
 | 
|      autoRepeatTracksSize += valueForLength(trackLength, availableSize);
 | 
|    }
 | 
| -  // For the purpose of finding the number of auto-repeated tracks, the UA must floor the track size to a UA-specified
 | 
| -  // value to avoid division by zero. It is suggested that this floor be 1px.
 | 
| +  // For the purpose of finding the number of auto-repeated tracks, the UA must
 | 
| +  // floor the track size to a UA-specified value to avoid division by zero. It
 | 
| +  // is suggested that this floor be 1px.
 | 
|    autoRepeatTracksSize =
 | 
|        std::max<LayoutUnit>(LayoutUnit(1), autoRepeatTracksSize);
 | 
|  
 | 
| -  // There will be always at least 1 auto-repeat track, so take it already into account when computing the total track size.
 | 
| +  // There will be always at least 1 auto-repeat track, so take it already into
 | 
| +  // account when computing the total track size.
 | 
|    LayoutUnit tracksSize = autoRepeatTracksSize;
 | 
|    const Vector<GridTrackSize>& trackSizes =
 | 
|        isRowAxis ? styleRef().gridTemplateColumns()
 | 
| @@ -1788,8 +1833,8 @@ size_t LayoutGrid::computeAutoRepeatTracksCount(
 | 
|                                   availableSize);
 | 
|    }
 | 
|  
 | 
| -  // Add gutters as if there where only 1 auto repeat track. Gaps between auto repeat tracks will be added later when
 | 
| -  // computing the repetitions.
 | 
| +  // Add gutters as if there where only 1 auto repeat track. Gaps between auto
 | 
| +  // repeat tracks will be added later when computing the repetitions.
 | 
|    LayoutUnit gapSize = gridGapForDirection(direction, sizingOperation);
 | 
|    tracksSize += gapSize * trackSizes.size();
 | 
|  
 | 
| @@ -1800,9 +1845,10 @@ size_t LayoutGrid::computeAutoRepeatTracksCount(
 | 
|    size_t repetitions =
 | 
|        1 + (freeSpace / (autoRepeatTracksSize + gapSize)).toInt();
 | 
|  
 | 
| -  // Provided the grid container does not have a definite size or max-size in the relevant axis,
 | 
| -  // if the min size is definite then the number of repetitions is the largest possible positive
 | 
| -  // integer that fulfills that minimum requirement.
 | 
| +  // Provided the grid container does not have a definite size or max-size in
 | 
| +  // the relevant axis, if the min size is definite then the number of
 | 
| +  // repetitions is the largest possible positive integer that fulfills that
 | 
| +  // minimum requirement.
 | 
|    if (needsToFulfillMinimumSize)
 | 
|      ++repetitions;
 | 
|  
 | 
| @@ -1943,7 +1989,8 @@ void LayoutGrid::populateExplicitGridAndOrderIterator() {
 | 
|      populator.collectChild(child);
 | 
|      m_gridItemsIndexesMap.set(child, childIndex++);
 | 
|  
 | 
| -    // This function bypasses the cache (cachedGridArea()) as it is used to build it.
 | 
| +    // This function bypasses the cache (cachedGridArea()) as it is used to
 | 
| +    // build it.
 | 
|      GridSpan rowPositions =
 | 
|          GridPositionsResolver::resolveGridPositionsFromStyle(
 | 
|              *style(), *child, ForRows, m_autoRepeatRows);
 | 
| @@ -1959,7 +2006,8 @@ void LayoutGrid::populateExplicitGridAndOrderIterator() {
 | 
|        maximumRowIndex =
 | 
|            std::max<int>(maximumRowIndex, rowPositions.untranslatedEndLine());
 | 
|      } else {
 | 
| -      // Grow the grid for items with a definite row span, getting the largest such span.
 | 
| +      // Grow the grid for items with a definite row span, getting the largest
 | 
| +      // such span.
 | 
|        size_t spanSize = GridPositionsResolver::spanSizeForAutoPlacedItem(
 | 
|            *style(), *child, ForRows);
 | 
|        maximumRowIndex = std::max(maximumRowIndex, spanSize);
 | 
| @@ -1971,7 +2019,8 @@ void LayoutGrid::populateExplicitGridAndOrderIterator() {
 | 
|        maximumColumnIndex = std::max<int>(maximumColumnIndex,
 | 
|                                           columnPositions.untranslatedEndLine());
 | 
|      } else {
 | 
| -      // Grow the grid for items with a definite column span, getting the largest such span.
 | 
| +      // Grow the grid for items with a definite column span, getting the
 | 
| +      // largest such span.
 | 
|        size_t spanSize = GridPositionsResolver::spanSizeForAutoPlacedItem(
 | 
|            *style(), *child, ForColumns);
 | 
|        maximumColumnIndex = std::max(maximumColumnIndex, spanSize);
 | 
| @@ -2009,8 +2058,9 @@ void LayoutGrid::placeSpecifiedMajorAxisItemsOnGrid(
 | 
|    bool isForColumns = autoPlacementMajorAxisDirection() == ForColumns;
 | 
|    bool isGridAutoFlowDense = style()->isGridAutoFlowAlgorithmDense();
 | 
|  
 | 
| -  // Mapping between the major axis tracks (rows or columns) and the last auto-placed item's position inserted on
 | 
| -  // that track. This is needed to implement "sparse" packing for items locked to a given track.
 | 
| +  // Mapping between the major axis tracks (rows or columns) and the last
 | 
| +  // auto-placed item's position inserted on that track. This is needed to
 | 
| +  // implement "sparse" packing for items locked to a given track.
 | 
|    // See http://dev.w3.org/csswg/css-grid/#auto-placement-algo
 | 
|    HashMap<unsigned, unsigned, DefaultHash<unsigned>::Hash,
 | 
|            WTF::UnsignedWithZeroKeyHashTraits<unsigned>>
 | 
| @@ -2087,7 +2137,8 @@ void LayoutGrid::placeAutoMajorAxisItemOnGrid(
 | 
|  
 | 
|    std::unique_ptr<GridArea> emptyGridArea;
 | 
|    if (minorAxisPositions.isTranslatedDefinite()) {
 | 
| -    // Move to the next track in major axis if initial position in minor axis is before auto-placement cursor.
 | 
| +    // Move to the next track in major axis if initial position in minor axis is
 | 
| +    // before auto-placement cursor.
 | 
|      if (minorAxisPositions.startLine() < minorAxisAutoPlacementCursor)
 | 
|        majorAxisAutoPlacementCursor++;
 | 
|  
 | 
| @@ -2114,7 +2165,9 @@ void LayoutGrid::placeAutoMajorAxisItemOnGrid(
 | 
|            iterator.nextEmptyGridArea(majorAxisSpanSize, minorAxisSpanSize);
 | 
|  
 | 
|        if (emptyGridArea) {
 | 
| -        // Check that it fits in the minor axis direction, as we shouldn't grow in that direction here (it was already managed in populateExplicitGridAndOrderIterator()).
 | 
| +        // Check that it fits in the minor axis direction, as we shouldn't grow
 | 
| +        // in that direction here (it was already managed in
 | 
| +        // populateExplicitGridAndOrderIterator()).
 | 
|          size_t minorAxisFinalPositionIndex =
 | 
|              autoPlacementMinorAxisDirection() == ForColumns
 | 
|                  ? emptyGridArea->columns.endLine()
 | 
| @@ -2125,12 +2178,14 @@ void LayoutGrid::placeAutoMajorAxisItemOnGrid(
 | 
|          if (minorAxisFinalPositionIndex <= endOfMinorAxis)
 | 
|            break;
 | 
|  
 | 
| -        // Discard empty grid area as it does not fit in the minor axis direction.
 | 
| -        // We don't need to create a new empty grid area yet as we might find a valid one in the next iteration.
 | 
| +        // Discard empty grid area as it does not fit in the minor axis
 | 
| +        // direction. We don't need to create a new empty grid area yet as we
 | 
| +        // might find a valid one in the next iteration.
 | 
|          emptyGridArea = nullptr;
 | 
|        }
 | 
|  
 | 
| -      // As we're moving to the next track in the major axis we should reset the auto-placement cursor in the minor axis.
 | 
| +      // As we're moving to the next track in the major axis we should reset the
 | 
| +      // auto-placement cursor in the minor axis.
 | 
|        minorAxisAutoPlacementCursor = 0;
 | 
|      }
 | 
|  
 | 
| @@ -2202,8 +2257,9 @@ Vector<LayoutUnit> LayoutGrid::trackSizesForComputedStyle(
 | 
|      if (isEmptyAutoRepeatTrack(direction, i - 1)) {
 | 
|        --remainingEmptyTracks;
 | 
|      } else {
 | 
| -      // Remove the gap between consecutive non empty tracks. Remove it also just once for an
 | 
| -      // arbitrary number of empty tracks between two non empty ones.
 | 
| +      // Remove the gap between consecutive non empty tracks. Remove it also
 | 
| +      // just once for an arbitrary number of empty tracks between two non empty
 | 
| +      // ones.
 | 
|        bool allRemainingTracksAreEmpty = remainingEmptyTracks == (lastLine - i);
 | 
|        if (!allRemainingTracksAreEmpty || !isEmptyAutoRepeatTrack(direction, i))
 | 
|          tracks[i - 1] -= gap;
 | 
| @@ -2232,7 +2288,8 @@ void LayoutGrid::applyStretchAlignmentToTracksIfNeeded(
 | 
|             contentAlignmentNormalBehavior()) != ContentDistributionStretch))
 | 
|      return;
 | 
|  
 | 
| -  // Spec defines auto-sized tracks as the ones with an 'auto' max-sizing function.
 | 
| +  // Spec defines auto-sized tracks as the ones with an 'auto' max-sizing
 | 
| +  // function.
 | 
|    Vector<GridTrack>& tracks = (direction == ForColumns)
 | 
|                                    ? sizingData.columnTracks
 | 
|                                    : sizingData.rowTracks;
 | 
| @@ -2299,14 +2356,16 @@ void LayoutGrid::layoutGridItems(GridSizingData& sizingData) {
 | 
|      child->setOverrideContainingBlockContentLogicalHeight(
 | 
|          overrideContainingBlockContentLogicalHeight);
 | 
|  
 | 
| -    // Stretching logic might force a child layout, so we need to run it before the layoutIfNeeded
 | 
| -    // call to avoid unnecessary relayouts. This might imply that child margins, needed to correctly
 | 
| -    // determine the available space before stretching, are not set yet.
 | 
| +    // Stretching logic might force a child layout, so we need to run it before
 | 
| +    // the layoutIfNeeded call to avoid unnecessary relayouts. This might imply
 | 
| +    // that child margins, needed to correctly determine the available space
 | 
| +    // before stretching, are not set yet.
 | 
|      applyStretchAlignmentToChildIfNeeded(*child);
 | 
|  
 | 
|      child->layoutIfNeeded();
 | 
|  
 | 
| -    // We need pending layouts to be done in order to compute auto-margins properly.
 | 
| +    // We need pending layouts to be done in order to compute auto-margins
 | 
| +    // properly.
 | 
|      updateAutoMarginsInColumnAxisIfNeeded(*child);
 | 
|      updateAutoMarginsInRowAxisIfNeeded(*child);
 | 
|  
 | 
| @@ -2317,8 +2376,9 @@ void LayoutGrid::layoutGridItems(GridSizingData& sizingData) {
 | 
|  #endif
 | 
|      child->setLogicalLocation(findChildLogicalPosition(*child, sizingData));
 | 
|  
 | 
| -    // Keep track of children overflowing their grid area as we might need to paint them even if the grid-area is not visible.
 | 
| -    // Using physical dimensions for simplicity, so we can forget about orthogonalty.
 | 
| +    // Keep track of children overflowing their grid area as we might need to
 | 
| +    // paint them even if the grid-area is not visible. Using physical
 | 
| +    // dimensions for simplicity, so we can forget about orthogonalty.
 | 
|      LayoutUnit childGridAreaHeight =
 | 
|          isHorizontalWritingMode() ? overrideContainingBlockContentLogicalHeight
 | 
|                                    : overrideContainingBlockContentLogicalWidth;
 | 
| @@ -2393,7 +2453,9 @@ void LayoutGrid::offsetAndBreadthForPositionedChild(
 | 
|      return;
 | 
|    }
 | 
|  
 | 
| -  // For positioned items we cannot use GridSpan::translate(). Because we could end up with negative values, as the positioned items do not create implicit tracks per spec.
 | 
| +  // For positioned items we cannot use GridSpan::translate(). Because we could
 | 
| +  // end up with negative values, as the positioned items do not create implicit
 | 
| +  // tracks per spec.
 | 
|    int smallestStart =
 | 
|        abs(isForColumns ? m_smallestColumnStart : m_smallestRowStart);
 | 
|    int startLine = positions.untranslatedStartLine() + smallestStart;
 | 
| @@ -2446,7 +2508,8 @@ void LayoutGrid::offsetAndBreadthForPositionedChild(
 | 
|        end = m_rowPositions[endLine] - borderBefore();
 | 
|      }
 | 
|  
 | 
| -    // These vectors store line positions including gaps, but we shouldn't consider them for the edges of the grid.
 | 
| +    // These vectors store line positions including gaps, but we shouldn't
 | 
| +    // consider them for the edges of the grid.
 | 
|      if (endLine > 0 && endLine < lastLine) {
 | 
|        end -= guttersSize(direction, endLine - 1, 2, TrackSizing);
 | 
|        end -= isForColumns ? m_offsetBetweenColumns : m_offsetBetweenRows;
 | 
| @@ -2459,8 +2522,9 @@ void LayoutGrid::offsetAndBreadthForPositionedChild(
 | 
|    if (isForColumns && !styleRef().isLeftToRightDirection() &&
 | 
|        !child.styleRef().hasStaticInlinePosition(
 | 
|            child.isHorizontalWritingMode())) {
 | 
| -    // If the child doesn't have a static inline position (i.e. "left" and/or "right" aren't "auto",
 | 
| -    // we need to calculate the offset from the left (even if we're in RTL).
 | 
| +    // If the child doesn't have a static inline position (i.e. "left" and/or
 | 
| +    // "right" aren't "auto", we need to calculate the offset from the left
 | 
| +    // (even if we're in RTL).
 | 
|      if (endIsAuto) {
 | 
|        offset = LayoutUnit();
 | 
|      } else {
 | 
| @@ -2518,9 +2582,10 @@ LayoutUnit LayoutGrid::gridAreaBreadthForChild(
 | 
|      const LayoutBox& child,
 | 
|      GridTrackSizingDirection direction,
 | 
|      const GridSizingData& sizingData) const {
 | 
| -  // To determine the column track's size based on an orthogonal grid item we need it's logical height, which
 | 
| -  // may depend on the row track's size. It's possible that the row tracks sizing logic has not been performed yet,
 | 
| -  // so we will need to do an estimation.
 | 
| +  // To determine the column track's size based on an orthogonal grid item we
 | 
| +  // need it's logical height, which may depend on the row track's size. It's
 | 
| +  // possible that the row tracks sizing logic has not been performed yet, so we
 | 
| +  // will need to do an estimation.
 | 
|    if (direction == ForRows &&
 | 
|        sizingData.sizingState == GridSizingData::ColumnSizingFirstIteration)
 | 
|      return assumedRowsSizeForOrthogonalChild(child, sizingData.sizingOperation);
 | 
| @@ -2543,8 +2608,9 @@ LayoutUnit LayoutGrid::gridAreaBreadthForChildIncludingAlignmentOffsets(
 | 
|      const LayoutBox& child,
 | 
|      GridTrackSizingDirection direction,
 | 
|      const GridSizingData& sizingData) const {
 | 
| -  // We need the cached value when available because Content Distribution alignment properties
 | 
| -  // may have some influence in the final grid area breadth.
 | 
| +  // We need the cached value when available because Content Distribution
 | 
| +  // alignment properties may have some influence in the final grid area
 | 
| +  // breadth.
 | 
|    const Vector<GridTrack>& tracks = (direction == ForColumns)
 | 
|                                          ? sizingData.columnTracks
 | 
|                                          : sizingData.rowTracks;
 | 
| @@ -2553,7 +2619,8 @@ LayoutUnit LayoutGrid::gridAreaBreadthForChildIncludingAlignmentOffsets(
 | 
|        (direction == ForColumns) ? m_columnPositions : m_rowPositions;
 | 
|    LayoutUnit initialTrackPosition = linePositions[span.startLine()];
 | 
|    LayoutUnit finalTrackPosition = linePositions[span.endLine() - 1];
 | 
| -  // Track Positions vector stores the 'start' grid line of each track, so w have to add last track's baseSize.
 | 
| +  // Track Positions vector stores the 'start' grid line of each track, so we
 | 
| +  // have to add last track's baseSize.
 | 
|    return finalTrackPosition - initialTrackPosition +
 | 
|           tracks[span.endLine() - 1].baseSize();
 | 
|  }
 | 
| @@ -2561,13 +2628,16 @@ LayoutUnit LayoutGrid::gridAreaBreadthForChildIncludingAlignmentOffsets(
 | 
|  void LayoutGrid::populateGridPositionsForDirection(
 | 
|      GridSizingData& sizingData,
 | 
|      GridTrackSizingDirection direction) {
 | 
| -  // Since we add alignment offsets and track gutters, grid lines are not always adjacent. Hence we will have to
 | 
| -  // assume from now on that we just store positions of the initial grid lines of each track,
 | 
| -  // except the last one, which is the only one considered as a final grid line of a track.
 | 
| -
 | 
| -  // The grid container's frame elements (border, padding and <content-position> offset) are sensible to the
 | 
| -  // inline-axis flow direction. However, column lines positions are 'direction' unaware. This simplification
 | 
| -  // allows us to use the same indexes to identify the columns independently on the inline-axis direction.
 | 
| +  // Since we add alignment offsets and track gutters, grid lines are not always
 | 
| +  // adjacent. Hence we will have to assume from now on that we just store
 | 
| +  // positions of the initial grid lines of each track, except the last one,
 | 
| +  // which is the only one considered as a final grid line of a track.
 | 
| +
 | 
| +  // The grid container's frame elements (border, padding and <content-position>
 | 
| +  // offset) are sensible to the inline-axis flow direction. However, column
 | 
| +  // lines positions are 'direction' unaware. This simplification allows us to
 | 
| +  // use the same indexes to identify the columns independently on the
 | 
| +  // inline-axis direction.
 | 
|    bool isRowAxis = direction == ForColumns;
 | 
|    auto& tracks = isRowAxis ? sizingData.columnTracks : sizingData.rowTracks;
 | 
|    size_t numberOfTracks = tracks.size();
 | 
| @@ -2581,8 +2651,9 @@ void LayoutGrid::populateGridPositionsForDirection(
 | 
|        isRowAxis ? borderAndPaddingLogicalLeft() : borderAndPaddingBefore();
 | 
|    positions[0] = borderAndPadding + offset.positionOffset;
 | 
|    if (numberOfLines > 1) {
 | 
| -    // If we have collapsed tracks we just ignore gaps here and add them later as we might not
 | 
| -    // compute the gap between two consecutive tracks without examining the surrounding ones.
 | 
| +    // If we have collapsed tracks we just ignore gaps here and add them later
 | 
| +    // as we might not compute the gap between two consecutive tracks without
 | 
| +    // examining the surrounding ones.
 | 
|      bool hasCollapsedTracks = hasAutoRepeatEmptyTracks(direction);
 | 
|      LayoutUnit gap =
 | 
|          !hasCollapsedTracks
 | 
| @@ -2595,8 +2666,9 @@ void LayoutGrid::populateGridPositionsForDirection(
 | 
|      positions[lastLine] =
 | 
|          positions[nextToLastLine] + tracks[nextToLastLine].baseSize();
 | 
|  
 | 
| -    // Adjust collapsed gaps. Collapsed tracks cause the surrounding gutters to collapse (they
 | 
| -    // coincide exactly) except on the edges of the grid where they become 0.
 | 
| +    // Adjust collapsed gaps. Collapsed tracks cause the surrounding gutters to
 | 
| +    // collapse (they coincide exactly) except on the edges of the grid where
 | 
| +    // they become 0.
 | 
|      if (hasCollapsedTracks) {
 | 
|        gap = gridGapForDirection(direction, sizingData.sizingOperation);
 | 
|        size_t remainingEmptyTracks = isRowAxis ? m_autoRepeatEmptyColumns->size()
 | 
| @@ -2606,8 +2678,8 @@ void LayoutGrid::populateGridPositionsForDirection(
 | 
|          if (isEmptyAutoRepeatTrack(direction, i - 1)) {
 | 
|            --remainingEmptyTracks;
 | 
|          } else {
 | 
| -          // Add gap between consecutive non empty tracks. Add it also just once for an
 | 
| -          // arbitrary number of empty tracks between two non empty ones.
 | 
| +          // Add gap between consecutive non empty tracks. Add it also just once
 | 
| +          // for an arbitrary number of empty tracks between two non empty ones.
 | 
|            bool allRemainingTracksAreEmpty =
 | 
|                remainingEmptyTracks == (lastLine - i);
 | 
|            if (!allRemainingTracksAreEmpty ||
 | 
| @@ -2630,14 +2702,15 @@ static LayoutUnit computeOverflowAlignmentOffset(OverflowAlignment overflow,
 | 
|    LayoutUnit offset = trackSize - childSize;
 | 
|    switch (overflow) {
 | 
|      case OverflowAlignmentSafe:
 | 
| -      // If overflow is 'safe', we have to make sure we don't overflow the 'start'
 | 
| -      // edge (potentially cause some data loss as the overflow is unreachable).
 | 
| +      // If overflow is 'safe', we have to make sure we don't overflow the
 | 
| +      // 'start' edge (potentially cause some data loss as the overflow is
 | 
| +      // unreachable).
 | 
|        return offset.clampNegativeToZero();
 | 
|      case OverflowAlignmentUnsafe:
 | 
|      case OverflowAlignmentDefault:
 | 
| -      // If we overflow our alignment container and overflow is 'true' (default), we
 | 
| -      // ignore the overflow and just return the value regardless (which may cause data
 | 
| -      // loss as we overflow the 'start' edge).
 | 
| +      // If we overflow our alignment container and overflow is 'true'
 | 
| +      // (default), we ignore the overflow and just return the value regardless
 | 
| +      // (which may cause data loss as we overflow the 'start' edge).
 | 
|        return offset;
 | 
|    }
 | 
|  
 | 
| @@ -2645,7 +2718,8 @@ static LayoutUnit computeOverflowAlignmentOffset(OverflowAlignment overflow,
 | 
|    return LayoutUnit();
 | 
|  }
 | 
|  
 | 
| -// FIXME: This logic is shared by LayoutFlexibleBox, so it should be moved to LayoutBox.
 | 
| +// FIXME: This logic is shared by LayoutFlexibleBox, so it should be moved to
 | 
| +// LayoutBox.
 | 
|  LayoutUnit LayoutGrid::marginLogicalHeightForChild(
 | 
|      const LayoutBox& child) const {
 | 
|    return isHorizontalWritingMode() ? child.marginHeight() : child.marginWidth();
 | 
| @@ -2678,9 +2752,10 @@ LayoutUnit LayoutGrid::computeMarginLogicalSizeForChild(
 | 
|  LayoutUnit LayoutGrid::availableAlignmentSpaceForChildBeforeStretching(
 | 
|      LayoutUnit gridAreaBreadthForChild,
 | 
|      const LayoutBox& child) const {
 | 
| -  // Because we want to avoid multiple layouts, stretching logic might be performed before
 | 
| -  // children are laid out, so we can't use the child cached values. Hence, we need to
 | 
| -  // compute margins in order to determine the available height before stretching.
 | 
| +  // Because we want to avoid multiple layouts, stretching logic might be
 | 
| +  // performed before children are laid out, so we can't use the child cached
 | 
| +  // values. Hence, we need to compute margins in order to determine the
 | 
| +  // available height before stretching.
 | 
|    return gridAreaBreadthForChild -
 | 
|           (child.needsLayout()
 | 
|                ? computeMarginLogicalSizeForChild(BlockDirection, child)
 | 
| @@ -2691,8 +2766,9 @@ StyleSelfAlignmentData LayoutGrid::alignSelfForChild(
 | 
|      const LayoutBox& child) const {
 | 
|    if (!child.isAnonymous())
 | 
|      return child.styleRef().resolvedAlignSelf(selfAlignmentNormalBehavior());
 | 
| -  // All the 'auto' values has been solved by the StyleAdjuster, but it's possible that
 | 
| -  // some grid items generate Anonymous boxes, which need to be solved during layout.
 | 
| +  // All the 'auto' values has been solved by the StyleAdjuster, but it's
 | 
| +  // possible that some grid items generate Anonymous boxes, which need to be
 | 
| +  // solved during layout.
 | 
|    return child.styleRef().resolvedAlignSelf(selfAlignmentNormalBehavior(),
 | 
|                                              style());
 | 
|  }
 | 
| @@ -2701,16 +2777,19 @@ StyleSelfAlignmentData LayoutGrid::justifySelfForChild(
 | 
|      const LayoutBox& child) const {
 | 
|    if (!child.isAnonymous())
 | 
|      return child.styleRef().resolvedJustifySelf(ItemPositionStretch);
 | 
| -  // All the 'auto' values has been solved by the StyleAdjuster, but it's possible that
 | 
| -  // some grid items generate Anonymous boxes, which need to be solved during layout.
 | 
| +  // All the 'auto' values has been solved by the StyleAdjuster, but it's
 | 
| +  // possible that some grid items generate Anonymous boxes, which need to be
 | 
| +  // solved during layout.
 | 
|    return child.styleRef().resolvedJustifySelf(selfAlignmentNormalBehavior(),
 | 
|                                                style());
 | 
|  }
 | 
|  
 | 
| -// FIXME: This logic is shared by LayoutFlexibleBox, so it should be moved to LayoutBox.
 | 
| +// FIXME: This logic is shared by LayoutFlexibleBox, so it should be moved to
 | 
| +// LayoutBox.
 | 
|  void LayoutGrid::applyStretchAlignmentToChildIfNeeded(LayoutBox& child) {
 | 
| -  // We clear height override values because we will decide now whether it's allowed or
 | 
| -  // not, evaluating the conditions which might have changed since the old values were set.
 | 
| +  // We clear height override values because we will decide now whether it's
 | 
| +  // allowed or not, evaluating the conditions which might have changed since
 | 
| +  // the old values were set.
 | 
|    child.clearOverrideLogicalContentHeight();
 | 
|  
 | 
|    GridTrackSizingDirection childBlockDirection =
 | 
| @@ -2730,14 +2809,16 @@ void LayoutGrid::applyStretchAlignmentToChildIfNeeded(LayoutBox& child) {
 | 
|      child.setOverrideLogicalContentHeight(
 | 
|          desiredLogicalHeight - child.borderAndPaddingLogicalHeight());
 | 
|      if (desiredLogicalHeight != child.logicalHeight()) {
 | 
| -      // TODO (lajava): Can avoid laying out here in some cases. See https://webkit.org/b/87905.
 | 
| +      // TODO (lajava): Can avoid laying out here in some cases. See
 | 
| +      // https://webkit.org/b/87905.
 | 
|        child.setLogicalHeight(LayoutUnit());
 | 
|        child.setNeedsLayout(LayoutInvalidationReason::GridChanged);
 | 
|      }
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be moved to LayoutBox.
 | 
| +// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be
 | 
| +// moved to LayoutBox.
 | 
|  bool LayoutGrid::hasAutoMarginsInColumnAxis(const LayoutBox& child) const {
 | 
|    if (isHorizontalWritingMode())
 | 
|      return child.styleRef().marginTop().isAuto() ||
 | 
| @@ -2746,7 +2827,8 @@ bool LayoutGrid::hasAutoMarginsInColumnAxis(const LayoutBox& child) const {
 | 
|           child.styleRef().marginRight().isAuto();
 | 
|  }
 | 
|  
 | 
| -// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be moved to LayoutBox.
 | 
| +// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be
 | 
| +// moved to LayoutBox.
 | 
|  bool LayoutGrid::hasAutoMarginsInRowAxis(const LayoutBox& child) const {
 | 
|    if (isHorizontalWritingMode())
 | 
|      return child.styleRef().marginLeft().isAuto() ||
 | 
| @@ -2755,7 +2837,8 @@ bool LayoutGrid::hasAutoMarginsInRowAxis(const LayoutBox& child) const {
 | 
|           child.styleRef().marginBottom().isAuto();
 | 
|  }
 | 
|  
 | 
| -// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be moved to LayoutBox.
 | 
| +// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be
 | 
| +// moved to LayoutBox.
 | 
|  DISABLE_CFI_PERF
 | 
|  void LayoutGrid::updateAutoMarginsInRowAxisIfNeeded(LayoutBox& child) {
 | 
|    ASSERT(!child.isOutOfFlowPositioned());
 | 
| @@ -2778,7 +2861,8 @@ void LayoutGrid::updateAutoMarginsInRowAxisIfNeeded(LayoutBox& child) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be moved to LayoutBox.
 | 
| +// TODO(lajava): This logic is shared by LayoutFlexibleBox, so it should be
 | 
| +// moved to LayoutBox.
 | 
|  DISABLE_CFI_PERF
 | 
|  void LayoutGrid::updateAutoMarginsInColumnAxisIfNeeded(LayoutBox& child) {
 | 
|    ASSERT(!child.isOutOfFlowPositioned());
 | 
| @@ -2809,55 +2893,69 @@ GridAxisPosition LayoutGrid::columnAxisPositionForChild(
 | 
|  
 | 
|    switch (alignSelfForChild(child).position()) {
 | 
|      case ItemPositionSelfStart:
 | 
| -      // TODO (lajava): Should we implement this logic in a generic utility function ?
 | 
| -      // Aligns the alignment subject to be flush with the edge of the alignment container
 | 
| -      // corresponding to the alignment subject's 'start' side in the column axis.
 | 
| +      // TODO (lajava): Should we implement this logic in a generic utility
 | 
| +      // function?
 | 
| +      // Aligns the alignment subject to be flush with the edge of the alignment
 | 
| +      // container corresponding to the alignment subject's 'start' side in the
 | 
| +      // column axis.
 | 
|        if (isOrthogonalChild(child)) {
 | 
| -        // If orthogonal writing-modes, self-start will be based on the child's inline-axis
 | 
| -        // direction (inline-start), because it's the one parallel to the column axis.
 | 
| +        // If orthogonal writing-modes, self-start will be based on the child's
 | 
| +        // inline-axis direction (inline-start), because it's the one parallel
 | 
| +        // to the column axis.
 | 
|          if (styleRef().isFlippedBlocksWritingMode())
 | 
|            return childIsLTR ? GridAxisEnd : GridAxisStart;
 | 
|          return childIsLTR ? GridAxisStart : GridAxisEnd;
 | 
|        }
 | 
| -      // self-start is based on the child's block-flow direction. That's why we need to check against the grid container's block-flow direction.
 | 
| +      // self-start is based on the child's block-flow direction. That's why we
 | 
| +      // need to check against the grid container's block-flow direction.
 | 
|        return hasSameWritingMode ? GridAxisStart : GridAxisEnd;
 | 
|      case ItemPositionSelfEnd:
 | 
| -      // TODO (lajava): Should we implement this logic in a generic utility function ?
 | 
| -      // Aligns the alignment subject to be flush with the edge of the alignment container
 | 
| -      // corresponding to the alignment subject's 'end' side in the column axis.
 | 
| +      // TODO (lajava): Should we implement this logic in a generic utility
 | 
| +      // function?
 | 
| +      // Aligns the alignment subject to be flush with the edge of the alignment
 | 
| +      // container corresponding to the alignment subject's 'end' side in the
 | 
| +      // column axis.
 | 
|        if (isOrthogonalChild(child)) {
 | 
| -        // If orthogonal writing-modes, self-end will be based on the child's inline-axis
 | 
| -        // direction, (inline-end) because it's the one parallel to the column axis.
 | 
| +        // If orthogonal writing-modes, self-end will be based on the child's
 | 
| +        // inline-axis direction, (inline-end) because it's the one parallel to
 | 
| +        // the column axis.
 | 
|          if (styleRef().isFlippedBlocksWritingMode())
 | 
|            return childIsLTR ? GridAxisStart : GridAxisEnd;
 | 
|          return childIsLTR ? GridAxisEnd : GridAxisStart;
 | 
|        }
 | 
| -      // self-end is based on the child's block-flow direction. That's why we need to check against the grid container's block-flow direction.
 | 
| +      // self-end is based on the child's block-flow direction. That's why we
 | 
| +      // need to check against the grid container's block-flow direction.
 | 
|        return hasSameWritingMode ? GridAxisEnd : GridAxisStart;
 | 
|      case ItemPositionLeft:
 | 
| -      // Aligns the alignment subject to be flush with the alignment container's 'line-left' edge.
 | 
| -      // The alignment axis (column axis) is always orthogonal to the inline axis, hence this value behaves as 'start'.
 | 
| +      // Aligns the alignment subject to be flush with the alignment container's
 | 
| +      // 'line-left' edge. The alignment axis (column axis) is always orthogonal
 | 
| +      // to the inline axis, hence this value behaves as 'start'.
 | 
|        return GridAxisStart;
 | 
|      case ItemPositionRight:
 | 
| -      // Aligns the alignment subject to be flush with the alignment container's 'line-right' edge.
 | 
| -      // The alignment axis (column axis) is always orthogonal to the inline axis, hence this value behaves as 'start'.
 | 
| +      // Aligns the alignment subject to be flush with the alignment container's
 | 
| +      // 'line-right' edge. The alignment axis (column axis) is always
 | 
| +      // orthogonal to the inline axis, hence this value behaves as 'start'.
 | 
|        return GridAxisStart;
 | 
|      case ItemPositionCenter:
 | 
|        return GridAxisCenter;
 | 
| -    case ItemPositionFlexStart:  // Only used in flex layout, otherwise equivalent to 'start'.
 | 
| -                                 // Aligns the alignment subject to be flush with the alignment container's 'start' edge (block-start) in the column axis.
 | 
| +    // Only used in flex layout, otherwise equivalent to 'start'.
 | 
| +    case ItemPositionFlexStart:
 | 
| +    // Aligns the alignment subject to be flush with the alignment container's
 | 
| +    // 'start' edge (block-start) in the column axis.
 | 
|      case ItemPositionStart:
 | 
|        return GridAxisStart;
 | 
| -    case ItemPositionFlexEnd:  // Only used in flex layout, otherwise equivalent to 'end'.
 | 
| -                               // Aligns the alignment subject to be flush with the alignment container's 'end' edge (block-end) in the column axis.
 | 
| +    // Only used in flex layout, otherwise equivalent to 'end'.
 | 
| +    case ItemPositionFlexEnd:
 | 
| +    // Aligns the alignment subject to be flush with the alignment container's
 | 
| +    // 'end' edge (block-end) in the column axis.
 | 
|      case ItemPositionEnd:
 | 
|        return GridAxisEnd;
 | 
|      case ItemPositionStretch:
 | 
|        return GridAxisStart;
 | 
|      case ItemPositionBaseline:
 | 
|      case ItemPositionLastBaseline:
 | 
| -      // FIXME: These two require implementing Baseline Alignment. For now, we always 'start' align the child.
 | 
| -      // crbug.com/234191
 | 
| +      // FIXME: These two require implementing Baseline Alignment. For now, we
 | 
| +      // always 'start' align the child. crbug.com/234191
 | 
|        return GridAxisStart;
 | 
|      case ItemPositionAuto:
 | 
|      case ItemPositionNormal:
 | 
| @@ -2876,55 +2974,67 @@ GridAxisPosition LayoutGrid::rowAxisPositionForChild(
 | 
|  
 | 
|    switch (justifySelfForChild(child).position()) {
 | 
|      case ItemPositionSelfStart:
 | 
| -      // TODO (lajava): Should we implement this logic in a generic utility function ?
 | 
| -      // Aligns the alignment subject to be flush with the edge of the alignment container
 | 
| -      // corresponding to the alignment subject's 'start' side in the row axis.
 | 
| +      // TODO (lajava): Should we implement this logic in a generic utility
 | 
| +      // function?
 | 
| +      // Aligns the alignment subject to be flush with the edge of the alignment
 | 
| +      // container corresponding to the alignment subject's 'start' side in the
 | 
| +      // row axis.
 | 
|        if (isOrthogonalChild(child)) {
 | 
| -        // If orthogonal writing-modes, self-start will be based on the child's block-axis
 | 
| -        // direction, because it's the one parallel to the row axis.
 | 
| +        // If orthogonal writing-modes, self-start will be based on the child's
 | 
| +        // block-axis direction, because it's the one parallel to the row axis.
 | 
|          if (child.styleRef().isFlippedBlocksWritingMode())
 | 
|            return gridIsLTR ? GridAxisEnd : GridAxisStart;
 | 
|          return gridIsLTR ? GridAxisStart : GridAxisEnd;
 | 
|        }
 | 
| -      // self-start is based on the child's inline-flow direction. That's why we need to check against the grid container's direction.
 | 
| +      // self-start is based on the child's inline-flow direction. That's why we
 | 
| +      // need to check against the grid container's direction.
 | 
|        return hasSameDirection ? GridAxisStart : GridAxisEnd;
 | 
|      case ItemPositionSelfEnd:
 | 
| -      // TODO (lajava): Should we implement this logic in a generic utility function ?
 | 
| -      // Aligns the alignment subject to be flush with the edge of the alignment container
 | 
| -      // corresponding to the alignment subject's 'end' side in the row axis.
 | 
| +      // TODO (lajava): Should we implement this logic in a generic utility
 | 
| +      // function?
 | 
| +      // Aligns the alignment subject to be flush with the edge of the alignment
 | 
| +      // container corresponding to the alignment subject's 'end' side in the
 | 
| +      // row axis.
 | 
|        if (isOrthogonalChild(child)) {
 | 
| -        // If orthogonal writing-modes, self-end will be based on the child's block-axis
 | 
| -        // direction, because it's the one parallel to the row axis.
 | 
| +        // If orthogonal writing-modes, self-end will be based on the child's
 | 
| +        // block-axis direction, because it's the one parallel to the row axis.
 | 
|          if (child.styleRef().isFlippedBlocksWritingMode())
 | 
|            return gridIsLTR ? GridAxisStart : GridAxisEnd;
 | 
|          return gridIsLTR ? GridAxisEnd : GridAxisStart;
 | 
|        }
 | 
| -      // self-end is based on the child's inline-flow direction. That's why we need to check against the grid container's direction.
 | 
| +      // self-end is based on the child's inline-flow direction. That's why we
 | 
| +      // need to check against the grid container's direction.
 | 
|        return hasSameDirection ? GridAxisEnd : GridAxisStart;
 | 
|      case ItemPositionLeft:
 | 
| -      // Aligns the alignment subject to be flush with the alignment container's 'line-left' edge.
 | 
| -      // We want the physical 'left' side, so we have to take account, container's inline-flow direction.
 | 
| +      // Aligns the alignment subject to be flush with the alignment container's
 | 
| +      // 'line-left' edge. We want the physical 'left' side, so we have to take
 | 
| +      // account, container's inline-flow direction.
 | 
|        return gridIsLTR ? GridAxisStart : GridAxisEnd;
 | 
|      case ItemPositionRight:
 | 
| -      // Aligns the alignment subject to be flush with the alignment container's 'line-right' edge.
 | 
| -      // We want the physical 'right' side, so we have to take account, container's inline-flow direction.
 | 
| +      // Aligns the alignment subject to be flush with the alignment container's
 | 
| +      // 'line-right' edge. We want the physical 'right' side, so we have to
 | 
| +      // take account, container's inline-flow direction.
 | 
|        return gridIsLTR ? GridAxisEnd : GridAxisStart;
 | 
|      case ItemPositionCenter:
 | 
|        return GridAxisCenter;
 | 
| -    case ItemPositionFlexStart:  // Only used in flex layout, otherwise equivalent to 'start'.
 | 
| -                                 // Aligns the alignment subject to be flush with the alignment container's 'start' edge (inline-start) in the row axis.
 | 
| +    // Only used in flex layout, otherwise equivalent to 'start'.
 | 
| +    case ItemPositionFlexStart:
 | 
| +    // Aligns the alignment subject to be flush with the alignment container's
 | 
| +    // 'start' edge (inline-start) in the row axis.
 | 
|      case ItemPositionStart:
 | 
|        return GridAxisStart;
 | 
| -    case ItemPositionFlexEnd:  // Only used in flex layout, otherwise equivalent to 'end'.
 | 
| -                               // Aligns the alignment subject to be flush with the alignment container's 'end' edge (inline-end) in the row axis.
 | 
| +    // Only used in flex layout, otherwise equivalent to 'end'.
 | 
| +    case ItemPositionFlexEnd:
 | 
| +    // Aligns the alignment subject to be flush with the alignment container's
 | 
| +    // 'end' edge (inline-end) in the row axis.
 | 
|      case ItemPositionEnd:
 | 
|        return GridAxisEnd;
 | 
|      case ItemPositionStretch:
 | 
|        return GridAxisStart;
 | 
|      case ItemPositionBaseline:
 | 
|      case ItemPositionLastBaseline:
 | 
| -      // FIXME: These two require implementing Baseline Alignment. For now, we always 'start' align the child.
 | 
| -      // crbug.com/234191
 | 
| +      // FIXME: These two require implementing Baseline Alignment. For now, we
 | 
| +      // always 'start' align the child. crbug.com/234191
 | 
|        return GridAxisStart;
 | 
|      case ItemPositionAuto:
 | 
|      case ItemPositionNormal:
 | 
| @@ -2952,9 +3062,10 @@ LayoutUnit LayoutGrid::columnAxisOffsetForChild(
 | 
|      case GridAxisCenter: {
 | 
|        size_t childEndLine = rowsSpan.endLine();
 | 
|        LayoutUnit endOfRow = m_rowPositions[childEndLine];
 | 
| -      // m_rowPositions include distribution offset (because of content alignment) and gutters
 | 
| -      // so we need to subtract them to get the actual end position for a given row
 | 
| -      // (this does not have to be done for the last track as there are no more m_columnPositions after it).
 | 
| +      // m_rowPositions include distribution offset (because of content
 | 
| +      // alignment) and gutters so we need to subtract them to get the actual
 | 
| +      // end position for a given row (this does not have to be done for the
 | 
| +      // last track as there are no more m_columnPositions after it).
 | 
|        LayoutUnit trackGap =
 | 
|            gridGapForDirection(ForRows, sizingData.sizingOperation);
 | 
|        if (childEndLine < m_rowPositions.size() - 1) {
 | 
| @@ -2994,9 +3105,10 @@ LayoutUnit LayoutGrid::rowAxisOffsetForChild(const LayoutBox& child,
 | 
|      case GridAxisCenter: {
 | 
|        size_t childEndLine = columnsSpan.endLine();
 | 
|        LayoutUnit endOfColumn = m_columnPositions[childEndLine];
 | 
| -      // m_columnPositions include distribution offset (because of content alignment) and gutters
 | 
| -      // so we need to subtract them to get the actual end position for a given column
 | 
| -      // (this does not have to be done for the last track as there are no more m_columnPositions after it).
 | 
| +      // m_columnPositions include distribution offset (because of content
 | 
| +      // alignment) and gutters so we need to subtract them to get the actual
 | 
| +      // end position for a given column (this does not have to be done for the
 | 
| +      // last track as there are no more m_columnPositions after it).
 | 
|        LayoutUnit trackGap =
 | 
|            gridGapForDirection(ForColumns, sizingData.sizingOperation);
 | 
|        if (childEndLine < m_columnPositions.size() - 1) {
 | 
| @@ -3090,8 +3202,8 @@ ContentAlignmentData LayoutGrid::computeContentPositionAndDistributionOffset(
 | 
|                  contentAlignmentNormalBehavior())
 | 
|            : styleRef().resolvedAlignContentDistribution(
 | 
|                  contentAlignmentNormalBehavior());
 | 
| -  // If <content-distribution> value can't be applied, 'position' will become the associated
 | 
| -  // <content-position> fallback value.
 | 
| +  // If <content-distribution> value can't be applied, 'position' will become
 | 
| +  // the associated <content-position> fallback value.
 | 
|    ContentAlignmentData contentAlignment = contentDistributionOffset(
 | 
|        availableFreeSpace, position, distribution, numberOfGridTracks);
 | 
|    if (contentAlignment.isValid())
 | 
| @@ -3114,14 +3226,16 @@ ContentAlignmentData LayoutGrid::computeContentPositionAndDistributionOffset(
 | 
|        return {LayoutUnit(), LayoutUnit()};
 | 
|      case ContentPositionCenter:
 | 
|        return {availableFreeSpace / 2, LayoutUnit()};
 | 
| -    case ContentPositionFlexEnd:  // Only used in flex layout, for other layout, it's equivalent to 'End'.
 | 
| +    // Only used in flex layout, for other layout, it's equivalent to 'End'.
 | 
| +    case ContentPositionFlexEnd:
 | 
|      case ContentPositionEnd:
 | 
|        if (isRowAxis)
 | 
|          return {styleRef().isLeftToRightDirection() ? availableFreeSpace
 | 
|                                                      : LayoutUnit(),
 | 
|                  LayoutUnit()};
 | 
|        return {availableFreeSpace, LayoutUnit()};
 | 
| -    case ContentPositionFlexStart:  // Only used in flex layout, for other layout, it's equivalent to 'Start'.
 | 
| +    // Only used in flex layout, for other layout, it's equivalent to 'Start'.
 | 
| +    case ContentPositionFlexStart:
 | 
|      case ContentPositionStart:
 | 
|        if (isRowAxis)
 | 
|          return {styleRef().isLeftToRightDirection() ? LayoutUnit()
 | 
| @@ -3130,8 +3244,8 @@ ContentAlignmentData LayoutGrid::computeContentPositionAndDistributionOffset(
 | 
|        return {LayoutUnit(), LayoutUnit()};
 | 
|      case ContentPositionBaseline:
 | 
|      case ContentPositionLastBaseline:
 | 
| -      // FIXME: These two require implementing Baseline Alignment. For now, we always 'start' align the child.
 | 
| -      // crbug.com/234191
 | 
| +      // FIXME: These two require implementing Baseline Alignment. For now, we
 | 
| +      // always 'start' align the child. crbug.com/234191
 | 
|        if (isRowAxis)
 | 
|          return {styleRef().isLeftToRightDirection() ? LayoutUnit()
 | 
|                                                      : availableFreeSpace,
 | 
| @@ -3159,17 +3273,19 @@ LayoutPoint LayoutGrid::findChildLogicalPosition(
 | 
|      GridSizingData& sizingData) const {
 | 
|    LayoutUnit columnAxisOffset = columnAxisOffsetForChild(child, sizingData);
 | 
|    LayoutUnit rowAxisOffset = rowAxisOffsetForChild(child, sizingData);
 | 
| -  // We stored m_columnPosition's data ignoring the direction, hence we might need now
 | 
| -  // to translate positions from RTL to LTR, as it's more convenient for painting.
 | 
| +  // We stored m_columnPosition's data ignoring the direction, hence we might
 | 
| +  // need now to translate positions from RTL to LTR, as it's more convenient
 | 
| +  // for painting.
 | 
|    if (!style()->isLeftToRightDirection())
 | 
|      rowAxisOffset = translateRTLCoordinate(rowAxisOffset) -
 | 
|                      (isOrthogonalChild(child) ? child.logicalHeight()
 | 
|                                                : child.logicalWidth());
 | 
|  
 | 
| -  // "In the positioning phase [...] calculations are performed according to the writing mode
 | 
| -  // of the containing block of the box establishing the orthogonal flow." However, the
 | 
| -  // resulting LayoutPoint will be used in 'setLogicalPosition' in order to set the child's
 | 
| -  // logical position, which will only take into account the child's writing-mode.
 | 
| +  // "In the positioning phase [...] calculations are performed according to the
 | 
| +  // writing mode of the containing block of the box establishing the orthogonal
 | 
| +  // flow." However, the resulting LayoutPoint will be used in
 | 
| +  // 'setLogicalPosition' in order to set the child's logical position, which
 | 
| +  // will only take into account the child's writing-mode.
 | 
|    LayoutPoint childLocation(rowAxisOffset, columnAxisOffset);
 | 
|    return isOrthogonalChild(child) ? childLocation.transposedPoint()
 | 
|                                    : childLocation;
 | 
| @@ -3179,8 +3295,8 @@ LayoutPoint LayoutGrid::gridAreaLogicalPosition(const GridArea& area) const {
 | 
|    LayoutUnit columnAxisOffset = m_rowPositions[area.rows.startLine()];
 | 
|    LayoutUnit rowAxisOffset = m_columnPositions[area.columns.startLine()];
 | 
|  
 | 
| -  // See comment in findChildLogicalPosition() about why we need sometimes to translate from RTL
 | 
| -  // to LTR the rowAxisOffset coordinate.
 | 
| +  // See comment in findChildLogicalPosition() about why we need sometimes to
 | 
| +  // translate from RTL to LTR the rowAxisOffset coordinate.
 | 
|    return LayoutPoint(style()->isLeftToRightDirection()
 | 
|                           ? rowAxisOffset
 | 
|                           : translateRTLCoordinate(rowAxisOffset),
 | 
| 
 |