OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> | 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. |
4 * All rights reserved. | 4 * All rights reserved. |
5 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 5 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
6 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> | 6 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> |
7 * Copyright (C) 2011 Sencha, Inc. All rights reserved. | 7 * Copyright (C) 2011 Sencha, Inc. All rights reserved. |
8 * Copyright (C) 2015 Google Inc. All rights reserved. | 8 * Copyright (C) 2015 Google Inc. All rights reserved. |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 ->ContainingBlockLogicalWidthForContent() | 217 ->ContainingBlockLogicalWidthForContent() |
218 : ToLayoutBox(layout_object) | 218 : ToLayoutBox(layout_object) |
219 ->ContainingBlockLogicalHeightForGetComputedStyle(); | 219 ->ContainingBlockLogicalHeightForGetComputedStyle(); |
220 return ZoomAdjustedPixelValue(ValueForLength(offset, containing_block_size), | 220 return ZoomAdjustedPixelValue(ValueForLength(offset, containing_block_size), |
221 style); | 221 style); |
222 } | 222 } |
223 | 223 |
224 if (offset.IsAuto() && layout_object) { | 224 if (offset.IsAuto() && layout_object) { |
225 // If the property applies to a positioned element and the resolved value of | 225 // If the property applies to a positioned element and the resolved value of |
226 // the display property is not none, the resolved value is the used value. | 226 // the display property is not none, the resolved value is the used value. |
227 if (layout_object->IsInFlowPositioned()) { | 227 // Position offsets have special meaning for position sticky so we return |
| 228 // auto when offset.isAuto() on a sticky position object: |
| 229 // https://crbug.com/703816. |
| 230 if (layout_object->IsRelPositioned()) { |
228 // If e.g. left is auto and right is not auto, then left's computed value | 231 // If e.g. left is auto and right is not auto, then left's computed value |
229 // is negative right. So we get the opposite length unit and see if it is | 232 // is negative right. So we get the opposite length unit and see if it is |
230 // auto. | 233 // auto. |
231 if (opposite.IsAuto()) | 234 if (opposite.IsAuto()) |
232 return CSSPrimitiveValue::Create(0, | 235 return CSSPrimitiveValue::Create(0, |
233 CSSPrimitiveValue::UnitType::kPixels); | 236 CSSPrimitiveValue::UnitType::kPixels); |
234 | 237 |
235 if (opposite.IsPercentOrCalc()) { | 238 if (opposite.IsPercentOrCalc()) { |
236 if (layout_object->IsBox()) { | 239 if (layout_object->IsBox()) { |
237 LayoutUnit containing_block_size = | 240 LayoutUnit containing_block_size = |
(...skipping 3507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3745 case CSSPropertyAll: | 3748 case CSSPropertyAll: |
3746 return nullptr; | 3749 return nullptr; |
3747 default: | 3750 default: |
3748 break; | 3751 break; |
3749 } | 3752 } |
3750 NOTREACHED(); | 3753 NOTREACHED(); |
3751 return nullptr; | 3754 return nullptr; |
3752 } | 3755 } |
3753 | 3756 |
3754 } // namespace blink | 3757 } // namespace blink |
OLD | NEW |