Changeset 159907 in webkit
- Timestamp:
- Dec 1, 2013 6:47:40 PM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r159897 r159907 1 2013-12-01 Andreas Kling <akling@apple.com> 2 3 Make more computed style helpers return PassRef. 4 <https://webkit.org/b/125043> 5 6 Reduce branchiness in computed style code by making more of the 7 file-local helpers return PassRef instead of PassRefPtr. 8 9 Reviewed by Anders Carlsson. 10 1 11 2013-11-30 Ryuan Choi <ryuan.choi@samsung.com> 2 12 -
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r159856 r159907 601 601 } 602 602 603 inline static PassRef Ptr<CSSPrimitiveValue> zoomAdjustedPixelValue(double value, const RenderStyle* style)603 inline static PassRef<CSSPrimitiveValue> zoomAdjustedPixelValue(double value, const RenderStyle* style) 604 604 { 605 605 return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style), CSSPrimitiveValue::CSS_PX); 606 606 } 607 607 608 inline static PassRef Ptr<CSSPrimitiveValue> zoomAdjustedNumberValue(double value, const RenderStyle* style)608 inline static PassRef<CSSPrimitiveValue> zoomAdjustedNumberValue(double value, const RenderStyle* style) 609 609 { 610 610 return cssValuePool().createValue(value / style->effectiveZoom(), CSSPrimitiveValue::CSS_NUMBER); 611 611 } 612 612 613 static PassRef Ptr<CSSValue> zoomAdjustedPixelValueForLength(const Length& length, const RenderStyle* style)613 static PassRef<CSSValue> zoomAdjustedPixelValueForLength(const Length& length, const RenderStyle* style) 614 614 { 615 615 if (length.isFixed()) … … 618 618 } 619 619 620 static PassRef Ptr<CSSValue> valueForReflection(const StyleReflection* reflection, const RenderStyle* style)620 static PassRef<CSSValue> valueForReflection(const StyleReflection* reflection, const RenderStyle* style) 621 621 { 622 622 if (!reflection) … … 648 648 } 649 649 650 static PassRef Ptr<CSSValueList> createPositionListForLayer(CSSPropertyID propertyID, const FillLayer* layer, const RenderStyle* style)651 { 652 RefPtr<CSSValueList>positionList = CSSValueList::createSpaceSeparated();650 static PassRef<CSSValueList> createPositionListForLayer(CSSPropertyID propertyID, const FillLayer* layer, const RenderStyle* style) 651 { 652 auto positionList = CSSValueList::createSpaceSeparated(); 653 653 if (layer->isBackgroundOriginSet()) { 654 654 ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition); 655 positionList ->append(cssValuePool().createValue(layer->backgroundXOrigin()));656 } 657 positionList ->append(zoomAdjustedPixelValueForLength(layer->xPosition(), style));655 positionList.get().append(cssValuePool().createValue(layer->backgroundXOrigin())); 656 } 657 positionList.get().append(zoomAdjustedPixelValueForLength(layer->xPosition(), style)); 658 658 if (layer->isBackgroundOriginSet()) { 659 659 ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition); 660 positionList ->append(cssValuePool().createValue(layer->backgroundYOrigin()));661 } 662 positionList ->append(zoomAdjustedPixelValueForLength(layer->yPosition(), style));663 return positionList .release();660 positionList.get().append(cssValuePool().createValue(layer->backgroundYOrigin())); 661 } 662 positionList.get().append(zoomAdjustedPixelValueForLength(layer->yPosition(), style)); 663 return positionList; 664 664 } 665 665 … … 713 713 } 714 714 715 static PassRef Ptr<CSSValueList> getBorderRadiusCornerValues(const LengthSize& radius, const RenderStyle* style, RenderView* renderView)716 { 717 RefPtr<CSSValueList>list = CSSValueList::createSpaceSeparated();715 static PassRef<CSSValueList> getBorderRadiusCornerValues(const LengthSize& radius, const RenderStyle* style, RenderView* renderView) 716 { 717 auto list = CSSValueList::createSpaceSeparated(); 718 718 if (radius.width().type() == Percent) 719 list ->append(cssValuePool().createValue(radius.width().percent(), CSSPrimitiveValue::CSS_PERCENTAGE));719 list.get().append(cssValuePool().createValue(radius.width().percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); 720 720 else 721 list ->append(zoomAdjustedPixelValue(valueForLength(radius.width(), 0, renderView), style));721 list.get().append(zoomAdjustedPixelValue(valueForLength(radius.width(), 0, renderView), style)); 722 722 if (radius.height().type() == Percent) 723 list ->append(cssValuePool().createValue(radius.height().percent(), CSSPrimitiveValue::CSS_PERCENTAGE));723 list.get().append(cssValuePool().createValue(radius.height().percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); 724 724 else 725 list ->append(zoomAdjustedPixelValue(valueForLength(radius.height(), 0, renderView), style));726 return list .release();727 } 728 729 static PassRef Ptr<CSSValue> getBorderRadiusCornerValue(const LengthSize& radius, const RenderStyle* style, RenderView* renderView)725 list.get().append(zoomAdjustedPixelValue(valueForLength(radius.height(), 0, renderView), style)); 726 return list; 727 } 728 729 static PassRef<CSSValue> getBorderRadiusCornerValue(const LengthSize& radius, const RenderStyle* style, RenderView* renderView) 730 730 { 731 731 if (radius.width() == radius.height()) { … … 737 737 } 738 738 739 static PassRef Ptr<CSSValueList> getBorderRadiusShorthandValue(const RenderStyle* style, RenderView* renderView)740 { 741 RefPtr<CSSValueList>list = CSSValueList::createSlashSeparated();739 static PassRef<CSSValueList> getBorderRadiusShorthandValue(const RenderStyle* style, RenderView* renderView) 740 { 741 auto list = CSSValueList::createSlashSeparated(); 742 742 bool showHorizontalBottomLeft = style->borderTopRightRadius().width() != style->borderBottomLeftRadius().width(); 743 743 bool showHorizontalBottomRight = showHorizontalBottomLeft || (style->borderBottomRightRadius().width() != style->borderTopLeftRadius().width()); … … 763 763 horizontalRadii->append(bottomLeftRadius->item(0)); 764 764 765 list ->append(horizontalRadii.release());765 list.get().append(horizontalRadii.release()); 766 766 767 767 if (showVerticalTopLeft) { … … 774 774 if (showVerticalBottomLeft) 775 775 verticalRadii->append(bottomLeftRadius->item(1)); 776 list ->append(verticalRadii.release());777 } 778 return list .release();776 list.get().append(verticalRadii.release()); 777 } 778 return list; 779 779 } 780 780 … … 788 788 } 789 789 790 static PassRef Ptr<WebKitCSSTransformValue> matrixTransformValue(const TransformationMatrix& transform, const RenderStyle* style)790 static PassRef<WebKitCSSTransformValue> matrixTransformValue(const TransformationMatrix& transform, const RenderStyle* style) 791 791 { 792 792 RefPtr<WebKitCSSTransformValue> transformValue; … … 824 824 } 825 825 826 return transformValue.release ();827 } 828 829 static PassRef Ptr<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle* style)826 return transformValue.releaseNonNull(); 827 } 828 829 static PassRef<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle* style) 830 830 { 831 831 if (!renderer || !renderer->hasTransform() || !style->hasTransform()) … … 841 841 842 842 // FIXME: Need to print out individual functions (https://bugs.webkit.org/show_bug.cgi?id=23924) 843 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); 844 list->append(matrixTransformValue(transform, style)); 845 846 return list.release(); 843 auto list = CSSValueList::createSpaceSeparated(); 844 list.get().append(matrixTransformValue(transform, style)); 845 return std::move(list); 847 846 } 848 847 849 848 #if ENABLE(CSS_SHADERS) 850 static PassRef Ptr<CSSValue> valueForCustomFilterArrayParameter(const CustomFilterArrayParameter* arrayParameter)851 { 852 RefPtr<WebKitCSSArrayFunctionValue>arrayParameterValue = WebKitCSSArrayFunctionValue::create();849 static PassRef<WebKitCSSArrayFunctionValue> valueForCustomFilterArrayParameter(const CustomFilterArrayParameter* arrayParameter) 850 { 851 auto arrayParameterValue = WebKitCSSArrayFunctionValue::create(); 853 852 for (unsigned i = 0, size = arrayParameter->size(); i < size; ++i) 854 arrayParameterValue ->append(cssValuePool().createValue(arrayParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER));855 return arrayParameterValue .release();856 } 857 858 static PassRef Ptr<CSSValue> valueForCustomFilterMatParameter(const CustomFilterArrayParameter* matrixParameter)859 { 860 RefPtr<WebKitCSSMatFunctionValue>matrixParameterValue = WebKitCSSMatFunctionValue::create();853 arrayParameterValue.get().append(cssValuePool().createValue(arrayParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER)); 854 return arrayParameterValue; 855 } 856 857 static PassRef<WebKitCSSMatFunctionValue> valueForCustomFilterMatParameter(const CustomFilterArrayParameter* matrixParameter) 858 { 859 auto matrixParameterValue = WebKitCSSMatFunctionValue::create(); 861 860 for (unsigned i = 0, size = matrixParameter->size(); i < size; ++i) 862 matrixParameterValue ->append(cssValuePool().createValue(matrixParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER));863 return matrixParameterValue .release();864 } 865 866 static PassRef Ptr<CSSValue> valueForCustomFilterColorParameter(const CustomFilterColorParameter* colorParameter)867 { 868 RefPtr<CSSValueList>colorParameterValue = CSSValueList::createSpaceSeparated();869 colorParameterValue ->append(cssValuePool().createColorValue(colorParameter->color().rgb()));870 return colorParameterValue .release();871 } 872 873 static PassRef Ptr<CSSValue> valueForCustomFilterNumberParameter(const CustomFilterNumberParameter* numberParameter)874 { 875 RefPtr<CSSValueList>numberParameterValue = CSSValueList::createSpaceSeparated();861 matrixParameterValue.get().append(cssValuePool().createValue(matrixParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER)); 862 return matrixParameterValue; 863 } 864 865 static PassRef<CSSValueList> valueForCustomFilterColorParameter(const CustomFilterColorParameter* colorParameter) 866 { 867 auto colorParameterValue = CSSValueList::createSpaceSeparated(); 868 colorParameterValue.get().append(cssValuePool().createColorValue(colorParameter->color().rgb())); 869 return colorParameterValue; 870 } 871 872 static PassRef<CSSValueList> valueForCustomFilterNumberParameter(const CustomFilterNumberParameter* numberParameter) 873 { 874 auto numberParameterValue = CSSValueList::createSpaceSeparated(); 876 875 for (unsigned i = 0; i < numberParameter->size(); ++i) 877 numberParameterValue ->append(cssValuePool().createValue(numberParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER));878 return numberParameterValue .release();879 } 880 881 static PassRef Ptr<CSSValue> valueForCustomFilterTransformParameter(const RenderObject* renderer, const RenderStyle* style, const CustomFilterTransformParameter* transformParameter)876 numberParameterValue.get().append(cssValuePool().createValue(numberParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER)); 877 return numberParameterValue; 878 } 879 880 static PassRef<WebKitCSSTransformValue> valueForCustomFilterTransformParameter(const RenderObject* renderer, const RenderStyle* style, const CustomFilterTransformParameter* transformParameter) 882 881 { 883 882 IntSize size; … … 913 912 #endif // ENABLE(CSS_SHADERS) 914 913 915 static inline PassRef Ptr<CSSPrimitiveValue> adjustLengthForZoom(double length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust)914 static inline PassRef<CSSPrimitiveValue> adjustLengthForZoom(double length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust) 916 915 { 917 916 return adjust == AdjustPixelValues ? zoomAdjustedPixelValue(length, style) : cssValuePool().createValue(length, CSSPrimitiveValue::CSS_PX); 918 917 } 919 918 920 static inline PassRef Ptr<CSSPrimitiveValue> adjustLengthForZoom(const Length& length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust)919 static inline PassRef<CSSPrimitiveValue> adjustLengthForZoom(const Length& length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust) 921 920 { 922 921 return adjust == AdjustPixelValues ? zoomAdjustedPixelValue(length.value(), style) : cssValuePool().createValue(length); … … 1101 1100 #endif 1102 1101 1103 static PassRef Ptr<CSSValue> valueForGridTrackBreadth(const GridLength& trackBreadth, const RenderStyle* style, RenderView* renderView)1102 static PassRef<CSSValue> valueForGridTrackBreadth(const GridLength& trackBreadth, const RenderStyle* style, RenderView* renderView) 1104 1103 { 1105 1104 if (!trackBreadth.isLength()) … … 1147 1146 } 1148 1147 1149 static PassRef Ptr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& trackSizes, const NamedGridLinesMap& namedGridLines, const RenderStyle* style, RenderView* renderView)1148 static PassRef<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& trackSizes, const NamedGridLinesMap& namedGridLines, const RenderStyle* style, RenderView* renderView) 1150 1149 { 1151 1150 // Handle the 'none' case here. … … 1155 1154 } 1156 1155 1157 RefPtr<CSSValueList>list = CSSValueList::createSpaceSeparated();1156 auto list = CSSValueList::createSpaceSeparated(); 1158 1157 for (size_t i = 0; i < trackSizes.size(); ++i) { 1159 addValuesForNamedGridLinesAtIndex(namedGridLines, i, *list);1160 list ->append(valueForGridTrackSize(trackSizes[i], style, renderView));1158 addValuesForNamedGridLinesAtIndex(namedGridLines, i, list.get()); 1159 list.get().append(valueForGridTrackSize(trackSizes[i], style, renderView)); 1161 1160 } 1162 1161 // Those are the trailing <string>* allowed in the syntax. 1163 addValuesForNamedGridLinesAtIndex(namedGridLines, trackSizes.size(), *list);1164 return list.release();1165 } 1166 1167 static PassRef Ptr<CSSValue> valueForGridPosition(const GridPosition& position)1162 addValuesForNamedGridLinesAtIndex(namedGridLines, trackSizes.size(), list.get()); 1163 return std::move(list); 1164 } 1165 1166 static PassRef<CSSValue> valueForGridPosition(const GridPosition& position) 1168 1167 { 1169 1168 if (position.isAuto()) … … 1173 1172 return cssValuePool().createValue(position.namedGridLine(), CSSPrimitiveValue::CSS_STRING); 1174 1173 1175 RefPtr<CSSValueList>list = CSSValueList::createSpaceSeparated();1174 auto list = CSSValueList::createSpaceSeparated(); 1176 1175 if (position.isSpan()) { 1177 list ->append(cssValuePool().createIdentifierValue(CSSValueSpan));1178 list ->append(cssValuePool().createValue(position.spanPosition(), CSSPrimitiveValue::CSS_NUMBER));1176 list.get().append(cssValuePool().createIdentifierValue(CSSValueSpan)); 1177 list.get().append(cssValuePool().createValue(position.spanPosition(), CSSPrimitiveValue::CSS_NUMBER)); 1179 1178 } else 1180 list ->append(cssValuePool().createValue(position.integerPosition(), CSSPrimitiveValue::CSS_NUMBER));1179 list.get().append(cssValuePool().createValue(position.integerPosition(), CSSPrimitiveValue::CSS_NUMBER)); 1181 1180 1182 1181 if (!position.namedGridLine().isNull()) 1183 list->append(cssValuePool().createValue(position.namedGridLine(), CSSPrimitiveValue::CSS_STRING)); 1184 return list.release(); 1185 } 1186 1187 static PassRefPtr<CSSValue> createTransitionPropertyValue(const Animation& animation) 1188 { 1189 RefPtr<CSSValue> propertyValue; 1182 list.get().append(cssValuePool().createValue(position.namedGridLine(), CSSPrimitiveValue::CSS_STRING)); 1183 return std::move(list); 1184 } 1185 1186 static PassRef<CSSValue> createTransitionPropertyValue(const Animation& animation) 1187 { 1190 1188 if (animation.animationMode() == Animation::AnimateNone) 1191 propertyValue = cssValuePool().createIdentifierValue(CSSValueNone); 1192 else if (animation.animationMode() == Animation::AnimateAll) 1193 propertyValue = cssValuePool().createIdentifierValue(CSSValueAll); 1194 else 1195 propertyValue = cssValuePool().createValue(getPropertyNameString(animation.property()), CSSPrimitiveValue::CSS_STRING); 1196 return propertyValue.release(); 1197 } 1198 1199 static PassRefPtr<CSSValue> getTransitionPropertyValue(const AnimationList* animList) 1200 { 1201 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); 1189 return cssValuePool().createIdentifierValue(CSSValueNone); 1190 if (animation.animationMode() == Animation::AnimateAll) 1191 return cssValuePool().createIdentifierValue(CSSValueAll); 1192 return cssValuePool().createValue(getPropertyNameString(animation.property()), CSSPrimitiveValue::CSS_STRING); 1193 } 1194 1195 static PassRef<CSSValueList> getTransitionPropertyValue(const AnimationList* animList) 1196 { 1197 auto list = CSSValueList::createCommaSeparated(); 1202 1198 if (animList) { 1203 1199 for (size_t i = 0; i < animList->size(); ++i) 1204 list ->append(createTransitionPropertyValue(animList->animation(i)));1200 list.get().append(createTransitionPropertyValue(animList->animation(i))); 1205 1201 } else 1206 list ->append(cssValuePool().createIdentifierValue(CSSValueAll));1207 return list .release();1208 } 1209 1210 static PassRef Ptr<CSSValue> getDelayValue(const AnimationList* animList)1211 { 1212 RefPtr<CSSValueList>list = CSSValueList::createCommaSeparated();1202 list.get().append(cssValuePool().createIdentifierValue(CSSValueAll)); 1203 return list; 1204 } 1205 1206 static PassRef<CSSValueList> getDelayValue(const AnimationList* animList) 1207 { 1208 auto list = CSSValueList::createCommaSeparated(); 1213 1209 if (animList) { 1214 1210 for (size_t i = 0; i < animList->size(); ++i) 1215 list ->append(cssValuePool().createValue(animList->animation(i).delay(), CSSPrimitiveValue::CSS_S));1211 list.get().append(cssValuePool().createValue(animList->animation(i).delay(), CSSPrimitiveValue::CSS_S)); 1216 1212 } else { 1217 1213 // Note that initialAnimationDelay() is used for both transitions and animations 1218 list ->append(cssValuePool().createValue(Animation::initialAnimationDelay(), CSSPrimitiveValue::CSS_S));1219 } 1220 return list .release();1221 } 1222 1223 static PassRef Ptr<CSSValue> getDurationValue(const AnimationList* animList)1224 { 1225 RefPtr<CSSValueList>list = CSSValueList::createCommaSeparated();1214 list.get().append(cssValuePool().createValue(Animation::initialAnimationDelay(), CSSPrimitiveValue::CSS_S)); 1215 } 1216 return list; 1217 } 1218 1219 static PassRef<CSSValueList> getDurationValue(const AnimationList* animList) 1220 { 1221 auto list = CSSValueList::createCommaSeparated(); 1226 1222 if (animList) { 1227 1223 for (size_t i = 0; i < animList->size(); ++i) 1228 list ->append(cssValuePool().createValue(animList->animation(i).duration(), CSSPrimitiveValue::CSS_S));1224 list.get().append(cssValuePool().createValue(animList->animation(i).duration(), CSSPrimitiveValue::CSS_S)); 1229 1225 } else { 1230 1226 // Note that initialAnimationDuration() is used for both transitions and animations 1231 list ->append(cssValuePool().createValue(Animation::initialAnimationDuration(), CSSPrimitiveValue::CSS_S));1232 } 1233 return list .release();1227 list.get().append(cssValuePool().createValue(Animation::initialAnimationDuration(), CSSPrimitiveValue::CSS_S)); 1228 } 1229 return list; 1234 1230 } 1235 1231 … … 1273 1269 } 1274 1270 1275 static PassRef Ptr<CSSValue> getTimingFunctionValue(const AnimationList* animList)1276 { 1277 RefPtr<CSSValueList>list = CSSValueList::createCommaSeparated();1271 static PassRef<CSSValueList> getTimingFunctionValue(const AnimationList* animList) 1272 { 1273 auto list = CSSValueList::createCommaSeparated(); 1278 1274 if (animList) { 1279 1275 for (size_t i = 0; i < animList->size(); ++i) 1280 list ->append(createTimingFunctionValue(animList->animation(i).timingFunction().get()));1276 list.get().append(createTimingFunctionValue(animList->animation(i).timingFunction().get())); 1281 1277 } else 1282 1278 // Note that initialAnimationTimingFunction() is used for both transitions and animations 1283 list ->append(createTimingFunctionValue(Animation::initialAnimationTimingFunction().get()));1284 return list .release();1279 list.get().append(createTimingFunctionValue(Animation::initialAnimationTimingFunction().get())); 1280 return list; 1285 1281 } 1286 1282
Note: See TracChangeset
for help on using the changeset viewer.