Index: third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.cpp |
diff --git a/third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.cpp b/third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.cpp |
index 605738b48c0ee62416713f234e56380b6faf5d39..4740e44191213d586d177f5271cd317bbf4987ef 100644 |
--- a/third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.cpp |
+++ b/third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.cpp |
@@ -287,15 +287,10 @@ LayoutUnit GridTrackSizingAlgorithmStrategy::LogicalHeightForChild( |
child.ClearOverrideLogicalContentHeight(); |
child.LayoutIfNeeded(); |
- GridAxis baseline_axis = GetLayoutGrid()->IsOrthogonalChild(child) |
- ? kGridRowAxis |
- : kGridColumnAxis; |
- if (GetLayoutGrid()->IsBaselineAlignmentForChild(child, baseline_axis) && |
- GetLayoutGrid()->IsBaselineContextComputed(baseline_axis)) { |
- auto& group = |
- GetLayoutGrid()->GetBaselineGroupForChild(child, baseline_axis); |
- return group.MaxAscent() + group.MaxDescent(); |
- } |
+ |
+ if (auto baseline_extent = ExtentForBaselineAlignment(child)) |
+ return baseline_extent.value(); |
+ |
return child.LogicalHeight() + child.MarginLogicalHeight(); |
} |
@@ -324,15 +319,10 @@ LayoutUnit GridTrackSizingAlgorithmStrategy::MinContentForChild( |
return child.MinPreferredLogicalWidth() + margin_logical_width; |
} |
- if (Direction() == kForColumns && |
- algorithm_.sizing_operation_ == kIntrinsicSizeComputation) { |
+ if (Direction() == kForColumns && !AvailableSpace()) { |
DCHECK(GetLayoutGrid()->IsOrthogonalChild(child)); |
- if (GetLayoutGrid()->IsBaselineAlignmentForChild(child, kGridRowAxis) && |
- GetLayoutGrid()->IsBaselineContextComputed(kGridRowAxis)) { |
- auto& group = |
- GetLayoutGrid()->GetBaselineGroupForChild(child, kGridRowAxis); |
- return group.MaxAscent() + group.MaxDescent(); |
- } |
+ if (auto baseline_extent = ExtentForBaselineAlignment(child)) |
+ return baseline_extent.value(); |
} |
if (UpdateOverrideContainingBlockContentSizeForChild(child, |
@@ -431,6 +421,20 @@ void GridTrackSizingAlgorithmStrategy::DistributeSpaceToTracks( |
available_logical_space); |
} |
+Optional<LayoutUnit> |
+GridTrackSizingAlgorithmStrategy::ExtentForBaselineAlignment( |
Manuel Rego
2017/04/27 16:06:48
This seems unrelated to the SizingOperation remova
|
+ LayoutBox& child) const { |
+ auto grid = algorithm_.layout_grid_; |
Manuel Rego
2017/04/27 16:06:48
Nit: We've GetLayoutGrid() for this.
|
+ GridAxis baseline_axis = |
+ grid->IsOrthogonalChild(child) ? kGridRowAxis : kGridColumnAxis; |
+ if (!grid->IsBaselineAlignmentForChild(child, baseline_axis) || |
+ !grid->IsBaselineContextComputed(baseline_axis)) |
+ return WTF::kNullopt; |
+ |
+ auto& group = grid->GetBaselineGroupForChild(child, baseline_axis); |
+ return group.MaxAscent() + group.MaxDescent(); |
+} |
+ |
LayoutUnit DefiniteSizeStrategy::MinLogicalWidthForChild( |
LayoutBox& child, |
Length child_min_size, |
@@ -1405,7 +1409,6 @@ bool GridTrackSizingAlgorithm::IsValidTransition() const { |
void GridTrackSizingAlgorithm::Setup(GridTrackSizingDirection direction, |
size_t num_tracks, |
- SizingOperation sizing_operation, |
Optional<LayoutUnit> available_space, |
Optional<LayoutUnit> free_space) { |
DCHECK(needs_setup_); |
@@ -1415,8 +1418,6 @@ void GridTrackSizingAlgorithm::Setup(GridTrackSizingDirection direction, |
direction, available_space ? available_space.value().ClampNegativeToZero() |
: available_space); |
- sizing_operation_ = sizing_operation; |
- |
if (available_space) |
strategy_ = WTF::MakeUnique<DefiniteSizeStrategy>(*this); |
else |