| Index: third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
|
| index 0b4bbc5338a574c0a19dcf353a24a98d12a34414..41591f6dceb14fca4a9e6bfaf276f4e6431a6945 100644
|
| --- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
|
| +++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
|
| @@ -144,40 +144,33 @@ static void adjustStyleForFirstLetter(ComputedStyle& style)
|
| style.setPosition(StaticPosition);
|
| }
|
|
|
| -static void adjustStyleForAlignment(ComputedStyle& style, const ComputedStyle& parentStyle)
|
| +void StyleAdjuster::adjustStyleForAlignment(ComputedStyle& style, const ComputedStyle& parentStyle)
|
| {
|
| - bool isFlexOrGrid = style.isDisplayFlexibleOrGridBox();
|
| - bool absolutePositioned = style.position() == AbsolutePosition;
|
| + // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto' flag
|
| + // to not just mean 'auto' prior to running the StyleAdjuster but also mean 'normal'
|
| + // after running it.
|
|
|
| - // If the inherited value of justify-items includes the legacy keyword, 'auto'
|
| + // If the inherited value of justify-items includes the 'legacy' keyword, 'auto'
|
| // computes to the the inherited value.
|
| - // Otherwise, auto computes to:
|
| - // - 'stretch' for flex containers and grid containers.
|
| - // - 'start' for everything else.
|
| + // Otherwise, 'auto' computes to 'normal'.
|
| if (style.justifyItemsPosition() == ItemPositionAuto) {
|
| if (parentStyle.justifyItemsPositionType() == LegacyPosition)
|
| style.setJustifyItems(parentStyle.justifyItems());
|
| - else if (isFlexOrGrid)
|
| - style.setJustifyItemsPosition(ItemPositionStretch);
|
| }
|
|
|
| - // The 'auto' keyword computes to 'stretch' on absolutely-positioned elements,
|
| - // and to the computed value of justify-items on the parent (minus
|
| - // any legacy keywords) on all other boxes.
|
| + // The 'auto' keyword computes the computed value of justify-items on the parent (minus
|
| + // any legacy keywords), or 'normal' if the box has no parent.
|
| if (style.justifySelfPosition() == ItemPositionAuto) {
|
| - if (absolutePositioned)
|
| - style.setJustifySelfPosition(ItemPositionStretch);
|
| - else
|
| + if (parentStyle.justifyItemsPositionType() == LegacyPosition)
|
| + style.setJustifySelfPosition(parentStyle.justifyItemsPosition());
|
| + else if (parentStyle.justifyItemsPosition() != ItemPositionAuto)
|
| style.setJustifySelf(parentStyle.justifyItems());
|
| }
|
|
|
| - // The 'auto' keyword computes to:
|
| - // - 'stretch' for flex containers and grid containers,
|
| - // - 'start' for everything else.
|
| - if (style.alignItemsPosition() == ItemPositionAuto) {
|
| - if (isFlexOrGrid)
|
| - style.setAlignItemsPosition(ItemPositionStretch);
|
| - }
|
| + // The 'auto' keyword computes the computed value of align-items on the parent
|
| + // or 'normal' if the box has no parent.
|
| + if (style.alignSelfPosition() == ItemPositionAuto && parentStyle.alignItemsPosition() != ItemPositionNormal)
|
| + style.setAlignSelf(parentStyle.alignItems());
|
| }
|
|
|
| static void adjustStyleForHTMLElement(ComputedStyle& style, const ComputedStyle& parentStyle, HTMLElement& element)
|
|
|