| Index: Source/core/css/CSSComputedStyleDeclaration.cpp
|
| diff --git a/Source/core/css/CSSComputedStyleDeclaration.cpp b/Source/core/css/CSSComputedStyleDeclaration.cpp
|
| index 7285c6033ca4cc77f552f9d731120713533752ab..ffd5c8af11b410c7c77cf8a23333ef733d6e0d23 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> valueForAnimationFillMode(unsigned fillMode)
|
| +{
|
| + 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 0;
|
| + }
|
| +}
|
| +
|
| +static PassRefPtr<CSSValue> valueForAnimationDirection(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 0;
|
| + }
|
| +}
|
| +
|
| 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(valueForAnimationDirection(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(valueForAnimationFillMode(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* animations = style->animations();
|
| + if (animations) {
|
| + RefPtr<CSSValueList> animationsList = CSSValueList::createCommaSeparated();
|
| + for (size_t i = 0; i < animations->size(); ++i) {
|
| + RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| + const CSSAnimationData* animation = animations->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(valueForAnimationDirection(animation->direction()));
|
| + list->append(valueForAnimationFillMode(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(valueForAnimationDirection(CSSAnimationData::initialAnimationDirection()));
|
| + list->append(valueForAnimationFillMode(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:
|
|
|