Bug 868904 - Fix infinite recursion with outer SVG transform animation r=dholbert
authorRobert Longson <longsonr@gmail.com>
Mon, 06 May 2013 07:33:20 +0100
changeset 142003 350afae381eb05d34bb8d6f6342a776430767f18
parent 142002 cfb9005d13e2012cd08ffdf35dd51b235e0102f2
child 142004 6c1668dfaaed2b95603a560eb6545b91d4150c12
push id2579
push userakeybl@mozilla.com
push dateMon, 24 Jun 2013 18:52:47 +0000
treeherdermozilla-beta@b69b7de8a05a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdholbert
bugs868904
milestone23.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 868904 - Fix infinite recursion with outer SVG transform animation r=dholbert
layout/svg/crashtests/868904-1.svg
layout/svg/crashtests/crashtests.list
layout/svg/nsSVGOuterSVGFrame.h
new file mode 100644
--- /dev/null
+++ b/layout/svg/crashtests/868904-1.svg
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<style>
+
+* { animation-name: a; animation-duration: 72ms }
+@keyframes a { 60% { transform: skewx(30deg); } }
+
+</style>
+</head>
+<body>
+
+<svg></svg>
+
+</body>
+</html>
--- a/layout/svg/crashtests/crashtests.list
+++ b/layout/svg/crashtests/crashtests.list
@@ -157,8 +157,9 @@ load 842009-1.svg
 load 842630-1.svg
 load 842909-1.svg
 load 843072-1.svg
 load 843917-1.svg
 load 847139-1.svg
 load 849688-1.svg
 load 849688-2.svg
 load 860378-1.svg
+load 868904-1.svg
--- a/layout/svg/nsSVGOuterSVGFrame.h
+++ b/layout/svg/nsSVGOuterSVGFrame.h
@@ -94,17 +94,17 @@ public:
     return GetFirstPrincipalChild()->GetContentInsertionFrame();
   }
 
   virtual bool IsSVGTransformed(gfxMatrix *aOwnTransform,
                                 gfxMatrix *aFromParentTransform) const {
     // Our anonymous wrapper performs the transforms. We simply
     // return whether we are transformed here but don't apply the transforms
     // themselves.
-    return GetFirstPrincipalChild()->IsTransformed();
+    return GetFirstPrincipalChild()->IsSVGTransformed();
   }
 
   // nsISVGSVGFrame interface:
   virtual void NotifyViewportOrTransformChanged(uint32_t aFlags);
 
   // nsISVGChildFrame methods:
   NS_IMETHOD PaintSVG(nsRenderingContext* aContext,
                       const nsIntRect *aDirtyRect);