Index: third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc b/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc |
index 58c2b1caec83686914757e00c51238c562bd4b14..141b6b31f6d8aaa2c5f6c62ce1a6b638fe975238 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc |
@@ -242,18 +242,16 @@ LayoutUnit ComputeInlineSizeForFragment( |
LayoutUnit extent = ResolveInlineLength( |
space, style, min_and_max, logicalWidth, LengthResolveType::kContentSize); |
- Length max_length = style.logicalMaxWidth(); |
- if (!max_length.isMaxSizeNone()) { |
- LayoutUnit max = ResolveInlineLength(space, style, min_and_max, max_length, |
- LengthResolveType::kMaxSize); |
- extent = std::min(extent, max); |
+ Optional<LayoutUnit> max_length; |
+ if (!style.logicalMaxWidth().isMaxSizeNone()) { |
+ max_length = |
+ ResolveInlineLength(space, style, min_and_max, style.logicalMaxWidth(), |
+ LengthResolveType::kMaxSize); |
} |
- |
- LayoutUnit min = |
+ Optional<LayoutUnit> min_length = |
ResolveInlineLength(space, style, min_and_max, style.logicalMinWidth(), |
LengthResolveType::kMinSize); |
- extent = std::max(extent, min); |
- return extent; |
+ return ConstrainByMinMax(extent, min_length, max_length); |
} |
LayoutUnit ComputeBlockSizeForFragment( |
@@ -270,20 +268,16 @@ LayoutUnit ComputeBlockSizeForFragment( |
DCHECK_EQ(content_size, NGSizeIndefinite); |
return extent; |
} |
- |
- Length max_length = style.logicalMaxHeight(); |
- if (!max_length.isMaxSizeNone()) { |
- LayoutUnit max = |
- ResolveBlockLength(constraint_space, style, max_length, content_size, |
- LengthResolveType::kMaxSize); |
- extent = std::min(extent, max); |
+ Optional<LayoutUnit> max_length; |
+ if (!style.logicalMaxHeight().isMaxSizeNone()) { |
+ max_length = |
+ ResolveBlockLength(constraint_space, style, style.logicalMaxHeight(), |
+ content_size, LengthResolveType::kMaxSize); |
} |
- |
- LayoutUnit min = |
+ Optional<LayoutUnit> min_length = |
ResolveBlockLength(constraint_space, style, style.logicalMinHeight(), |
content_size, LengthResolveType::kMinSize); |
- extent = std::max(extent, min); |
- return extent; |
+ return ConstrainByMinMax(extent, min_length, max_length); |
} |
int ResolveUsedColumnCount(int computed_count, |
@@ -408,4 +402,14 @@ void ApplyAutoMargins(const NGConstraintSpace& constraint_space, |
} |
} |
+LayoutUnit ConstrainByMinMax(LayoutUnit length, |
+ Optional<LayoutUnit> min, |
+ Optional<LayoutUnit> max) { |
+ if (max && length > max.value()) |
+ length = max.value(); |
+ if (min && length < min.value()) |
+ length = min.value(); |
+ return length; |
+} |
+ |
} // namespace blink |