| 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) | 
|  |