Chromium Code Reviews| 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 5d363848d3c5ab03df6601b0635173eddeff537e..8a3a251c2dec6c590fc76ca27d5c632173a34478 100644 | 
| --- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp | 
| +++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp | 
| @@ -243,7 +243,10 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, const ComputedStyl | 
| if (isSVGTextElement(*element)) | 
| style.clearMultiCol(); | 
| } | 
| - adjustStyleForAlignment(style, parentStyle); | 
| + if (element && element->layoutObject() && element->layoutObject()->containingBlock()->isAnonymous()) | 
| + adjustStyleForAlignment(style, element->layoutObject()->containingBlock()->styleRef()); | 
| + else | 
| + adjustStyleForAlignment(style, parentStyle); | 
| 
 
rune
2016/06/13 12:24:19
I still have a hard time understanding the spec he
 
jfernandez
2016/06/13 13:00:36
That's how I understand the spec, yes. An element'
 
 | 
| } | 
| void StyleAdjuster::adjustStyleForEditing(ComputedStyle& style) | 
| @@ -273,38 +276,31 @@ void StyleAdjuster::adjustStyleForFirstLetter(ComputedStyle& style) | 
| 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()); | 
| } | 
| void StyleAdjuster::adjustStyleForHTMLElement(ComputedStyle& style, const ComputedStyle& parentStyle, HTMLElement& element) |