Deleted: branches/chromium/782/LayoutTests/svg/animations/script-tests/svgtransform-animation-discrete.js (91278 => 91279)
--- branches/chromium/782/LayoutTests/svg/animations/script-tests/svgtransform-animation-discrete.js 2011-07-19 18:51:27 UTC (rev 91278)
+++ branches/chromium/782/LayoutTests/svg/animations/script-tests/svgtransform-animation-discrete.js 2011-07-19 18:52:43 UTC (rev 91279)
@@ -1,66 +0,0 @@
-description("Test calcMode=discrete animation on SVGAnimateTransform.");
-createSVGTestCase();
-
-// Setup test document
-var rect = createSVGElement("rect");
-rect.setAttribute("id", "rect");
-rect.setAttribute("width", "100");
-rect.setAttribute("height", "100");
-rect.setAttribute("x", "0");
-rect.setAttribute("y", "0");
-rect.setAttribute("fill", "green");
-rect.setAttribute("onclick", "executeTest()");
-
-var animate = createSVGElement("animateTransform");
-animate.setAttribute("id", "animation");
-animate.setAttribute("attributeName", "transform");
-animate.setAttribute("type", "translate");
-animate.setAttribute("from", "100,100");
-animate.setAttribute("to", "0,0");
-animate.setAttribute("type", "translate");
-animate.setAttribute("calcMode", "discrete");
-animate.setAttribute("begin", "click");
-animate.setAttribute("dur", "4s");
-rect.appendChild(animate);
-rootSVGElement.appendChild(rect);
-
-// Setup animation test
-
-function sample1() {
- // Check initial/end conditions
- shouldBe("rect.transform.animVal.numberOfItems", "0");
- shouldBeCloseEnough("document.defaultView.getComputedStyle(rect).getPropertyValue('x')", "0", 0.01);
- shouldBeCloseEnough("document.defaultView.getComputedStyle(rect).getPropertyValue('y')", "0", 0.01);
-}
-
-function sample2() {
- // Check initial/end conditions
- shouldBe("rect.transform.animVal.numberOfItems", "1");
- shouldBe("rect.transform.animVal.getItem(0).type", "SVGTransform.SVG_TRANSFORM_TRANSLATE");
- shouldBeCloseEnough("rect.transform.animVal.getItem(0).matrix.e", "100", 0.01);
- shouldBeCloseEnough("rect.transform.animVal.getItem(0).matrix.f", "100", 0.01);
-}
-
-function sample3() {
- shouldBe("rect.transform.animVal.numberOfItems", "1");
- shouldBe("rect.transform.animVal.getItem(0).type", "SVGTransform.SVG_TRANSFORM_TRANSLATE");
- shouldBeCloseEnough("rect.transform.animVal.getItem(0).matrix.e", "0", 0.01);
- shouldBeCloseEnough("rect.transform.animVal.getItem(0).matrix.f", "0", 0.01);
-}
-
-function executeTest() {
- const expectedValues = [
- // [animationId, time, elementId, sampleCallback]
- ["animation", 0.0, "rect", sample1],
- ["animation", 0.001, "rect", sample2],
- ["animation", 1.0, "rect", sample2],
- ["animation", 3.0, "rect", sample3],
- ["animation", 3.9999, "rect", sample3],
- ];
-
- runAnimationTest(expectedValues);
-}
-
-// Begin test async
-window.setTimeout("triggerUpdate(50, 50)", 0);
-var successfullyParsed = true;
Modified: branches/chromium/782/Source/WebCore/svg/SVGAnimateTransformElement.cpp (91278 => 91279)
--- branches/chromium/782/Source/WebCore/svg/SVGAnimateTransformElement.cpp 2011-07-19 18:51:27 UTC (rev 91278)
+++ branches/chromium/782/Source/WebCore/svg/SVGAnimateTransformElement.cpp 2011-07-19 18:52:43 UTC (rev 91279)
@@ -114,15 +114,15 @@
ASSERT_NOT_REACHED();
}
-static PassRefPtr<SVGAnimatedTransformList> animatedTransformListFor(SVGElement* element)
+static SVGTransformList* transformListFor(SVGElement* element)
{
ASSERT(element);
if (element->isStyledTransformable())
- return static_cast<SVGStyledTransformableElement*>(element)->transformAnimated();
+ return &static_cast<SVGStyledTransformableElement*>(element)->transform();
if (element->hasTagName(SVGNames::textTag))
- return static_cast<SVGTextElement*>(element)->transformAnimated();
+ return &static_cast<SVGTextElement*>(element)->transform();
if (element->hasTagName(SVGNames::linearGradientTag) || element->hasTagName(SVGNames::radialGradientTag))
- return static_cast<SVGGradientElement*>(element)->gradientTransformAnimated();
+ return &static_cast<SVGGradientElement*>(element)->gradientTransform();
// FIXME: Handle patternTransform, which is obviously missing!
return 0;
}
@@ -139,10 +139,8 @@
}
if (baseValue.isEmpty()) {
- if (RefPtr<SVGAnimatedTransformList> list = animatedTransformListFor(targetElement)) {
- list->detachListWrappers(0);
- list->values().clear();
- }
+ if (SVGTransformList* list = transformListFor(targetElement))
+ list->clear();
} else
targetElement->setAttribute(SVGNames::transformAttr, baseValue);
}
@@ -152,20 +150,17 @@
SVGElement* targetElement = this->targetElement();
if (!targetElement || determineAnimatedAttributeType(targetElement) == AnimatedUnknown)
return;
- RefPtr<SVGAnimatedTransformList> animatedList = animatedTransformListFor(targetElement);
- ASSERT(animatedList);
+ SVGTransformList* transformList = transformListFor(targetElement);
+ ASSERT(transformList);
- if (!isAdditive()) {
- animatedList->detachListWrappers(0);
- animatedList->values().clear();
- }
+ if (!isAdditive())
+ transformList->clear();
if (isAccumulated() && repeat) {
SVGTransform accumulatedTransform = SVGTransformDistance(m_fromTransform, m_toTransform).scaledDistance(repeat).addToSVGTransform(SVGTransform());
transformList->append(accumulatedTransform);
}
SVGTransform transform = SVGTransformDistance(m_fromTransform, m_toTransform).scaledDistance(percentage).addToSVGTransform(m_fromTransform);
- animatedList->values().append(transform);
- animatedList->wrappers().append(RefPtr<SVGPropertyTearOff<SVGTransform> >());
+ transformList->append(transform);
}
bool SVGAnimateTransformElement::calculateFromAndToValues(const String& fromString, const String& toString)
@@ -211,10 +206,9 @@
}
// ...except in case where we have additional instances in <use> trees.
- RefPtr<SVGAnimatedTransformList> animatedList = animatedTransformListFor(targetElement);
- if (!animatedList)
+ SVGTransformList* transformList = transformListFor(targetElement);
+ if (!transformList)
return;
- SVGTransformList* transformList = &animatedList->values();
const HashSet<SVGElementInstance*>& instances = targetElement->instancesForElement();
const HashSet<SVGElementInstance*>::const_iterator end = instances.end();