Chromium Code Reviews| Index: third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp |
| diff --git a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp |
| index 9d4e5c14c0e8de4d66f367f8eff7ae977eaba06c..b65057c8393f3e3097efb039bcb3b3696f975d40 100644 |
| --- a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp |
| +++ b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp |
| @@ -222,9 +222,15 @@ static CSSValue* ValueForPositionOffset(const ComputedStyle& style, |
| } |
| if (offset.IsAuto() && layout_object) { |
| + // "top:auto" and "top:0px" have very different meaning for sticky elements. |
| + // Therefore "auto" should be returned regardless the opposite. |
| + // https://crbug.com/703816. |
| + if (layout_object->IsStickyPositioned()) |
| + return CSSIdentifierValue::Create(CSSValueAuto); |
|
flackr
2017/05/09 20:45:52
This extra condition should no longer be necessary
yigu
2017/05/09 21:08:06
Yes. Done.
|
| + |
| // If the property applies to a positioned element and the resolved value of |
| // the display property is not none, the resolved value is the used value. |
| - if (layout_object->IsInFlowPositioned()) { |
| + if (layout_object->IsRelPositioned()) { |
| // If e.g. left is auto and right is not auto, then left's computed value |
| // is negative right. So we get the opposite length unit and see if it is |
| // auto. |