Changeset 153067 in webkit
- Timestamp:
- Jul 23, 2013, 4:42:16 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r153063 r153067 1 2013-07-22 Ryosuke Niwa <rniwa@webkit.org> 2 3 The computed values of fix length padding should be subpixel precision like margin 4 https://bugs.webkit.org/show_bug.cgi?id=118936 5 6 Reviewed by Simon Fraser. 7 8 Add a regression test for obtaining the computed values of floating point padding and margin. 9 They shouldn't be rounded to whole pixels. 10 11 * fast/css/getComputedStyle/getComputedStyle-padding-margin-subpixel-length-expected.txt: Added. 12 * fast/css/getComputedStyle/getComputedStyle-padding-margin-subpixel-length.html: Added. 13 * fast/shapes/shape-inside/shape-inside-shape-logical-top-expected.html: Use a different technique to detect 14 the subpixel layout since paddings 15 1 16 2013-07-23 Bem Jones-Bey <bjonesbe@adobe.com> 2 17 -
trunk/LayoutTests/fast/shapes/shape-inside/shape-inside-shape-logical-top-expected.html
r152800 r153067 17 17 border: 2px solid blue; 18 18 } 19 #elementWith105pxHeight { 20 position: absolute; 21 left: 0; 22 top: 0; 23 height: 10.5px; 24 } 19 25 </style> 20 26 <script> … … 22 28 // If subpixel layout is not enabled, fix shape-inside's padding-top value. 23 29 var shapeInsideElt = document.getElementById("shape-inside"); 24 if ( window.getComputedStyle(shapeInsideElt).paddingTop == "20px")30 if (getComputedStyle(document.getElementById('elementWith105pxHeight')).height == "10px") 25 31 shapeInsideElt.style.paddingTop = "21px" 26 32 } … … 29 35 <body onload="init()"> 30 36 <div id="shape-inside"> 37 <span id="elementWith105pxHeight"></span> 31 38 <div id="border"></div> 32 39 This text should be contained by the blue square. -
trunk/Source/WebCore/ChangeLog
r153064 r153067 1 2013-07-19 Ryosuke Niwa <rniwa@webkit.org> 2 3 The computed values of fix length padding should be subpixel precision like margin 4 https://bugs.webkit.org/show_bug.cgi?id=118936 5 6 Reviewed by Simon Fraser. 7 8 The bug was caused by ComputedStyleExtractor::propertyValue always returning the used value 9 for padding. Fixed the bug by returning the computed value when they're of fixed length. 10 11 This aligns the behaviors of getComputedStyle(~).padding~ with getComputedStyle(~).margin~, 12 which had been fixed in r102149. While the current CSSOM specification says getComputedStyle 13 should return the used values for margins when display property is set to anything but none, 14 new behavior matches that of Chrome, Firefox, and Internet Explorer. 15 16 Also extracted zoomAdjustedPaddingOrMarginPixelValue to reduce the code duplication. 17 18 Test: fast/css/getComputedStyle/getComputedStyle-padding-margin-subpixel-length.html 19 20 * css/CSSComputedStyleDeclaration.cpp: 21 (WebCore::zoomAdjustedPaddingOrMarginPixelValue): Extracted. 22 (WebCore::ComputedStyleExtractor::propertyValue): 23 1 24 2013-07-23 Alex Christensen <achristensen@apple.com> 2 25 -
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r152938 r153067 1597 1597 } 1598 1598 1599 typedef Length (RenderStyle::*RenderStyleLengthGetter)() const; 1600 typedef LayoutUnit (RenderBoxModelObject::*RenderBoxComputedCSSValueGetter)() const; 1601 1602 template<RenderStyleLengthGetter lengthGetter, RenderBoxComputedCSSValueGetter computedCSSValueGetter> 1603 inline PassRefPtr<CSSValue> zoomAdjustedPaddingOrMarginPixelValue(RenderStyle* style, RenderObject* renderer) 1604 { 1605 Length unzoomedLength = (style->*lengthGetter)(); 1606 if (unzoomedLength.isFixed() || !renderer || !renderer->isBox()) 1607 return zoomAdjustedPixelValueForLength(unzoomedLength, style); 1608 return zoomAdjustedPixelValue((toRenderBox(renderer)->*computedCSSValueGetter)(), style); 1609 } 1610 1599 1611 PassRefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propertyID, EUpdateLayout updateLayout) const 1600 1612 { … … 2073 2085 return cssValuePool().createIdentifierValue(CSSValueAuto); 2074 2086 return cssValuePool().createValue(style->locale(), CSSPrimitiveValue::CSS_STRING); 2075 case CSSPropertyMarginTop: { 2076 Length marginTop = style->marginTop(); 2077 if (marginTop.isFixed() || !renderer || !renderer->isBox()) 2078 return zoomAdjustedPixelValueForLength(marginTop, style.get()); 2079 return zoomAdjustedPixelValue(toRenderBox(renderer)->marginTop(), style.get()); 2080 } 2087 case CSSPropertyMarginTop: 2088 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::marginTop, &RenderBoxModelObject::marginTop>(style.get(), renderer); 2081 2089 case CSSPropertyMarginRight: { 2082 2090 Length marginRight = style->marginRight(); … … 2093 2101 return zoomAdjustedPixelValue(value, style.get()); 2094 2102 } 2095 case CSSPropertyMarginBottom: { 2096 Length marginBottom = style->marginBottom(); 2097 if (marginBottom.isFixed() || !renderer || !renderer->isBox()) 2098 return zoomAdjustedPixelValueForLength(marginBottom, style.get()); 2099 return zoomAdjustedPixelValue(toRenderBox(renderer)->marginBottom(), style.get()); 2100 } 2101 case CSSPropertyMarginLeft: { 2102 Length marginLeft = style->marginLeft(); 2103 if (marginLeft.isFixed() || !renderer || !renderer->isBox()) 2104 return zoomAdjustedPixelValueForLength(marginLeft, style.get()); 2105 return zoomAdjustedPixelValue(toRenderBox(renderer)->marginLeft(), style.get()); 2106 } 2103 case CSSPropertyMarginBottom: 2104 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::marginBottom, &RenderBoxModelObject::marginBottom>(style.get(), renderer); 2105 case CSSPropertyMarginLeft: 2106 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::marginLeft, &RenderBoxModelObject::marginLeft>(style.get(), renderer); 2107 2107 case CSSPropertyWebkitMarqueeDirection: 2108 2108 return cssValuePool().createValue(style->marqueeDirection()); … … 2164 2164 return cssValuePool().createValue(style->overflowY()); 2165 2165 case CSSPropertyPaddingTop: 2166 if (renderer && renderer->isBox()) 2167 return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingTop(), style.get()); 2168 return zoomAdjustedPixelValueForLength(style->paddingTop(), style.get()); 2166 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::paddingTop, &RenderBoxModelObject::computedCSSPaddingTop>(style.get(), renderer); 2169 2167 case CSSPropertyPaddingRight: 2170 if (renderer && renderer->isBox()) 2171 return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingRight(), style.get()); 2172 return zoomAdjustedPixelValueForLength(style->paddingRight(), style.get()); 2168 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::paddingRight, &RenderBoxModelObject::computedCSSPaddingRight>(style.get(), renderer); 2173 2169 case CSSPropertyPaddingBottom: 2174 if (renderer && renderer->isBox()) 2175 return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingBottom(), style.get()); 2176 return zoomAdjustedPixelValueForLength(style->paddingBottom(), style.get()); 2170 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::paddingBottom, &RenderBoxModelObject::computedCSSPaddingBottom>(style.get(), renderer); 2177 2171 case CSSPropertyPaddingLeft: 2178 if (renderer && renderer->isBox()) 2179 return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingLeft(), style.get()); 2180 return zoomAdjustedPixelValueForLength(style->paddingLeft(), style.get()); 2172 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::paddingLeft, &RenderBoxModelObject::computedCSSPaddingLeft>(style.get(), renderer); 2181 2173 case CSSPropertyPageBreakAfter: 2182 2174 return cssValuePool().createValue(style->pageBreakAfter());
Note:
See TracChangeset
for help on using the changeset viewer.