Chromium Code Reviews| Index: Source/core/layout/LayoutGrid.h |
| diff --git a/Source/core/layout/LayoutGrid.h b/Source/core/layout/LayoutGrid.h |
| index d138a24722d7461a46b9421abe5935f6d20836f6..95e50304e3446aeb0405d2c64218880cb818670d 100644 |
| --- a/Source/core/layout/LayoutGrid.h |
| +++ b/Source/core/layout/LayoutGrid.h |
| @@ -99,13 +99,26 @@ private: |
| void offsetAndBreadthForPositionedChild(const LayoutBox&, GridTrackSizingDirection, bool startIsAuto, bool endIsAuto, LayoutUnit& offset, LayoutUnit& breadth); |
| void populateGridPositions(const GridSizingData&); |
| - typedef LayoutUnit (LayoutGrid::* SizingFunction)(LayoutBox&, GridTrackSizingDirection, Vector<GridTrack>&); |
| - typedef const LayoutUnit& (GridTrack::* AccumulatorGetter)() const; |
| - typedef bool (GridTrackSize::* FilterFunction)() const; |
| + enum TrackSizeRestriction { |
| + AllowInfinity, |
| + ForbidInfinity, |
| + }; |
| + enum TrackSizeComputationPhase { |
| + ResolveIntrinsicMinimums, |
| + ResolveMaxContentMinimums, |
| + ResolveIntrinsicMaximums, |
| + ResolveMaxContentMaximums, |
| + MaximizeTracks, |
| + }; |
| + static const LayoutUnit& trackSizeForTrackSizeComputationPhase(TrackSizeComputationPhase, GridTrack&, TrackSizeRestriction); |
|
cbiesinger
2015/04/30 23:33:01
So the patch looks good except that I don't see an
dsinclair
2015/05/08 15:50:28
Can GridTrack be const?
svillar
2015/05/11 07:11:45
Acknowledged.
|
| + static bool shouldProcessTrackForTrackSizeComputationPhase(TrackSizeComputationPhase, const GridTrackSize&); |
|
dsinclair
2015/05/08 15:50:27
These are only called in this class, and don't see
svillar
2015/05/11 07:11:45
Sure.
|
| + static bool trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase(TrackSizeComputationPhase, const GridTrackSize&); |
| + static void updateTrackSizeForTrackSizeComputationPhase(TrackSizeComputationPhase, GridTrack&); |
|
dsinclair
2015/05/08 15:50:28
Can GridTrack be const?
svillar
2015/05/11 07:11:45
Acknowledged.
|
| typedef struct GridItemsSpanGroupRange GridItemsSpanGroupRange; |
| + LayoutUnit currentItemSizeForTrackSizeComputationPhase(TrackSizeComputationPhase, LayoutBox&, GridTrackSizingDirection, Vector<GridTrack>& columnTracks); |
| void resolveContentBasedTrackSizingFunctionsForNonSpanningItems(GridTrackSizingDirection, const GridCoordinate&, LayoutBox& gridItem, GridTrack&, Vector<GridTrack>& columnTracks); |
| - void resolveContentBasedTrackSizingFunctionsForItems(GridTrackSizingDirection, GridSizingData&, const GridItemsSpanGroupRange&, FilterFunction, SizingFunction, AccumulatorGetter, AccumulatorGrowFunction, FilterFunction growAboveMaxBreadthFilterFunction = nullptr); |
| - void distributeSpaceToTracks(Vector<GridTrack*>&, const Vector<GridTrack*>* growBeyondGrowthLimitsTracks, AccumulatorGetter, GridSizingData&, LayoutUnit& availableLogicalSpace); |
| + template <TrackSizeComputationPhase> void resolveContentBasedTrackSizingFunctionsForItems(GridTrackSizingDirection, GridSizingData&, const GridItemsSpanGroupRange&); |
| + template <TrackSizeComputationPhase> void distributeSpaceToTracks(Vector<GridTrack*>&, const Vector<GridTrack*>* growBeyondGrowthLimitsTracks, GridSizingData&, LayoutUnit& availableLogicalSpace); |
|
dsinclair
2015/05/08 15:50:27
Why template these and not just pass in TrackSizeC
svillar
2015/05/11 07:11:45
The reason why I used templates is because we alwa
|
| double computeNormalizedFractionBreadth(Vector<GridTrack>&, const GridSpan& tracksSpan, GridTrackSizingDirection, LayoutUnit availableLogicalSpace) const; |