Changeset 159907 in webkit


Ignore:
Timestamp:
Dec 1, 2013 6:47:40 PM (10 years ago)
Author:
akling@apple.com
Message:

Make more computed style helpers return PassRef.
<https://webkit.org/b/125043>

Reduce branchiness in computed style code by making more of the
file-local helpers return PassRef instead of PassRefPtr.

Reviewed by Anders Carlsson.

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r159897 r159907  
     12013-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
    1112013-11-30  Ryuan Choi  <ryuan.choi@samsung.com>
    212
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp

    r159856 r159907  
    601601}
    602602
    603 inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(double value, const RenderStyle* style)
     603inline static PassRef<CSSPrimitiveValue> zoomAdjustedPixelValue(double value, const RenderStyle* style)
    604604{
    605605    return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style), CSSPrimitiveValue::CSS_PX);
    606606}
    607607
    608 inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedNumberValue(double value, const RenderStyle* style)
     608inline static PassRef<CSSPrimitiveValue> zoomAdjustedNumberValue(double value, const RenderStyle* style)
    609609{
    610610    return cssValuePool().createValue(value / style->effectiveZoom(), CSSPrimitiveValue::CSS_NUMBER);
    611611}
    612612
    613 static PassRefPtr<CSSValue> zoomAdjustedPixelValueForLength(const Length& length, const RenderStyle* style)
     613static PassRef<CSSValue> zoomAdjustedPixelValueForLength(const Length& length, const RenderStyle* style)
    614614{
    615615    if (length.isFixed())
     
    618618}
    619619
    620 static PassRefPtr<CSSValue> valueForReflection(const StyleReflection* reflection, const RenderStyle* style)
     620static PassRef<CSSValue> valueForReflection(const StyleReflection* reflection, const RenderStyle* style)
    621621{
    622622    if (!reflection)
     
    648648}
    649649
    650 static PassRefPtr<CSSValueList> createPositionListForLayer(CSSPropertyID propertyID, const FillLayer* layer, const RenderStyle* style)
    651 {
    652     RefPtr<CSSValueList> positionList = CSSValueList::createSpaceSeparated();
     650static PassRef<CSSValueList> createPositionListForLayer(CSSPropertyID propertyID, const FillLayer* layer, const RenderStyle* style)
     651{
     652    auto positionList = CSSValueList::createSpaceSeparated();
    653653    if (layer->isBackgroundOriginSet()) {
    654654        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));
    658658    if (layer->isBackgroundOriginSet()) {
    659659        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;
    664664}
    665665
     
    713713}
    714714
    715 static PassRefPtr<CSSValueList> getBorderRadiusCornerValues(const LengthSize& radius, const RenderStyle* style, RenderView* renderView)
    716 {
    717     RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
     715static PassRef<CSSValueList> getBorderRadiusCornerValues(const LengthSize& radius, const RenderStyle* style, RenderView* renderView)
     716{
     717    auto list = CSSValueList::createSpaceSeparated();
    718718    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));
    720720    else
    721         list->append(zoomAdjustedPixelValue(valueForLength(radius.width(), 0, renderView), style));
     721        list.get().append(zoomAdjustedPixelValue(valueForLength(radius.width(), 0, renderView), style));
    722722    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));
    724724    else
    725         list->append(zoomAdjustedPixelValue(valueForLength(radius.height(), 0, renderView), style));
    726     return list.release();
    727 }
    728 
    729 static PassRefPtr<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
     729static PassRef<CSSValue> getBorderRadiusCornerValue(const LengthSize& radius, const RenderStyle* style, RenderView* renderView)
    730730{
    731731    if (radius.width() == radius.height()) {
     
    737737}
    738738
    739 static PassRefPtr<CSSValueList> getBorderRadiusShorthandValue(const RenderStyle* style, RenderView* renderView)
    740 {
    741     RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated();
     739static PassRef<CSSValueList> getBorderRadiusShorthandValue(const RenderStyle* style, RenderView* renderView)
     740{
     741    auto list = CSSValueList::createSlashSeparated();
    742742    bool showHorizontalBottomLeft = style->borderTopRightRadius().width() != style->borderBottomLeftRadius().width();
    743743    bool showHorizontalBottomRight = showHorizontalBottomLeft || (style->borderBottomRightRadius().width() != style->borderTopLeftRadius().width());
     
    763763        horizontalRadii->append(bottomLeftRadius->item(0));
    764764
    765     list->append(horizontalRadii.release());
     765    list.get().append(horizontalRadii.release());
    766766
    767767    if (showVerticalTopLeft) {
     
    774774        if (showVerticalBottomLeft)
    775775            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;
    779779}
    780780
     
    788788}
    789789
    790 static PassRefPtr<WebKitCSSTransformValue> matrixTransformValue(const TransformationMatrix& transform, const RenderStyle* style)
     790static PassRef<WebKitCSSTransformValue> matrixTransformValue(const TransformationMatrix& transform, const RenderStyle* style)
    791791{
    792792    RefPtr<WebKitCSSTransformValue> transformValue;
     
    824824    }
    825825
    826     return transformValue.release();
    827 }
    828 
    829 static PassRefPtr<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle* style)
     826    return transformValue.releaseNonNull();
     827}
     828
     829static PassRef<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle* style)
    830830{
    831831    if (!renderer || !renderer->hasTransform() || !style->hasTransform())
     
    841841
    842842    // 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);
    847846}
    848847
    849848#if ENABLE(CSS_SHADERS)
    850 static PassRefPtr<CSSValue> valueForCustomFilterArrayParameter(const CustomFilterArrayParameter* arrayParameter)
    851 {
    852     RefPtr<WebKitCSSArrayFunctionValue> arrayParameterValue = WebKitCSSArrayFunctionValue::create();
     849static PassRef<WebKitCSSArrayFunctionValue> valueForCustomFilterArrayParameter(const CustomFilterArrayParameter* arrayParameter)
     850{
     851    auto arrayParameterValue = WebKitCSSArrayFunctionValue::create();
    853852    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 PassRefPtr<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
     857static PassRef<WebKitCSSMatFunctionValue> valueForCustomFilterMatParameter(const CustomFilterArrayParameter* matrixParameter)
     858{
     859    auto matrixParameterValue = WebKitCSSMatFunctionValue::create();
    861860    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 PassRefPtr<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 PassRefPtr<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
     865static 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
     872static PassRef<CSSValueList> valueForCustomFilterNumberParameter(const CustomFilterNumberParameter* numberParameter)
     873{
     874    auto numberParameterValue = CSSValueList::createSpaceSeparated();
    876875    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 PassRefPtr<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
     880static PassRef<WebKitCSSTransformValue> valueForCustomFilterTransformParameter(const RenderObject* renderer, const RenderStyle* style, const CustomFilterTransformParameter* transformParameter)
    882881{
    883882    IntSize size;
     
    913912#endif // ENABLE(CSS_SHADERS)
    914913
    915 static inline PassRefPtr<CSSPrimitiveValue> adjustLengthForZoom(double length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust)
     914static inline PassRef<CSSPrimitiveValue> adjustLengthForZoom(double length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust)
    916915{
    917916    return adjust == AdjustPixelValues ? zoomAdjustedPixelValue(length, style) : cssValuePool().createValue(length, CSSPrimitiveValue::CSS_PX);
    918917}
    919918
    920 static inline PassRefPtr<CSSPrimitiveValue> adjustLengthForZoom(const Length& length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust)
     919static inline PassRef<CSSPrimitiveValue> adjustLengthForZoom(const Length& length, const RenderStyle* style, AdjustPixelValuesForComputedStyle adjust)
    921920{
    922921    return adjust == AdjustPixelValues ? zoomAdjustedPixelValue(length.value(), style) : cssValuePool().createValue(length);
     
    11011100#endif
    11021101
    1103 static PassRefPtr<CSSValue> valueForGridTrackBreadth(const GridLength& trackBreadth, const RenderStyle* style, RenderView* renderView)
     1102static PassRef<CSSValue> valueForGridTrackBreadth(const GridLength& trackBreadth, const RenderStyle* style, RenderView* renderView)
    11041103{
    11051104    if (!trackBreadth.isLength())
     
    11471146}
    11481147
    1149 static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& trackSizes, const NamedGridLinesMap& namedGridLines, const RenderStyle* style, RenderView* renderView)
     1148static PassRef<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& trackSizes, const NamedGridLinesMap& namedGridLines, const RenderStyle* style, RenderView* renderView)
    11501149{
    11511150    // Handle the 'none' case here.
     
    11551154    }
    11561155
    1157     RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
     1156    auto list = CSSValueList::createSpaceSeparated();
    11581157    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));
    11611160    }
    11621161    // Those are the trailing <string>* allowed in the syntax.
    1163     addValuesForNamedGridLinesAtIndex(namedGridLines, trackSizes.size(), *list);
    1164     return list.release();
    1165 }
    1166 
    1167 static PassRefPtr<CSSValue> valueForGridPosition(const GridPosition& position)
     1162    addValuesForNamedGridLinesAtIndex(namedGridLines, trackSizes.size(), list.get());
     1163    return std::move(list);
     1164}
     1165
     1166static PassRef<CSSValue> valueForGridPosition(const GridPosition& position)
    11681167{
    11691168    if (position.isAuto())
     
    11731172        return cssValuePool().createValue(position.namedGridLine(), CSSPrimitiveValue::CSS_STRING);
    11741173
    1175     RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
     1174    auto list = CSSValueList::createSpaceSeparated();
    11761175    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));
    11791178    } else
    1180         list->append(cssValuePool().createValue(position.integerPosition(), CSSPrimitiveValue::CSS_NUMBER));
     1179        list.get().append(cssValuePool().createValue(position.integerPosition(), CSSPrimitiveValue::CSS_NUMBER));
    11811180
    11821181    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
     1186static PassRef<CSSValue> createTransitionPropertyValue(const Animation& animation)
     1187{
    11901188    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
     1195static PassRef<CSSValueList> getTransitionPropertyValue(const AnimationList* animList)
     1196{
     1197    auto list = CSSValueList::createCommaSeparated();
    12021198    if (animList) {
    12031199        for (size_t i = 0; i < animList->size(); ++i)
    1204             list->append(createTransitionPropertyValue(animList->animation(i)));
     1200            list.get().append(createTransitionPropertyValue(animList->animation(i)));
    12051201    } else
    1206         list->append(cssValuePool().createIdentifierValue(CSSValueAll));
    1207     return list.release();
    1208 }
    1209 
    1210 static PassRefPtr<CSSValue> getDelayValue(const AnimationList* animList)
    1211 {
    1212     RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
     1202        list.get().append(cssValuePool().createIdentifierValue(CSSValueAll));
     1203    return list;
     1204}
     1205
     1206static PassRef<CSSValueList> getDelayValue(const AnimationList* animList)
     1207{
     1208    auto list = CSSValueList::createCommaSeparated();
    12131209    if (animList) {
    12141210        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));
    12161212    } else {
    12171213        // 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 PassRefPtr<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
     1219static PassRef<CSSValueList> getDurationValue(const AnimationList* animList)
     1220{
     1221    auto list = CSSValueList::createCommaSeparated();
    12261222    if (animList) {
    12271223        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));
    12291225    } else {
    12301226        // 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;
    12341230}
    12351231
     
    12731269}
    12741270
    1275 static PassRefPtr<CSSValue> getTimingFunctionValue(const AnimationList* animList)
    1276 {
    1277     RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
     1271static PassRef<CSSValueList> getTimingFunctionValue(const AnimationList* animList)
     1272{
     1273    auto list = CSSValueList::createCommaSeparated();
    12781274    if (animList) {
    12791275        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()));
    12811277    } else
    12821278        // 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;
    12851281}
    12861282
Note: See TracChangeset for help on using the changeset viewer.