Chromium Code Reviews| Index: Source/core/css/CSSComputedStyleDeclaration.cpp |
| diff --git a/Source/core/css/CSSComputedStyleDeclaration.cpp b/Source/core/css/CSSComputedStyleDeclaration.cpp |
| index 7285c6033ca4cc77f552f9d731120713533752ab..406461d7242c43331f90dd19cf0a04ae944b9eb8 100644 |
| --- a/Source/core/css/CSSComputedStyleDeclaration.cpp |
| +++ b/Source/core/css/CSSComputedStyleDeclaration.cpp |
| @@ -1189,6 +1189,40 @@ static PassRefPtr<CSSValue> getTimingFunctionValue(const CSSAnimationDataList* a |
| return list.release(); |
| } |
| +static PassRefPtr<CSSValue> getAnimationFillModeValue(unsigned fillMode) |
|
esprehn
2013/08/15 18:29:29
These methods are named wrong. Don't prefix with g
|
| +{ |
| + switch (fillMode) { |
| + case AnimationFillModeNone: |
| + return cssValuePool().createIdentifierValue(CSSValueNone); |
| + case AnimationFillModeForwards: |
| + return cssValuePool().createIdentifierValue(CSSValueForwards); |
| + case AnimationFillModeBackwards: |
| + return cssValuePool().createIdentifierValue(CSSValueBackwards); |
| + case AnimationFillModeBoth: |
| + return cssValuePool().createIdentifierValue(CSSValueBoth); |
| + default: |
| + ASSERT_NOT_REACHED(); |
| + return cssValuePool().createIdentifierValue(CSSValueNone); |
|
esprehn
2013/08/15 18:29:29
return null, you can't reach it anyway.
|
| + } |
| +} |
| + |
| +static PassRefPtr<CSSValue> getAnimationDirectionValue(CSSAnimationData::AnimationDirection direction) |
| +{ |
| + switch (direction) { |
| + case CSSAnimationData::AnimationDirectionNormal: |
| + return cssValuePool().createIdentifierValue(CSSValueNormal); |
| + case CSSAnimationData::AnimationDirectionAlternate: |
| + return cssValuePool().createIdentifierValue(CSSValueAlternate); |
| + case CSSAnimationData::AnimationDirectionReverse: |
| + return cssValuePool().createIdentifierValue(CSSValueReverse); |
| + case CSSAnimationData::AnimationDirectionAlternateReverse: |
| + return cssValuePool().createIdentifierValue(CSSValueAlternateReverse); |
| + default: |
| + ASSERT_NOT_REACHED(); |
| + return cssValuePool().createIdentifierValue(CSSValueNormal); |
|
esprehn
2013/08/15 18:29:29
ditto.
|
| + } |
| +} |
| + |
| static PassRefPtr<CSSValue> createLineBoxContainValue(unsigned lineBoxContain) |
| { |
| if (!lineBoxContain) |
| @@ -2350,24 +2384,8 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert |
| RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| const CSSAnimationDataList* t = style->animations(); |
| if (t) { |
| - for (size_t i = 0; i < t->size(); ++i) { |
| - switch (t->animation(i)->direction()) { |
| - case CSSAnimationData::AnimationDirectionNormal: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueNormal)); |
| - break; |
| - case CSSAnimationData::AnimationDirectionAlternate: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueAlternate)); |
| - break; |
| - case CSSAnimationData::AnimationDirectionReverse: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueReverse)); |
| - break; |
| - case CSSAnimationData::AnimationDirectionAlternateReverse: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueAlternateReverse)); |
| - break; |
| - default: |
| - ASSERT_NOT_REACHED(); |
| - } |
| - } |
| + for (size_t i = 0; i < t->size(); ++i) |
| + list->append(getAnimationDirectionValue(t->animation(i)->direction())); |
| } else |
| list->append(cssValuePool().createIdentifierValue(CSSValueNormal)); |
| return list.release(); |
| @@ -2384,22 +2402,8 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert |
| RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| const CSSAnimationDataList* t = style->animations(); |
| if (t) { |
| - for (size_t i = 0; i < t->size(); ++i) { |
| - switch (t->animation(i)->fillMode()) { |
| - case AnimationFillModeNone: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueNone)); |
| - break; |
| - case AnimationFillModeForwards: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueForwards)); |
| - break; |
| - case AnimationFillModeBackwards: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueBackwards)); |
| - break; |
| - case AnimationFillModeBoth: |
| - list->append(cssValuePool().createIdentifierValue(CSSValueBoth)); |
| - break; |
| - } |
| - } |
| + for (size_t i = 0; i < t->size(); ++i) |
| + list->append(getAnimationFillModeValue(t->animation(i)->fillMode())); |
| } else |
| list->append(cssValuePool().createIdentifierValue(CSSValueNone)); |
| return list.release(); |
| @@ -2458,6 +2462,46 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert |
| break; |
| case CSSPropertyWebkitAnimationTimingFunction: |
| return getTimingFunctionValue(style->animations()); |
| + case CSSPropertyAnimation: |
| + case CSSPropertyWebkitAnimation: { |
| + const CSSAnimationDataList* animList = style->animations(); |
|
esprehn
2013/08/15 18:29:29
don't abbreviate, -> animations
|
| + if (animList) { |
| + RefPtr<CSSValueList> animationsList = CSSValueList::createCommaSeparated(); |
| + for (size_t i = 0; i < animList->size(); ++i) { |
| + RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| + const CSSAnimationData* animation = animList->animation(i); |
| + list->append(cssValuePool().createValue(animation->name(), CSSPrimitiveValue::CSS_STRING)); |
| + list->append(cssValuePool().createValue(animation->duration(), CSSPrimitiveValue::CSS_S)); |
| + list->append(createTimingFunctionValue(animation->timingFunction().get())); |
| + list->append(cssValuePool().createValue(animation->delay(), CSSPrimitiveValue::CSS_S)); |
| + if (animation->iterationCount() == CSSAnimationData::IterationCountInfinite) |
| + list->append(cssValuePool().createIdentifierValue(CSSValueInfinite)); |
| + else |
| + list->append(cssValuePool().createValue(animation->iterationCount(), CSSPrimitiveValue::CSS_NUMBER)); |
| + list->append(getAnimationDirectionValue(animation->direction())); |
| + list->append(getAnimationFillModeValue(animation->fillMode())); |
| + if (animation->playState() == AnimPlayStatePaused) |
| + list->append(cssValuePool().createIdentifierValue(CSSValuePaused)); |
| + else |
| + list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); |
| + animationsList->append(list); |
| + } |
| + return animationsList.release(); |
| + } |
| + |
| + RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| + // animation-name default value. |
| + list->append(cssValuePool().createIdentifierValue(CSSValueNone)); |
| + list->append(cssValuePool().createValue(CSSAnimationData::initialAnimationDuration(), CSSPrimitiveValue::CSS_S)); |
| + list->append(createTimingFunctionValue(CSSAnimationData::initialAnimationTimingFunction().get())); |
| + list->append(cssValuePool().createValue(CSSAnimationData::initialAnimationDelay(), CSSPrimitiveValue::CSS_S)); |
| + list->append(cssValuePool().createValue(CSSAnimationData::initialAnimationIterationCount(), CSSPrimitiveValue::CSS_NUMBER)); |
| + list->append(getAnimationDirectionValue(CSSAnimationData::initialAnimationDirection())); |
| + list->append(getAnimationFillModeValue(CSSAnimationData::initialAnimationFillMode())); |
| + // Initial animation-play-state. |
| + list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); |
| + return list.release(); |
| + } |
| case CSSPropertyWebkitAppearance: |
| return cssValuePool().createValue(style->appearance()); |
| case CSSPropertyWebkitAspectRatio: |
| @@ -2810,8 +2854,6 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert |
| break; |
| /* Unimplemented -webkit- properties */ |
| - case CSSPropertyAnimation: |
| - case CSSPropertyWebkitAnimation: |
| case CSSPropertyWebkitBorderRadius: |
| case CSSPropertyWebkitMarginCollapse: |
| case CSSPropertyWebkitMarquee: |