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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc

Issue 2483683003: [LayoutNG] Split apart storage for AvailableSize and PercentageSize. (Closed)
Patch Set: rebase. Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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 1d269f639894c85a4c837b8b8aae14136653b937..c08f9464220a6cece4da23f767e3fd6458c41107 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
@@ -62,7 +62,7 @@ LayoutUnit ResolveInlineLength(const NGConstraintSpace& constraintSpace,
LengthResolveType type) {
// TODO(layout-ng): Handle min/max/fit-content
DCHECK(!length.isMaxSizeNone());
- DCHECK_GE(constraintSpace.ContainerSize().inline_size, LayoutUnit());
+ DCHECK_GE(constraintSpace.AvailableSize().inline_size, LayoutUnit());
if (type == LengthResolveType::MinSize && length.isAuto())
return LayoutUnit();
@@ -77,21 +77,23 @@ LayoutUnit ResolveInlineLength(const NGConstraintSpace& constraintSpace,
border_and_padding =
ComputeBorders(style) + ComputePadding(constraintSpace, style);
}
- LayoutUnit container_size = constraintSpace.ContainerSize().inline_size;
switch (length.type()) {
case Auto:
case FillAvailable: {
+ LayoutUnit content_size = constraintSpace.AvailableSize().inline_size;
NGBoxStrut margins =
ComputeMargins(constraintSpace, style,
FromPlatformWritingMode(style.getWritingMode()),
FromPlatformDirection(style.direction()));
return std::max(border_and_padding.InlineSum(),
- container_size - margins.InlineSum());
+ content_size - margins.InlineSum());
}
case Percent:
case Fixed:
case Calculated: {
- LayoutUnit value = valueForLength(length, container_size);
+ LayoutUnit percentage_resolution_size =
+ constraintSpace.PercentageResolutionSize().inline_size;
+ LayoutUnit value = valueForLength(length, percentage_resolution_size);
if (style.boxSizing() == BoxSizingContentBox) {
value += border_and_padding.InlineSum();
} else {
@@ -129,7 +131,7 @@ LayoutUnit ResolveBlockLength(const NGConstraintSpace& constraintSpace,
// Make sure that indefinite percentages resolve to NGSizeIndefinite, not to
// a random negative number.
if (length.isPercentOrCalc() &&
- constraintSpace.ContainerSize().block_size == NGSizeIndefinite)
+ constraintSpace.PercentageResolutionSize().block_size == NGSizeIndefinite)
return contentSize;
// We don't need this when we're resolving margin/border/padding; skip
@@ -139,20 +141,22 @@ LayoutUnit ResolveBlockLength(const NGConstraintSpace& constraintSpace,
border_and_padding =
ComputeBorders(style) + ComputePadding(constraintSpace, style);
}
- LayoutUnit container_size = constraintSpace.ContainerSize().block_size;
switch (length.type()) {
case FillAvailable: {
+ LayoutUnit content_size = constraintSpace.AvailableSize().block_size;
NGBoxStrut margins =
ComputeMargins(constraintSpace, style,
FromPlatformWritingMode(style.getWritingMode()),
FromPlatformDirection(style.direction()));
return std::max(border_and_padding.BlockSum(),
- container_size - margins.BlockSum());
+ content_size - margins.BlockSum());
}
case Percent:
case Fixed:
case Calculated: {
- LayoutUnit value = valueForLength(length, container_size);
+ LayoutUnit percentage_resolution_size =
+ constraintSpace.PercentageResolutionSize().block_size;
+ LayoutUnit value = valueForLength(length, percentage_resolution_size);
if (style.boxSizing() == BoxSizingContentBox) {
value += border_and_padding.BlockSum();
} else {
@@ -184,7 +188,7 @@ LayoutUnit ComputeInlineSizeForFragment(
const NGConstraintSpace& constraintSpace,
const ComputedStyle& style) {
if (constraintSpace.FixedInlineSize())
- return constraintSpace.ContainerSize().inline_size;
+ return constraintSpace.AvailableSize().inline_size;
LayoutUnit extent =
ResolveInlineLength(constraintSpace, style, style.logicalWidth(),
@@ -208,7 +212,7 @@ LayoutUnit ComputeBlockSizeForFragment(const NGConstraintSpace& constraintSpace,
const ComputedStyle& style,
LayoutUnit contentSize) {
if (constraintSpace.FixedBlockSize())
- return constraintSpace.ContainerSize().block_size;
+ return constraintSpace.AvailableSize().block_size;
LayoutUnit extent =
ResolveBlockLength(constraintSpace, style, style.logicalHeight(),
@@ -291,7 +295,7 @@ void ApplyAutoMargins(const NGConstraintSpace& constraint_space,
DCHECK(margins) << "Margins cannot be NULL here";
const LayoutUnit used_space = fragment.InlineSize() + margins->InlineSum();
const LayoutUnit available_space =
- constraint_space.ContainerSize().inline_size - used_space;
+ constraint_space.AvailableSize().inline_size - used_space;
if (available_space < LayoutUnit())
return;
if (style.marginStart().isAuto() && style.marginEnd().isAuto()) {

Powered by Google App Engine
This is Rietveld 408576698