Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(444)

Unified Diff: Source/core/animation/AnimatableImage.cpp

Issue 203413008: Revert of Web Animations API: Load resources referenced in element.animate() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/animation/AnimatableImage.h ('k') | Source/core/animation/AnimatableValueTestHelper.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/animation/AnimatableImage.cpp
diff --git a/Source/core/animation/AnimatableImage.cpp b/Source/core/animation/AnimatableImage.cpp
index d67c9b4fab7ae71513f9b946d9f92c82ab7b986f..49df97fcd58d564b424d0fe03a49ea3167b0a7a2 100644
--- a/Source/core/animation/AnimatableImage.cpp
+++ b/Source/core/animation/AnimatableImage.cpp
@@ -40,24 +40,48 @@
// FIXME: Once cross-fade works on generated image types, remove this method.
bool AnimatableImage::usesDefaultInterpolationWith(const AnimatableValue* value) const
{
- if (!m_value->isImageValue())
+ RefPtrWillBeRawPtr<CSSValue> fromValue = toCSSValue();
+ if (fromValue->isImageGeneratorValue())
return true;
- if (!toAnimatableImage(value)->toCSSValue()->isImageValue())
+ if (!fromValue->isImageValue() && !m_image->isImageResource())
+ return true;
+ const AnimatableImage* image = toAnimatableImage(value);
+ RefPtrWillBeRawPtr<CSSValue> toValue = image->toCSSValue();
+ if (toValue->isImageGeneratorValue())
+ return true;
+ if (!toValue->isImageValue() && !image->m_image->isImageResource())
return true;
return false;
}
PassRefPtr<AnimatableValue> AnimatableImage::interpolateTo(const AnimatableValue* value, double fraction) const
{
- if (fraction <= 0 || fraction >= 1 || usesDefaultInterpolationWith(value))
+ if (fraction <= 0 || fraction >= 1)
return defaultInterpolateTo(this, value, fraction);
-
- CSSValue* fromValue = toCSSValue();
- CSSValue* toValue = toAnimatableImage(value)->toCSSValue();
-
+ RefPtrWillBeRawPtr<CSSValue> fromValue = toCSSValue();
+ // FIXME: Once cross-fade works on generated image types, remove this check.
+ if (fromValue->isImageGeneratorValue())
+ return defaultInterpolateTo(this, value, fraction);
+ if (!fromValue->isImageValue() && !fromValue->isImageGeneratorValue()) {
+ if (!m_image->isImageResource())
+ return defaultInterpolateTo(this, value, fraction);
+ ImageResource* resource = static_cast<ImageResource*>(m_image->data());
+ fromValue = CSSImageValue::create(resource->url(), m_image.get());
+ }
+ const AnimatableImage* image = toAnimatableImage(value);
+ RefPtrWillBeRawPtr<CSSValue> toValue = image->toCSSValue();
+ // FIXME: Once cross-fade works on generated image types, remove this check.
+ if (toValue->isImageGeneratorValue())
+ return defaultInterpolateTo(this, value, fraction);
+ if (!toValue->isImageValue() && !toValue->isImageGeneratorValue()) {
+ if (!image->m_image->isImageResource())
+ return defaultInterpolateTo(this, value, fraction);
+ ImageResource* resource = static_cast<ImageResource*>(image->m_image->data());
+ toValue = CSSImageValue::create(resource->url(), image->m_image.get());
+ }
RefPtrWillBeRawPtr<CSSCrossfadeValue> crossfadeValue = CSSCrossfadeValue::create(fromValue, toValue);
crossfadeValue->setPercentage(CSSPrimitiveValue::create(fraction, CSSPrimitiveValue::CSS_NUMBER));
- return create(crossfadeValue);
+ return create(StyleGeneratedImage::create(crossfadeValue.get()).get());
}
PassRefPtr<AnimatableValue> AnimatableImage::addWith(const AnimatableValue* value) const
@@ -68,7 +92,7 @@
bool AnimatableImage::equalTo(const AnimatableValue* value) const
{
- return m_value->equals(*toAnimatableImage(value)->m_value.get());
+ return StyleImage::imagesEquivalent(m_image.get(), toAnimatableImage(value)->m_image.get());
}
}
« no previous file with comments | « Source/core/animation/AnimatableImage.h ('k') | Source/core/animation/AnimatableValueTestHelper.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698