CSSTransitionData::TransitionProperty CSSToStyleMap::mapAnimationProperty(CSSValue* value) { if (value->isInitialValue()) return CSSTransitionData::initialProperty(); CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); if (primitiveValue->isString()) return CSSTransitionData::TransitionProperty(primitiveValue->getStringValue()); if (primitiveValue->getValueID() == CSSValueAll) return CSSTransitionData::TransitionProperty(CSSTransitionData::TransitionAll); if (primitiveValue->getValueID() == CSSValueNone) return CSSTransitionData::TransitionProperty(CSSTransitionData::TransitionNone); return CSSTransitionData::TransitionProperty(primitiveValue->getPropertyID()); }
void CSSToStyleMap::mapAnimationProperty(Animation* animation, CSSValue* value) { if (value->isInitialValue()) { animation->setAnimationMode(Animation::AnimateAll); animation->setProperty(CSSPropertyInvalid); return; } if (!value->isPrimitiveValue()) return; CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value); if (primitiveValue->getValueID() == CSSValueAll) { animation->setAnimationMode(Animation::AnimateAll); animation->setProperty(CSSPropertyInvalid); } else if (primitiveValue->getValueID() == CSSValueNone) { animation->setAnimationMode(Animation::AnimateNone); animation->setProperty(CSSPropertyInvalid); } else { animation->setAnimationMode(Animation::AnimateSingleProperty); animation->setProperty(primitiveValue->getPropertyID()); } }
void StyleBuilderFunctions::applyValueCSSPropertyWillChange(StyleResolverState& state, CSSValue* value) { ASSERT(value->isValueList()); bool willChangeContents = false; bool willChangeScrollPosition = false; Vector<CSSPropertyID> willChangeProperties; for (CSSValueListIterator i(value); i.hasMore(); i.advance()) { CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(i.value()); if (CSSPropertyID propertyID = primitiveValue->getPropertyID()) willChangeProperties.append(propertyID); else if (primitiveValue->getValueID() == CSSValueContents) willChangeContents = true; else if (primitiveValue->getValueID() == CSSValueScrollPosition) willChangeScrollPosition = true; else ASSERT_NOT_REACHED(); } state.style()->setWillChangeContents(willChangeContents); state.style()->setWillChangeScrollPosition(willChangeScrollPosition); state.style()->setWillChangeProperties(willChangeProperties); state.style()->setSubtreeWillChangeContents(willChangeContents || state.parentStyle()->subtreeWillChangeContents()); }