Title: [117056] trunk
Revision
117056
Author
[email protected]
Date
2012-05-15 05:56:35 -0700 (Tue, 15 May 2012)

Log Message

Mask deformations when masked content is rotated
https://bugs.webkit.org/show_bug.cgi?id=76527

Reviewed by Nikolas Zimmermann.

Source/WebCore:

Test: svg/repaint/mask-clip-target-transform.svg

RenderSVGResource::markForLayoutAndParentResourceInvalidation() needs to also
invalidate parent mask and clip resources, not just filters.

* rendering/svg/RenderSVGResource.cpp:
(WebCore::removeFromCacheAndInvalidateDependencies):
(WebCore::RenderSVGResource::markForLayoutAndParentResourceInvalidation):

LayoutTests:

* platform/chromium-linux/svg/repaint/mask-clip-target-transform-expected.png: Added.
* platform/chromium/test_expectations.txt:
* platform/mac/test_expectations.txt:
* svg/repaint/mask-clip-target-transform-expected.txt: Added.
* svg/repaint/mask-clip-target-transform.svg: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (117055 => 117056)


--- trunk/LayoutTests/ChangeLog	2012-05-15 12:50:02 UTC (rev 117055)
+++ trunk/LayoutTests/ChangeLog	2012-05-15 12:56:35 UTC (rev 117056)
@@ -1,3 +1,16 @@
+2012-05-15  Florin Malita  <[email protected]>
+
+        Mask deformations when masked content is rotated
+        https://bugs.webkit.org/show_bug.cgi?id=76527
+
+        Reviewed by Nikolas Zimmermann.
+
+        * platform/chromium-linux/svg/repaint/mask-clip-target-transform-expected.png: Added.
+        * platform/chromium/test_expectations.txt:
+        * platform/mac/test_expectations.txt:
+        * svg/repaint/mask-clip-target-transform-expected.txt: Added.
+        * svg/repaint/mask-clip-target-transform.svg: Added.
+
 2012-05-15  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r117052.

Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (117055 => 117056)


--- trunk/LayoutTests/platform/chromium/test_expectations.txt	2012-05-15 12:50:02 UTC (rev 117055)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt	2012-05-15 12:56:35 UTC (rev 117056)
@@ -1218,6 +1218,9 @@
 BUGWK81217 : svg/carto.net/tabgroup.svg = PASS FAIL
 BUGWK81217 : svg/hixie/perf/003.xml = PASS FAIL
 
+// Needs rebaselining after landing 76527
+BUGWK76527 WIN MAC : svg/repaint/mask-clip-target-transform.svg = IMAGE+TEXT IMAGE TEXT PASS
+
 BUGWK81240 MAC : svg/text/bidi-reorder-value-lists.svg = PASS IMAGE+TEXT
 
 BUGWK81243 : svg/repaint/repainting-after-animation-element-removal.svg = PASS IMAGE

Added: trunk/LayoutTests/platform/chromium-linux/svg/repaint/mask-clip-target-transform-expected.png (0 => 117056)


--- trunk/LayoutTests/platform/chromium-linux/svg/repaint/mask-clip-target-transform-expected.png	                        (rev 0)
+++ trunk/LayoutTests/platform/chromium-linux/svg/repaint/mask-clip-target-transform-expected.png	2012-05-15 12:56:35 UTC (rev 117056)
@@ -0,0 +1,37 @@
+\x89PNG
+
+
+IHDR X')tEXtchecksumf50102403b090a7eac6782fca184a35a\xF7|\xD1\xD6\x94IDATx\x9C\xED\xDDO\x88\xDC\xF5\xFD\xC7\xF1o~T\xBA+\xD2\xCC\xFC\xF0\x83\x87X%\xA5!6\xBD\xAA;Y\x83VݤBVz\x88!\xC4K\xA0\xCDB\x82
+m\xCD,V0춐\x8B\xCAjBԬZA\x90tgKo\x9BM,m*\xE6 &q&\xDC)\xE6w\xEB/F\x93\xDD\xC4w\xE6\xF3\xFD~\xE7\xF18\x85\x92=<\xF9\xCEg\xBE\xBB\xA4\xDDng@:###\xA9'\xECR(\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@\xB0\xEF\xA4@Q\xCD\xCDL6g\xEBsS\xE7\xFF}~n\xFE\x83\xCEo\x9E\xE8\xFFW\xA3\xAF\xFD埩\xB6\x96\xAC\x99\xFF^\xE7\xD7\xFD\xB7,\xFD\xEE\xD2\xDA\xC0p\xA5z\xD3\xC0\xE0\xA6\x8B\xA0[\x96\xB4\xDB\xED\x85\xFFdY\x96e\xF5\xA9\xF1\xFA\xDC\xD4_\xCF\xFF\xA3\xDEw\xEE\xBAR\xD5֒Zkُ\x96\xAE\xAC
+׆w.,\xA2\x91\x91\x91\xD4&\xB0X\xD8ԡ\xDDo\x9C|e\xEA\xBA\xF7\xBFMT]J\xB5\xB5d\xF8\xF3[\xBA\xFD\x91\xE1\xCDO\x87\xFF\xE5\x85 \xB0\xCAG`qIs3\x93\xBF\xF3Wר\xAB\xBE\xAESZ?{\xF0\xA9^\xFBQ`\x94\x8F\xC0\xE2ԧ\xC6\xF7\xD7\xF7MW\x9BI\xFE\xF5u\x8Dʓ\xB5=\xBD\xF3ѡ\xC0(\xDF"\xE4+\xEAS\xE3C;\xAA\xEBN\x8C\xA6\xAA\xAB,˦\xAB\xCDu'F\x87vT\xEBS\xE3\xA96\xC0\xB7!\xB0\xF8™S\xEFn]\x9E6\xAD.\xD4ɬ\x8D\xA3\xCBϜz7\xF5\xB82\x8B,˲}\xFB\x86\xEEx\xF9\x9E#\x95\xB3\xA9\x87\\xECH\xE5\xEC/߳o\xDFP\xEA!pV\xAF\x9B\x9B\x99\xBCs\xF4\xFA\xBD\xD9twn\xB2_\x85F_{o6}\xE7\xE8\xF5s3\x93\xA9\xB7\xC0\xA2\xAC\x9Ev\xE8\xE0\xE3Co?:[\x99O=da\xB3\x95\xF9\xA1\xB7=t\xF0\xF1\xD4C`a\xABG5Νٺk\xE5c?\x9F\xDBW_\xD7\xE8k?\xF6\xF1\xF3[w\xADl\x9C;\x93z\\x8E\xC0\xEAE\x8Dsg\xD6?\xB3j\xE2\x86ө\x87\\x8D\x89N\xAFf\x95\xC6 \xCFVϙ\x9B\x99\\xFF̪B|,x)\xB3\x95\xF9\xF5Ϭr%\x80\xDCX\xBDenf\xB2(\x97\xAE.\xAFs%Kc\x90O\xAB\x87t\xEA\xAA@\x97\xAE.\xAF\xD1\xD7\xD6X\xE4\x93\xC0\xEA%\xAB\xAB\x8D@>	\xAC\x9EPʺ\xEA\xD0X\xE4\x90\xC0*\xBFƹ3[\xA7\xB6\x94\xB2\xAE:}\xED\xADS[|\xAF\x80\xFCX%\xD7y#C	n\xB5_^\xE7{\x85\x80\x9CX%\xB7\xF3\xC0}\xA5\xAF\xAB\x8E\xD9\xCA\xFC\xCE\xF7\xA5^Y&\xB0\xCA\xED\xD0\xC1\xC7\xFA6ѫ3q\xC3i?K\x80<X\xA55739\xFA\xE1\xA9Wt\xDB\xE8\x87/\xB8\xF0@r\xAB\xB4\xCA}\xB1\xFDR:\xDES\xAF\xA0\xD7	\xACrڿ\xFF\xDE\xB9z\xF5u\xB3\x95\xF9\xFD\xFB\xEFM\xBD\x80\x9E&\xB0J胓\xC7\xC6\xE7\xA7S\xAFHi|~\xFA\x83\x93\xC7R\xAF\xA0w	\xAC\xDA51҃^\xA8\xD1\xD7\xDE51\x92z\xBDK`\x95M}j\xFC\xD5\xCAG\xA9W\xA4\xF7j\xE5\xA3\xFA\xD4x\xEA\xF4(\x81U6O\xD5\x{1E7790}\x8E\x80TV\xA9ԧƏV\xA9W\xE4\xC5\xD1j\xC3C,\x92X\xA5\xE2\x99\xCDEI\xAC\xF28^?\xEC\xF1\xD5E\x8EV\xC7\xEB\x87S\xAF\xA0\xE7\xAC\xF28\xF8֞\xD4\xF2ȱ\xD0}\xAB<^\xFBN\xFD\xD8\xC1\xC5s,t\x9F\xC0*\x89\xA9C\xBB{\xFC\xDDW\x97\xD2\xE8kOڝz\xBDE`\x95\xC4N\xBD\x96zB~9\xBAL`\x95\x84\xC2.\xC3\xE1\xD0e\xAB\xA6\x8F\x8C\xF9|\xF02}\xED\xE9#c\xA9W\xD0CV\xBC{\xF2\xAD\xD4\xF2\xEE\xE4?\xFF\x9Cz=D`\x95\xC1\x89\xC6\xDFROȻ?}\xF4\x97\xD4\xE8!\xAB\xFE\xD8w6\xF5\x84\xBCsDt\x93\xC0*\xBC\xE3\xF5\xC3.`-\xA8\xD1\xD7\xF6Jw\xBAF`^\xB3\xE1\xD9̢8(\xBAF`\x9E\xEE\x8B\xE4\x9E;]#\xB0\xE8\xE7盩'\xD0+V\xE1\xCD|2\x9BzB18(\xBAF`X\xC1V\xE1\xCD\xF6\xBBZ\xB4(
+\x80\xAEX\x85\xE7%X\x8B\xE4\xA0\xE8\x81L`X\xC1V\xE1UZ\xA9\x84\x83\xA0kV\xE1\xDD9_M=\xA1]#\xB0\x82	,\x80`\xAB\xF0\xAE\xFF~\xEA	\xC5\xE0\xA0\xE8\x81UxK\xFB*\xA9'\x83\x83\xA0kV\xE1\xDDu\xFB\xA9'\x83\x83\xA0kV\xE1U\xAA7\xA5\x9EP
+\x80\xAEX\x85\xB7\xB66\xE2
+O\xAA\xB4\xB2\xB5\xB5\x91\xD4+\xE8\xAB\xEEm-O=!\xEF\xDD$\xB0\xCA`M\xF5\x87\xA9'\xE4\x9D#\xA0\x9BV\xB8\xBE\xBD G@7	\xAC2X\xB7a\xD45\xAC˨\xB4\xB2uFS\xAF\xA0\x87\xAC\x92\xF8\xC9V\xA6\x9E\x90_\x80.X%\xF1\xE3\xD5SO\xC8/\x87@\x97-i\xB7۩7\xA3\xBA{I\xB3/\xF5\x88\xFC\xA9\xB4\xB2\xC6ӹ\xFE\x9F|d\xC4\xFB#\xCA\xC6\xAC\xF2\xF0A\xD87r,t\x9F\xC0*\x8F\xED\xECK=!\x8F\xDD'\xB0\xCAcmmd\xA8YM\xBD"_\x86\x9AU/p\xA0\xFBV\xA9\xFCz\xF0\xC9\xD4\xF2Ł\x90\x84\xC0*\x95\xDA\xF0\xB1\xBE4Ԭֆw\xA4^@/Xe\xE3\x99͗\xA9\xAC\xB2\xA9
+\xEF\xD8x\xDE6\xCE6\x9E_\xEE\xF1\xA9\xACzv\xCB\xE1\xFF\xC99\x95V\xF6\xEC\x96éWлV	\xDDr\xFBݣ\xFDC\xA9W\xA44\xDA?t\xCB\xEDw\xA7^@\xEF\xF2&\xF7Һc\xF4\xFA\xE3\x95\xF9\xD4+X\xDB\xEC\x9F\xFB,\xF5\x8A+\xE0M\xEE\xE5\xE3	ViM\xBF؃VZ\xD9\xC4\xF0\x8B\xA9W\xD0\xEBVi
+n\xBFy[\xEA\xDD6~\xF3\xB6\x81\xC1M\xA9W\xD0\xEBV\x99m\xDE\xFEܖOoK\xBD\xA2{\xB6|z\xDB\xE6\xEDϥ^\xAB\xEC\xEC|gm\xB3?\xF5\x8AnX\xDB\xEC?\xB0\xF3\x9D\xD4+ \xCBV\xE9U\x97\xAD8\xFA\xC4{\xA5o\xAC\xB5\xCD\xFE\xA3O\xBCW]\xB6"\xF5\xC82\x81\xD5\xAA\xCBV\x94\xFB\xC2{\xE7b\xBB\xBA ?VO\xDC4}9\xDF>Zie\xD3\xF7v\xB1\x80\X\xBD\xA2\x94\x8D\xA5\xAE\xC8'\x81\xD5CJ\xD6X\xEA
+\x80\xDCX\xBD\xA5\xD3X%\xB8\xF3\xBE\xB6ٯ\xAE\xC8-\x81\xD5s7\xFD{\x85\x9D\xEF\xAA+rK`\xF5\xA2λ
+\xFA\xD2-\x9F\xDE\xE6\x8D\xE4\x9C\xC0\xEAQ\xD5e+&\x9E=\xFDҍ\xDB
+t%\xAB\xD2\xCA^\xBAq\xDBij\xA7\xD59'\xB0z\xDA\xE6\xED\xCF\xE5JV\xE7ҕ\x9F\x84@!\xAC^70\xB8iv\xEC\xB3=\xED\xC1\xDC>ʪ\xB4\xB2=\xED\xC1ٱ\xCF\\xBA\xA0(Y\x96e{\xF7֏\xFF\xF4\xD8psY\xEA!n.;\xFE\xD3c{\xF7\xD6S\x80+ \xB0\xF8Š\xD5w;;\xBDf\xAC\xD6X\x9AzK\x96eY\xAD\xB1tz\xCDؑ\xB1\xB3+Vߕz\\x81\xC5WԆwL\x8F7\xD3fV'\xAD\xA6Ǜ\xB5\xE1\xA96\xC0\xB7\xB1\xA4\xDDn\xA7\xDE@N\xCD\xCDL\xFE\xEE\xCD_N]\xF7~\xB3\xAF\xFF\\xA5\x95
+~\xEB\xCF\xFCM\xAFݵI=\x80`\x8B\x85y\xE9o\x9Cz\xE5\x95V\xA7\xABZ\xFDȆ\xC7~\xFF\xB7\x81\xC0(\x81\xC5\x98>26s\xE2\xF5\xE7\xFF^\xEF;\xF7mb\xAB\xD2\xCAj\xADek\x96\xFE`p\xCD\xC3\xEB6\x8C\xC6
+,$\x81P>\x8B\xAB473\xD9\xF8䣙\xAFgYVo\xCEu~\xF3D\xFF\xF9ë\xD2\xCA\xD6\xCCq\x97\xABVȲlp\xCD\xC3\xD5\xFF]\xDEk^\x9E\xC0(\x81\xF5s3\x93\xCD\xC6\xD9\xFA\xDC\xD4\xF9\x9F\x9F\x9B\xFF\xA0\xF3\x9B'\xFA\xFF\xD5\xE8\xFB\xFFS\xAA\xB6\x96\xAC\x99\xFF^\xE7\xD7\xFD\xB7,\xFD\xEE\xD2\xDA\xC0p\xA5z\x93h\xE0\xEA,\x80\xF2XY}j\xBC>7\xF5\xD7\xF3\xFF\xA8\xF7\x9D\xBB0\xA4\xAET\xB5\xB5\xA4\xD6Z\xF6\xA3\xA5+kþ\xFE\xC6\xE2	,\x80\xF2\xE9\xDD\xC0\x9A:\xB4\xFB\x8D\x93\xAFL]\xF7\xFE\xB7\x89\xAAK\xA9\xB6\x96~\xEBC\xB7?2\xBC\xF9\xE9𿜒X\xE5\xD3s\x81573\xF9\xFB7u\x8D\xBA\xEA\xEB:\xA5\xF5\xB3\x9F\xF2"\x97"\xB0ʧ\x87\xAB>5\xBE\xBF\xBEo\xBA\xDAL\xF2\xAF\xAFkT\x9E\xAC\xED\xF1\xD1!_'\xB0ʧ'\xDE\xE4^\x9F\xDAQ]wb4U]eY6]m\xAE;1:\xB4\xA3Z\x9FO\xB5莒֙S\xEFn]\x9E6\xAD.\xD4ɬ\x8D\xA3\xCBϜz7\xF5\xE0Z)s`\xED\xDB7t\xC7\xCB\xF7\xA9\x9CM=\xE4bG*g\xEFx\xF9\x9E}\xFB\x86R\xAE\x89r\xD6\xDC\xCC䝣\xD7\xEFͦ\xBBs\x93\xFD*4\xFA\xDA{\xB3\xE9;G\xAF\x9F\x9B\x99L\xBDV\xC2\xC0:t\xF0\xF1\xA1\xB7\x9D\xAḐ\xB2\xB0\xD9\xCA\xFC\xD0ۏ:\xF8x\xEA!@\xA4RV\xE3ܙ\xAD\xBBV>\xF6\xF1\xF3\xB9}p\xF5u\x8D\xBE\xF6c?\xBFu\xD7\xCAƹ3\xA9\xB71\xCAX\x8Dsg\xD6?\xB3j\xE2\x86ө\x87\\x8D\x89N\xAFf\x95\xC6\x80r(I`\xCD\xCDL\xAEfU!>\xBC\x94\xD9\xCA\xFC\xFAgV\xB9\x92%P\x86\xC0\x9A\x9B\x99,ʥ\xAB\xCB\xEB\\xC9\xD2XPt\x85\xACN]\xE8\xD2\xD5\xE55\xFA\xDA\x8A\xAE؁U\xB2\xBA\xEA\xD0XPt\xACR\xD6U\x87\xC6\x80B+j`5Ν\xD9:\xB5\xA5\x94u\xD5\xD1\xE8ko\x9D\xDA\xE2{\x85PD\x85\xAC\xCEJp\xAB\xFD\xF2:\xDF+\xD4XP8\x85\xAC\x9D\xEE+}]u\xCCV\xE6w\xB8/\xF5
+\xE0\xCA/\xB0|\xBC\xA0o\xBD:7\x9C\xF6\xB3t\xA0X
+Xs3\x93\xA3\xBE\x90zE\xB7\x8D~\xF8\x82\xEFP \xACr_l\xBF\x94΅\xF7\xD4+\x80\xC5*R`\xED\xDFo\x8F\\xBD\xFA\xBA\xD9\xCA\xFC\xFE\xFD\xF7\xA6^,Ja냓\xC7\xC6\xE7\xA7S\xAFHi|~\xFA\x83\x93\xC7R\xAFV\x98\xC0\xDA51҃^\xA8\xD1\xD7\xDE51\x92z\xB0\xB0bV}j\xFC\xD5\xCAG\xA9W\xA4\xF7j\xE5\xA3\xFA\xD4x\xEA\xC0\x8AXO\xD5\x{1E7790}\x8E\xF2\xAF\x81U\x9F?Zm\xA4^\x91G\xAB
+\xB1 \xE7
+X\x9E\xD9\ā@\xCE\xE5=\xB0\x8E\xD7{|u\x91\xA3\xD5\xC6\xF1\xFA\xE1\xD4+\x80K\xCA{`|kO\xEA	y\xE4X \xCF\xF2X\xAF}\xA7\x87~\xEC\xE0\xE29ȳ\\xD6ԡ\xDD=\xFE\xEE\xABKi\xF4\xB5\xA7\xEDN\xBD\xF8f\xB9\xAC?\x9Cz-\xF5\x84\xFCr8\x90[\xB9,\x84]\x86\xC3\x80\xDC\xCAo`M\xF3\xF9\xE0e4\xFA\xDA\xD3G\xC6R\xAF\xBEA~\xEBݓo\xA5\x9E\x90w'\xFF\xF9\xE7\xD4\x80o\x90\xDF\xC0:\xD1\xF8[\xEA	y\xF7\xA7\x8F\xFE\x92z\xF0
+\xF2X\xEC;\x9BzB\xDE9"ȧ\x9C\xD6\xF1\xFAa\xB0\xD4\xE8k{\xA5;\xE4PN\xAB\xD9\xF0lfQ\xE4PN\xCB
+\xF7Er\xCFr(\xA7\x81\xC5"\x9D\x9Fo\xA6\x9E\,\xA7\x815\xF3\xC9l\xEA	\xC5\xE0\xA0 \x87rX\xC5%\xB0\x82\xE54\xB0f\xFB]-Z9\x94\xD3\xC0\xF2\xACErP\x90C9
+,\x80\xE2X\xC1@\xB0\x9CV\xA5\x95zAA8(ȡ\x9C֝\xF3\xD5\xD4\x8A\xC1A@\xE54\xB0\x8AK`\xCBi`
+\\xFF\xFD\xD4\x8A\xC1A@\xE54\xB0\x96\xF6URO(9\x94\xD3\xC0\xBA\xEB\xF6RO(9\x94\xD3\xC0\xAAToJ=\xA1\xE4PNkmm\xC4\x9ETiekk#\xA9W\xCBi`eYvoky\xEA	y\xE7\x88 \x9F\xF2Xk\xAA?L=!\xEF\xE4S~\xCB\xF5\xED9"ȧ\xFCֺ
+\xA3\xAEa]F\xA5\x95\xAD\xDB0\x9Az\xF0
+\xF2XY\x96\xFD\xE4?+SO\xC8/\x87\xB9\x95\xEB\xC0\xFA\xF1ꍩ'\xE4\x97\xC3\x80\xDCZ\xD2n\xB7So\xB8\x9C\xEA\xEE%;\xD4#\xF2\xA7\xD2\xCAO\xE7\xFA?\x8B72\xE2]e\x93\xEB'X\x99\xC2.\xC1\xB1@\x9E\xE5=\xB0\xB6?\xB0/\xF5\x84<r,\x90gy\xAC\xB5\xB5\x91\xA1f5\xF5\x8A|jV\xBD\xC0\xF2,eٯ\x9FL=!_\xE4\\xAB6\xBC\xC3C\xAC/
+5\xAB\xB5\xE1\xA9W\x97S\x80\xC0\xCA<\xB3\xB9\x80\xA3\x80\xFC+F`Նwl<\xEFg\xCF/\xF7\xF8
+\xF2\xAF\x81\x95eٳ[\xF7\xF8OΩ\xB4\xB2g\xB7N\xBDXXa\xEB\x96\xDB\xEF\xEDJ\xBD"\xA5\xD1\xFE\xA1[n\xBF;\xF5
+`ay\x93\xFBE\xEE\xBD\xFExe>\xF5\x8A\xD66\xFBg\xC7>K\xBD\x82k›\xDCʧ0O\xB0:&\x86_\xEC\xC1
++\xADlb\xF8\xC5\xD4+\x80\xC5*X`
+n\xBFy[\xEA\xDD6~\xF3\xB6\x81\xC1M\xA9W\x8BU\xB0\xC0ʲl\xF3\xF6\xE7\xB6|z[\xEAݳ\xE5\xD3\xDB6o.\xF5
+\xE0
+/\xB0\xB2,;\xB0\xF3\x9D\xB5\xCD\xFE\xD4+\xBAam\xB3\xFF\xC0\xCEwR\xAF\xAEL!\xAB\xBAl\xC5\xD1'\xDE+}c\xADm\xF6}\xE2\xBD\xEA\xB2\xA9\x87W\xA6\x90\x81\x95eYuيr_x\xEF\lWWPDE
+\xAC,\xCB7M\xDF_η\x8FVZ\xD9\xF4\xFD\x87]l\x80\x82*p`e%m,uEW\xEC\xC0\xCAJ\xD7X\xEA
+J\xA0\xF0\x81\x95\xFD\xB7\xB1Jp\xE7}m\xB3_]@	\x94!\xB0\xB2,\xDCT\xF4\xEFv\xBE3\xA8\xAE\xA0JX\xD9\xDF\xDDP\xD0w\x90n\xF9\xF46od\x80\xD2(O`e\x9Dw7<{\xFA\xA5\xB7\xE8JV\xA5\x95\xBDt㶉gO\xAB+(\x8DRV\xC7\xE6\xED\xCF\xE5JV\xE7ҕ\x9F\x84%S\xC2\xC0ʲl`p\xD3\xEC\xD8g{ڃ\xB9}\x94Uie{ڃ\xB3c\x9F\xB9t\xE5S\xCE\xC0\xEAػ\xB7~\xFC\xA7dž\x9B\xCBR\xB9\xD8ps\xD9\xF1\x9Fۻ\xB7\x9EzpM\x949\xB0\xB2,[\xB1\xFA\xAE#cg\xA7׌\xD5KSoɲ,\xAB5\x96N\xAF;2vv\xC5\xEA\xBBRo\xAE\x95\x92VGmx\xC7\xF4x3mfu\xD2jz\xBCYޑj\xD0K\xDA\xEDv\xEA
+]573\xF9\xBB79u\xDD\xFB;n\xFCs\x95V6\xFC\xF9\xAD?\xF07\xEEZq)###\xA9'\xAC\xE7\xEBKG^\xFA\xC5\xA7^\xB9F\xA5\xD5骇V?\xB2\xE1\xB1\xDF\xC6\xFF픋\xC0(\x9F\xDE
+\xAC/M\x9B9\xF1\xFA\x89\xF3\xAF\xF7\x9D\xFB6\xB1Uie\xB5ֲ5K0\xB8\xE6\xE1uF\xE3Rr\xA0|\xD6W\xCC\xCDL6>\xF9h\xE6\xC4\xEBY\x96՛s\x9D\xDF<\xD1\xFE\xC2𪴲5\xF3_\xDC\xE5\xAAU\xB2,\\xF3p\xF5\x97\xFB\x90\xAB#\xB0\xCAG`Ab\xA0|z\xE2[\x84\xDD$\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0&\xB0\x82	,\x80` \x98\xC0\xB6dӦM\xA97\x94\x8A'X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81L`X\xC1@0\x81\xEC\xFF5Teҹ\xE14\xB4IEND\xAEB`\x82
\ No newline at end of file

Modified: trunk/LayoutTests/platform/mac/test_expectations.txt (117055 => 117056)


--- trunk/LayoutTests/platform/mac/test_expectations.txt	2012-05-15 12:50:02 UTC (rev 117055)
+++ trunk/LayoutTests/platform/mac/test_expectations.txt	2012-05-15 12:56:35 UTC (rev 117056)
@@ -207,6 +207,9 @@
 BUGWK85990 : media/video-controls-rendering-toggle-display-none.html = TEXT
 BUGWK85990 : media/video-controls-toggling.html = TIMEOUT TEXT
 
+// Requires rebaseline after bug 76527
+BUGWK76527 : svg/repaint/mask-clip-target-transform.svg = IMAGE+TEXT IMAGE TEXT PASS
+
 BUGWK85308 : ietestcenter/css3/valuesandunits/units-000.htm = IMAGE
 BUGWK85310 : ietestcenter/css3/valuesandunits/units-010.htm = IMAGE
 

Added: trunk/LayoutTests/svg/repaint/mask-clip-target-transform-expected.txt (0 => 117056)


--- trunk/LayoutTests/svg/repaint/mask-clip-target-transform-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/repaint/mask-clip-target-transform-expected.txt	2012-05-15 12:56:35 UTC (rev 117056)
@@ -0,0 +1,18 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (50,50) size 200x200
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
+        RenderSVGEllipse {circle} at (150,50) size 100x100 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=100.00] [cy=0.00] [r=50.00]
+      RenderSVGResourceClipper {clipPath} [id="clip"] [clipPathUnits=userSpaceOnUse]
+        RenderSVGEllipse {circle} at (50,150) size 100x100 [fill={[type=SOLID] [color=#000000]}] [cx=0.00] [cy=100.00] [r=50.00]
+        RenderSVGEllipse {circle} at (0,0) size 0x0 [fill={[type=SOLID] [color=#000000]}] [cx=0.00] [cy=0.00] [r=0.00]
+    RenderSVGEllipse {circle} at (150,50) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [cx=100.00] [cy=0.00] [r=50.00]
+    RenderSVGContainer {g} at (150,50) size 100x100
+      [masker="mask"] RenderSVGResourceMasker {mask} at (50,-50) size 100x100
+      RenderSVGRect {rect} at (100,0) size 200x300 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(0.00,0.00)}] [fill={[type=SOLID] [color=#008000]}] [x=-200.00] [y=-200.00] [width=400.00] [height=200.00]
+    RenderSVGEllipse {circle} at (50,150) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [cx=0.00] [cy=100.00] [r=50.00]
+    RenderSVGContainer {g} at (50,150) size 100x100
+      [clipPath="clip"] RenderSVGResourceClipper {clipPath} at (-50,50) size 100x100
+      RenderSVGRect {rect} at (0,100) size 300x200 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(0.00,0.00)}] [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=-200.00] [width=200.00] [height=400.00]

Added: trunk/LayoutTests/svg/repaint/mask-clip-target-transform.svg (0 => 117056)


--- trunk/LayoutTests/svg/repaint/mask-clip-target-transform.svg	                        (rev 0)
+++ trunk/LayoutTests/svg/repaint/mask-clip-target-transform.svg	2012-05-15 12:56:35 UTC (rev 117056)
@@ -0,0 +1,40 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-100 -100 800 600" _onload_="runRepaintTest();">
+  <!--
+    Test for https://bugs.webkit.org/show_bug.cgi?id=76527.
+    Only two green circles should be visible.
+  -->
+  <script xlink:href="" type="text/_javascript_"></script>
+  <defs>
+    <mask id="mask">
+      <circle cx="100" r="50" fill="white"/>
+    </mask>
+
+    <clipPath id="clip">
+      <circle cy="100" r="50"/>
+      <!--Two clip shapes are needed to avoid triggering pathOnlyClipping -->
+      <circle cx="0" cy="0" r="0"/>
+    </clipPath>
+  </defs>
+
+  <circle cx="100" r="50" fill="red"/>
+  <g mask="url(#mask)">
+    <rect id="masker" x="-200" y="-200" width="400" height="200" fill="green"/>
+  </g>
+
+  <circle cy="100" r="50" fill="red"/>
+  <g clip-path="url(#clip)">
+    <rect id="clipper" x="0" y="-200" width="200" height="400" fill="green"/>
+  </g>
+
+  <script>
+      function rotate(target, angle) {
+        document.getElementById(target).setAttribute('transform', 'rotate(' + angle + ')');
+      }
+
+      function repaintTest() {
+        rotate("masker", 90);
+        rotate("clipper", 90);
+      }
+  </script>
+</svg>
+

Modified: trunk/Source/WebCore/ChangeLog (117055 => 117056)


--- trunk/Source/WebCore/ChangeLog	2012-05-15 12:50:02 UTC (rev 117055)
+++ trunk/Source/WebCore/ChangeLog	2012-05-15 12:56:35 UTC (rev 117056)
@@ -1,3 +1,19 @@
+2012-05-15  Florin Malita  <[email protected]>
+
+        Mask deformations when masked content is rotated
+        https://bugs.webkit.org/show_bug.cgi?id=76527
+
+        Reviewed by Nikolas Zimmermann.
+
+        Test: svg/repaint/mask-clip-target-transform.svg
+
+        RenderSVGResource::markForLayoutAndParentResourceInvalidation() needs to also
+        invalidate parent mask and clip resources, not just filters.
+
+        * rendering/svg/RenderSVGResource.cpp:
+        (WebCore::removeFromCacheAndInvalidateDependencies):
+        (WebCore::RenderSVGResource::markForLayoutAndParentResourceInvalidation):
+
 2012-05-15  Pavel Feldman  <[email protected]>
 
         Web Inspector: merge show navigator with pin navigator buttons.

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResource.cpp (117055 => 117056)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResource.cpp	2012-05-15 12:50:02 UTC (rev 117055)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResource.cpp	2012-05-15 12:56:35 UTC (rev 117056)
@@ -27,8 +27,10 @@
 
 #include "Frame.h"
 #include "FrameView.h"
+#include "RenderSVGResourceClipper.h"
 #include "RenderSVGResourceContainer.h"
 #include "RenderSVGResourceFilter.h"
+#include "RenderSVGResourceMasker.h"
 #include "RenderSVGResourceSolidColor.h"
 #include "SVGResources.h"
 #include "SVGResourcesCache.h"
@@ -161,15 +163,21 @@
     return s_sharedSolidPaintingResource;
 }
 
-static inline void removeFromFilterCacheAndInvalidateDependencies(RenderObject* object, bool needsLayout)
+static inline void removeFromCacheAndInvalidateDependencies(RenderObject* object, bool needsLayout)
 {
     ASSERT(object);
+    if (SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(object)) {
 #if ENABLE(FILTERS)
-    if (SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(object)) {
         if (RenderSVGResourceFilter* filter = resources->filter())
             filter->removeClientFromCache(object);
+#endif
+        if (RenderSVGResourceMasker* masker = resources->masker())
+            masker->removeClientFromCache(object);
+
+        if (RenderSVGResourceClipper* clipper = resources->clipper())
+            clipper->removeClientFromCache(object);
     }
-#endif
+
     if (!object->node() || !object->node()->isSVGElement())
         return;
     HashSet<SVGElement*>* dependencies = object->document()->accessSVGExtensions()->setOfElementsReferencingTarget(static_cast<SVGElement*>(object->node()));
@@ -191,12 +199,12 @@
     if (needsLayout)
         object->setNeedsLayout(true);
 
-    removeFromFilterCacheAndInvalidateDependencies(object, needsLayout);
+    removeFromCacheAndInvalidateDependencies(object, needsLayout);
 
     // Invalidate resources in ancestor chain, if needed.
     RenderObject* current = object->parent();
     while (current) {
-        removeFromFilterCacheAndInvalidateDependencies(current, needsLayout);
+        removeFromCacheAndInvalidateDependencies(current, needsLayout);
 
         if (current->isSVGResourceContainer()) {
             // This will process the rest of the ancestors.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to