Title: [91644] trunk
Revision
91644
Author
[email protected]
Date
2011-07-24 06:57:24 -0700 (Sun, 24 Jul 2011)

Log Message

2011-07-24  Rob Buis  <[email protected]>

        SVG <use> element is not repositioned when moved to x=0 y=0 through script
        https://bugs.webkit.org/show_bug.cgi?id=53767

        Reviewed by Nikolas Zimmermann.

        Only bail out on zero offset if it is not explicitly set.

        Test: svg/custom/use-move-to-offset.svg

        * rendering/svg/RenderSVGTransformableContainer.cpp:
        (WebCore::RenderSVGTransformableContainer::calculateLocalTransform):
        * rendering/svg/SVGShadowTreeElements.cpp:
        (WebCore::SVGShadowTreeContainerElement::SVGShadowTreeContainerElement):
        (WebCore::SVGShadowTreeContainerElement::setContainerOffset):
        * rendering/svg/SVGShadowTreeElements.h:
        (WebCore::SVGShadowTreeContainerElement::containerOffsetChanged):
        (WebCore::SVGShadowTreeContainerElement::setContainerOffsetChanged):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (91643 => 91644)


--- trunk/LayoutTests/ChangeLog	2011-07-24 10:07:26 UTC (rev 91643)
+++ trunk/LayoutTests/ChangeLog	2011-07-24 13:57:24 UTC (rev 91644)
@@ -1,3 +1,14 @@
+2011-07-24  Rob Buis  <[email protected]>
+
+        SVG <use> element is not repositioned when moved to x=0 y=0 through script 
+        https://bugs.webkit.org/show_bug.cgi?id=53767
+
+        Reviewed by Nikolas Zimmermann.
+
+        * svg/custom/use-move-to-offset-expected.png: Added.
+        * svg/custom/use-move-to-offset-expected.txt: Added.
+        * svg/custom/use-move-to-offset.svg: Added.
+
 2011-07-23  Kent Tamura  <[email protected]>
 
         [Chromium] Update expectations for r91636.

Added: trunk/LayoutTests/svg/custom/use-move-to-offset-expected.png (0 => 91644)


--- trunk/LayoutTests/svg/custom/use-move-to-offset-expected.png	                        (rev 0)
+++ trunk/LayoutTests/svg/custom/use-move-to-offset-expected.png	2011-07-24 13:57:24 UTC (rev 91644)
@@ -0,0 +1,40 @@
+\x89PNG
+
+
+IHDR X\x9Av\x82p)tEXtchecksum778803df0a824ed8f2c7dfa07c56832eh\x9F\xBD\xAC\xEEiCCPICC Profilex\x85T\xCFkA\xFE6n\xA9\xD0"Zk\xB2x\x90"IY\xABhE\xD46\xFDbk\xDB\xB6E\x90d3I\xD6n6\xEB\xEE&\xB5\xA5\x88\xE4\xE2\xD1*\xDEE\xED\xA1\xFF\x80z\xF0d/J\x85ZE(ޫ(b\xA1-\xF1\xCDnL\xB6\xA5\xEA\xC0\xCE~\xF3\xDE7\xEF}ov\xDF
+r\xD24\xF5\x80\xE4
+\xC7R\xA2il|Bj\xFC\x88\x8E\xA2	A4%U\xDB\xECN$A\x83s\xF9{\xE7\xD8z\x81[V\xC3{\xFBw\xB2w\xAD\x9AҶ\x9A\x84\xFD@\xE0G\x9A\xD9*\xB0\xEFq
+Y\x88<ߡ)\xC7t\xDF\xE3\xD8\xF2\xEC\x8F9Nyx\xC1\xB5+=\xC4Y"|@5-\xCEM\xB8S\xCD%\xD3@\x83H8\x94\xF5qR>\x9C׋\x94\xD7inf\xC6\xC8\xBDO\x90\xA6\xBB\xCC\xEE\xABb\xA1\x9CN\xF6\x90\xBD\x9D\xF4~N\xB3\xDE>\xC2!\xC2\xAD?F\xB8\x8D\x9E\xF5\x8C\xD5?\xE2a\xE1\xA4\xE6Ć=5\xF4\xF8`\xB7\xA9\xF85\xC2_M'\xA2Tq\xD9.
+\xF1\x98\xAE\xFDV\xF2J\x82p\x908\xCAda\x80sZHO\xD7Ln\xF8\xBA\x87}&\xD7\xAF\xE2wVQ\xE1y\x8Fg\xDE\xD4\xDD\xEFE\xDA\xAF0\x9A
+HPEa\x98\xB0P@\x86<14\xB2r?#\xAB\x93{2u$j\xBBtbD\xB1A{6\xDC=\xB7Q\xA4\xDD<\xFE("q\x94C\xB5\x92\xFCA\xFE*\xAF\xC9O\xE5y\xF9\xCB\\xB0\xD8V\x{1D4B5B}\x9A\xBA\xF2\xE0;\xC5噹\xD7\xD3\xC8\xE3sM^|\x95\xD4v\x93WG\x96\xACyz\xBC\x9A\xEC?\xECW\x971\xE6\x825\x8F\xC4s\xB0\xFB\xF1-_\x95̗)\x8C\xC5\xE3U\xF3\xEAK\x84uZ17ߟl;=\xE2.\xCF.\xB5\xD6s\xAD\x89\x8B7V\x9B\x97g\xFDjH\xFB\x93\xE6U\xF9O^\xF5\xF1\xFCg\xCD\xC4c\xE2)1&v\x8A\xE7!\x89\x97\xC5.\xF1\x92\xD8K\xAB\xE2`m\xC7\x9D\x95\x86)\xD2m\x91\xFA$\xD5``\x9A\xBC\xF5/]?[x\xBDF\xF5Q\x94\xCC\xD2T\x89\xF7\xC2*d4\x9D\xB9o\xFA\x8F\xDB\xC7\xFC\xE4\xF7\x8A\xE7\x9F(/l\xE0ș\xBAmSq\xEF\xA1e\xA5ns\xAE\xBF\xD1}\xF0\xB6nk\xA3~8\xFCX<\xAB\xADR5\x9F \xBCv\x87z\xE8)\x98Ӗ\x96\xCD9R\x87,\x9F\x93\xBA\xE9\xCAbR\xCCP\xDBCRR\xD7%\xD7eK\xB3\x99Ub\xE9vؙ\xD3n\xA19B\xF7ħJe\x93\xFA\xAF\xF1\xB0\xFD\xB0R\xF9\xF9\xACR\xD9~Nց\x97\xFAo\xC0\xBC\xFDE\xC0x\x8B\x89 IDATx\xED\xD91nBQA\xF0\xC5\xED\x9Bs\x81\x9D\xA8\x82"|+\x8DP\xB5x\xBF\xFE^\xCF\xCB\xE7k\x9E_?\xC7\xD7\xFC\xBE @\x80@.\xF0\x93/$@\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0! @\xCF @\x80\xF4\xA47\xB5H\x80 @\x80\xC0!\xF0~>\x9F\xE3\xE6\x99 @\x80\xA9\x80@RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x9C\xAFR\x95\xD8IDAT\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81% @\x96\x8E @\x80\xA9\x80I9\x8D @\x80 \xB0\xC8\xD2q#@\x80 @  )\xA71 @\x80\x96\x80Y:n @\x80\xA4$\xE54F\x80 @\x80\xC0 KǍ @\x80\x81T@\x80\xA4\x9C\xC6 @\x80Xd\xE9\xB8 @\x80 \x90
+\x90\x94\xD3 @\x80K@\x80,7 @\x80R\x92r#@\x80 @`	\x90\xA5\xE3F\x80 @\x80@* @RNc @\x80,\xB2t\xDC @\x80HH\xCAi\x8C @\x80\x81%\xF0b\x95\xA7/\xE3\xC9$IEND\xAEB`\x82
\ No newline at end of file

Added: trunk/LayoutTests/svg/custom/use-move-to-offset-expected.txt (0 => 91644)


--- trunk/LayoutTests/svg/custom/use-move-to-offset-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/custom/use-move-to-offset-expected.txt	2011-07-24 13:57:24 UTC (rev 91644)
@@ -0,0 +1,9 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,0) size 100x100
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGPath {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+    RenderSVGContainer {use} at (0,0) size 100x100
+      RenderSVGContainer {g} at (0,0) size 100x100
+        RenderSVGPath {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]

Added: trunk/LayoutTests/svg/custom/use-move-to-offset.svg (0 => 91644)


--- trunk/LayoutTests/svg/custom/use-move-to-offset.svg	                        (rev 0)
+++ trunk/LayoutTests/svg/custom/use-move-to-offset.svg	2011-07-24 13:57:24 UTC (rev 91644)
@@ -0,0 +1,22 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" _onload_="runTest()">
+  <defs>
+    <rect id="r1" width="100" height="100" fill="green"/>
+  </defs>
+  <use xlink:href="" x="50" id="use1" _onclick_="reset()"/>
+  <script>
+      function runTest() {
+        if (window.layoutTestController)
+            layoutTestController.waitUntilDone();
+         eventSender.mouseMoveTo(100, 50);
+         eventSender.mouseDown();
+         eventSender.mouseUp();
+      }
+      function reset() {
+        var u = document.querySelector('#use1');
+        u.setAttribute('x', 0);
+        u.setAttribute('y', 0);
+        if (window.layoutTestController)
+            layoutTestController.notifyDone();
+      }
+  </script>
+</svg>

Modified: trunk/Source/WebCore/ChangeLog (91643 => 91644)


--- trunk/Source/WebCore/ChangeLog	2011-07-24 10:07:26 UTC (rev 91643)
+++ trunk/Source/WebCore/ChangeLog	2011-07-24 13:57:24 UTC (rev 91644)
@@ -1,3 +1,23 @@
+2011-07-24  Rob Buis  <[email protected]>
+
+        SVG <use> element is not repositioned when moved to x=0 y=0 through script 
+        https://bugs.webkit.org/show_bug.cgi?id=53767
+
+        Reviewed by Nikolas Zimmermann.
+
+        Only bail out on zero offset if it is not explicitly set.
+
+        Test: svg/custom/use-move-to-offset.svg
+
+        * rendering/svg/RenderSVGTransformableContainer.cpp:
+        (WebCore::RenderSVGTransformableContainer::calculateLocalTransform):
+        * rendering/svg/SVGShadowTreeElements.cpp:
+        (WebCore::SVGShadowTreeContainerElement::SVGShadowTreeContainerElement):
+        (WebCore::SVGShadowTreeContainerElement::setContainerOffset):
+        * rendering/svg/SVGShadowTreeElements.h:
+        (WebCore::SVGShadowTreeContainerElement::containerOffsetChanged):
+        (WebCore::SVGShadowTreeContainerElement::setContainerOffsetChanged):
+
 2011-07-24  Jeffrey Pfau  <[email protected]>
 
         Refactor HTML tokenizer code in preparation for a new XML tokenizer

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGTransformableContainer.cpp (91643 => 91644)


--- trunk/Source/WebCore/rendering/svg/RenderSVGTransformableContainer.cpp	2011-07-24 10:07:26 UTC (rev 91643)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGTransformableContainer.cpp	2011-07-24 13:57:24 UTC (rev 91644)
@@ -49,8 +49,9 @@
     if (!element->hasTagName(SVGNames::gTag) || !static_cast<SVGGElement*>(element)->isShadowTreeContainerElement())
         return needsUpdate;
 
-    FloatSize translation = static_cast<SVGShadowTreeContainerElement*>(element)->containerTranslation();
-    if (!translation.width() && !translation.height())
+    SVGShadowTreeContainerElement* shadowElement = static_cast<SVGShadowTreeContainerElement*>(element);
+    FloatSize translation = shadowElement->containerTranslation();
+    if (!shadowElement->containerOffsetChanged() && !translation.width() && !translation.height())
         return needsUpdate;
 
     // FIXME: Could optimize this case for use to avoid refetching the animatedLocalTransform() here, if only the containerTranslation() changed.
@@ -58,6 +59,7 @@
         m_localTransform = element->animatedLocalTransform();
 
     m_localTransform.translate(translation.width(), translation.height());
+    shadowElement->setContainerOffsetChanged(false);
     return true;
 }
 

Modified: trunk/Source/WebCore/rendering/svg/SVGShadowTreeElements.cpp (91643 => 91644)


--- trunk/Source/WebCore/rendering/svg/SVGShadowTreeElements.cpp	2011-07-24 10:07:26 UTC (rev 91643)
+++ trunk/Source/WebCore/rendering/svg/SVGShadowTreeElements.cpp	2011-07-24 13:57:24 UTC (rev 91644)
@@ -34,6 +34,7 @@
 
 SVGShadowTreeContainerElement::SVGShadowTreeContainerElement(Document* document)
     : SVGGElement(SVGNames::gTag, document)
+    , m_containerOffsetChanged(false)
 {
 }
 
@@ -42,6 +43,13 @@
     return adoptRef(new SVGShadowTreeContainerElement(document));
 }
 
+void SVGShadowTreeContainerElement::setContainerOffset(const SVGLength& x, const SVGLength& y)
+{
+    m_containerOffsetChanged = true;
+    m_xOffset = x;
+    m_yOffset = y;
+}
+
 FloatSize SVGShadowTreeContainerElement::containerTranslation() const
 {
     return FloatSize(m_xOffset.value(this), m_yOffset.value(this));

Modified: trunk/Source/WebCore/rendering/svg/SVGShadowTreeElements.h (91643 => 91644)


--- trunk/Source/WebCore/rendering/svg/SVGShadowTreeElements.h	2011-07-24 10:07:26 UTC (rev 91643)
+++ trunk/Source/WebCore/rendering/svg/SVGShadowTreeElements.h	2011-07-24 13:57:24 UTC (rev 91644)
@@ -34,12 +34,11 @@
     static PassRefPtr<SVGShadowTreeContainerElement> create(Document*);
 
     FloatSize containerTranslation() const;
-    void setContainerOffset(const SVGLength& x, const SVGLength& y)
-    {
-        m_xOffset = x;
-        m_yOffset = y;
-    }
+    void setContainerOffset(const SVGLength& x, const SVGLength& y);
 
+    bool containerOffsetChanged() const { return m_containerOffsetChanged; }
+    void setContainerOffsetChanged(bool containerOffsetChanged) { m_containerOffsetChanged = containerOffsetChanged; }
+
 protected:
     SVGShadowTreeContainerElement(Document*);
 
@@ -49,6 +48,7 @@
 
     SVGLength m_xOffset;
     SVGLength m_yOffset;
+    bool m_containerOffsetChanged;
 };
 
 class SVGShadowTreeRootElement : public SVGShadowTreeContainerElement {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to