| 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 97c79543d977b06764c0c0f78739f925d2f6eee4..10b9102d797bb0a73e69da7ab4577a0cb45d9393 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
|
| @@ -14,6 +14,7 @@ namespace blink {
|
| // - Handle border-box correctly
|
| // - positioned and/or replaced calculations
|
| // - Handle margins for fill-available and width: auto
|
| +// - Take scrollbars into account
|
|
|
| LayoutUnit resolveInlineLength(const NGConstraintSpace& constraintSpace,
|
| const Length& length,
|
| @@ -25,7 +26,7 @@ LayoutUnit resolveInlineLength(const NGConstraintSpace& constraintSpace,
|
| if (type == LengthResolveType::MinSize && length.isAuto())
|
| return LayoutUnit();
|
|
|
| - if (type == LengthResolveType::MarginSize && length.isAuto())
|
| + if (type == LengthResolveType::MarginBorderPaddingSize && length.isAuto())
|
| return LayoutUnit();
|
|
|
| return valueForLength(length, constraintSpace.ContainerSize().inline_size);
|
| @@ -36,7 +37,7 @@ LayoutUnit resolveBlockLength(const NGConstraintSpace& constraintSpace,
|
| LayoutUnit contentSize,
|
| LengthResolveType type) {
|
| DCHECK(!length.isMaxSizeNone());
|
| - DCHECK(type != LengthResolveType::MarginSize);
|
| + DCHECK(type != LengthResolveType::MarginBorderPaddingSize);
|
|
|
| if (type == LengthResolveType::MinSize && length.isAuto())
|
| return LayoutUnit();
|
| @@ -120,15 +121,48 @@ NGBoxStrut computeMargins(const NGConstraintSpace& constraintSpace,
|
| // Margins always get computed relative to the inline size:
|
| // https://www.w3.org/TR/CSS2/box.html#value-def-margin-width
|
| NGBoxStrut margins;
|
| - margins.inline_start = resolveInlineLength(
|
| - constraintSpace, style.marginStart(), LengthResolveType::MarginSize);
|
| - margins.inline_end = resolveInlineLength(constraintSpace, style.marginEnd(),
|
| - LengthResolveType::MarginSize);
|
| - margins.block_start = resolveInlineLength(
|
| - constraintSpace, style.marginBefore(), LengthResolveType::MarginSize);
|
| - margins.block_end = resolveInlineLength(constraintSpace, style.marginAfter(),
|
| - LengthResolveType::MarginSize);
|
| + margins.inline_start =
|
| + resolveInlineLength(constraintSpace, style.marginStart(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| + margins.inline_end =
|
| + resolveInlineLength(constraintSpace, style.marginEnd(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| + margins.block_start =
|
| + resolveInlineLength(constraintSpace, style.marginBefore(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| + margins.block_end =
|
| + resolveInlineLength(constraintSpace, style.marginAfter(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| return margins;
|
| }
|
|
|
| +NGBoxStrut computeBorders(const ComputedStyle& style) {
|
| + NGBoxStrut borders;
|
| + borders.inline_start = LayoutUnit(style.borderStartWidth());
|
| + borders.inline_end = LayoutUnit(style.borderEndWidth());
|
| + borders.block_start = LayoutUnit(style.borderBeforeWidth());
|
| + borders.block_end = LayoutUnit(style.borderAfterWidth());
|
| + return borders;
|
| +}
|
| +
|
| +NGBoxStrut computePadding(const NGConstraintSpace& constraintSpace,
|
| + const ComputedStyle& style) {
|
| + // Padding always gets computed relative to the inline size:
|
| + // https://www.w3.org/TR/CSS2/box.html#value-def-padding-width
|
| + NGBoxStrut padding;
|
| + padding.inline_start =
|
| + resolveInlineLength(constraintSpace, style.paddingStart(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| + padding.inline_end =
|
| + resolveInlineLength(constraintSpace, style.paddingEnd(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| + padding.block_start =
|
| + resolveInlineLength(constraintSpace, style.paddingBefore(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| + padding.block_end =
|
| + resolveInlineLength(constraintSpace, style.paddingAfter(),
|
| + LengthResolveType::MarginBorderPaddingSize);
|
| + return padding;
|
| +}
|
| +
|
| } // namespace blink
|
|
|