LayoutTests/platform/mac/transforms/svg-css-transforms-expected.png

Exception raised during decoding git binary patch:
Error running git apply --directory=/tmp
with patch:
diff --git a/PrettyPatch20260325-3086-1j92f6z.bin b/PrettyPatch20260325-3086-1j92f6z.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 0
HcmV?d00001

...
error: invalid path '/tmp/PrettyPatch20260325-3086-1j92f6z.bin'

/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:924:in `run_git_apply_on_patch'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:935:in `extract_contents_from_git_binary_literal_chunk'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:950:in `extract_contents_from_remote'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:713:in `initialize'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `new'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `block in parse'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `collect'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `parse'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:21:in `prettify'
/var/www/html/PrettyPatch/prettify.rb:30:in `<main>'

LayoutTests/platform/mac/transforms/svg-css-transforms-expected.txt

 1layer at (0,0) size 800x600
 2 RenderView at (0,0) size 800x600
 3layer at (0,0) size 800x578
 4 RenderBlock {html} at (0,0) size 800x578
 5 RenderBody {body} at (8,8) size 784x562
 6 RenderBlock {div} at (10,10) size 220x542
 7 RenderBlock {h2} at (0,19) size 220x28
 8 RenderText {#text} at (0,0) size 120x28
 9 text run at (0,0) width 120: "SVG nested"
 10 RenderBlock {h2} at (0,285) size 220x28
 11 RenderText {#text} at (0,0) size 114x28
 12 text run at (0,0) width 114: "CSS nested"
 13 RenderText {#text} at (240,0) size 4x18
 14 text run at (240,0) width 4: " "
 15 RenderBlock {div} at (254,10) size 220x542
 16 RenderBlock {h2} at (0,19) size 220x28
 17 RenderText {#text} at (0,0) size 162x28
 18 text run at (0,0) width 162: "SVG compound"
 19 RenderBlock {h2} at (0,285) size 220x28
 20 RenderText {#text} at (0,0) size 156x28
 21 text run at (0,0) width 156: "CSS compound"
 22 RenderText {#text} at (0,0) size 0x0
 23layer at (28,84) size 200x200
 24 RenderBlock (relative positioned) {div} at (10,66) size 200x200 [bgcolor=#C0C0C0] [border: (1px solid #000000)]
 25 RenderSVGRoot {svg} at (29,108) size 196x174
 26 RenderSVGContainer {g} at (29,108) size 196x174 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,25.00)}]
 27 RenderSVGPath {rect} at (103,109) size 62x62 [stroke={[type=SOLID] [color=#000000] [dash array={1.00, 1.00}]}] [x=0.00] [y=0.00] [width=60.00] [height=60.00]
 28 RenderSVGContainer {g} at (29,108) size 197x174 [transform={m=((2.00,0.00)(0.00,2.00)) t=(0.00,0.00)}]
 29 RenderSVGPath {rect} at (102,108) size 124x124 [stroke={[type=SOLID] [color=#000000] [dash array={1.00, 1.00}]}] [x=0.00] [y=0.00] [width=60.00] [height=60.00]
 30 RenderSVGPath {rect} at (29,106) size 163x178 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=0.00] [width=60.00] [height=60.00]
 31 RenderText {#text} at (0,0) size 0x0
 32layer at (28,350) size 200x200
 33 RenderBlock (relative positioned) {div} at (10,332) size 200x200 [bgcolor=#C0C0C0] [border: (1px solid #000000)]
 34layer at (29,351) size 60x60
 35 RenderBlock (positioned) {div} at (1,1) size 60x60 [border: (1px dotted #000000)]
 36layer at (30,352) size 60x60
 37 RenderBlock (positioned) {div} at (1,1) size 60x60 [border: (1px dotted #000000)]
 38layer at (31,353) size 60x60
 39 RenderBlock (positioned) {div} at (1,1) size 60x60 [border: (1px solid #0000FF)]
 40layer at (272,84) size 200x200
 41 RenderBlock (relative positioned) {div} at (10,66) size 200x200 [bgcolor=#C0C0C0] [border: (1px solid #000000)]
 42 RenderSVGRoot {svg} at (273,108) size 162x174
 43 RenderSVGPath {rect} at (273,107) size 163x176 [transform={m=((1.41,1.41)(-1.41,1.41)) t=(75.00,25.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=0.00] [width=60.00] [height=60.00]
 44 RenderText {#text} at (0,0) size 0x0
 45layer at (272,350) size 200x200
 46 RenderBlock (relative positioned) {div} at (10,332) size 200x200 [bgcolor=#C0C0C0] [border: (1px solid #000000)]
 47layer at (273,351) size 60x60
 48 RenderBlock (positioned) {div} at (1,1) size 60x60 [border: (1px solid #0000FF)]

LayoutTests/transforms/svg-css-transforms.xhtml

 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2
 3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 4<head>
 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 6 <title>Matrix testing</title>
 7 <style type="text/css" media="screen">
 8 div {
 9 -webkit-box-sizing: border-box;
 10 }
 11
 12 .column {
 13 margin: 10px;
 14 display: inline-block;
 15 vertical-align: top;
 16 }
 17 .container {
 18 position: relative;
 19 height: 200px;
 20 width: 200px;
 21 margin: 10px;
 22 background-color: silver;
 23 border: 1px solid black;
 24 }
 25
 26 .box {
 27 position: absolute;
 28 top: 0;
 29 left: 0;
 30 height: 60px;
 31 width: 60px;
 32 border: 1px dotted black;
 33 -webkit-transform-origin: top left; /* to match SVG */
 34 }
 35
 36 #group1 {
 37 -webkit-transform: translate(75px, 25px);
 38 }
 39
 40 #group2 {
 41 -webkit-transform: scale(2);
 42 }
 43
 44 #group3 {
 45 -webkit-transform: rotate(45deg);
 46 }
 47
 48 #rect1 {
 49 -webkit-transform: translate(75px, 25px) scale(2) rotate(45deg);
 50 }
 51
 52 .final {
 53 border: 1px solid blue;
 54 }
 55 </style>
 56</head>
 57
 58<body>
 59
 60 <div class="column">
 61 <h2>SVG nested</h2>
 62 <div class="container">
 63 <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
 64 viewBox="0 0 200 200" style="width:200px; height:200px;">
 65 <g id="group1" x="0" y="0" width="60" height="60">
 66 <rect x="0" y="0" width="60" height="60" stroke="black" stroke-width="1px" stroke-dasharray="1 1" fill="none" />
 67 <g id="group2" x="0" y="0" width="60" height="60" >
 68 <rect x="0" y="0" width="60" height="60" stroke="black" stroke-dasharray="1 1" stroke-width="1px" fill="none" />
 69 <rect id="group3" x="0" y="0" width="60" height="60" stroke="blue" fill="none" />
 70 </g>
 71 </g>
 72 </svg>
 73 </div>
 74
 75 <h2>CSS nested</h2>
 76 <div class="container">
 77 <div id="box1" class="box" style="-webkit-transform: translate(75px, 25px)">
 78 <div id="box2" class="box" style="-webkit-transform: scale(2)">
 79 <div id="box3" class="final box" style="-webkit-transform: rotate(45deg)">
 80 </div>
 81 </div>
 82 </div>
 83 </div>
 84 </div>
 85
 86 <div class="column">
 87 <h2>SVG compound</h2>
 88 <div class="container">
 89 <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
 90 viewBox="0 0 200 200" style="width:200px; height:200px;">
 91 <rect id="rect1" x="0" y="0" width="60" height="60" stroke="blue" fill="none">
 92 </rect>
 93 </svg>
 94 </div>
 95
 96 <h2>CSS compound</h2>
 97 <div class="container">
 98 <div class="final box" style="-webkit-transform: translate(75px, 25px) scale(2) rotate(45deg)">
 99 </div>
 100 </div>
 101 </div>
 102</body>
 103</html>

Source/WebCore/manual-tests/svg-animation-css-transform.html

 1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2 "http://www.w3.org/TR/html4/loose.dtd">
 3
 4<html lang="en">
 5<head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>SVG Animation of elements transformed using -webkit-transform</title>
 8</head>
 9<body>
 10 <h1>SVG Animation of SVG element rotated using '-webkit-transform'</h1>
 11
 12 <p>The rotated rect should from 0,0 to 100,0 over 3 seconds.</p>
 13
 14 <svg xmlns='http://www.w3.org/2000/svg'>
 15 <rect id="target" width='100' height='100' stroke="blue" fill="none" style="-webkit-transform: rotate(45deg)">
 16 <animateMotion to='100,0' dur='3s' />
 17 </rect>
 18 </svg>
 19</body>
 20</html>

Source/WebCore/manual-tests/svg-css-animate-compound.html

 1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2 "http://www.w3.org/TR/html4/loose.dtd">
 3
 4<html lang="en">
 5<head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>Animation of rotate property</title>
 8 <style type="text/css" media="screen">
 9 div {
 10 -webkit-box-sizing: border-box;
 11 }
 12
 13 .column {
 14 margin: 10px;
 15 display: inline-block;
 16 vertical-align: top;
 17 }
 18 .container {
 19 position: relative;
 20 height: 200px;
 21 width: 200px;
 22 margin: 10px;
 23 background-color: silver;
 24 border: 1px solid black;
 25 }
 26
 27 .box {
 28 position: absolute;
 29 top: 0;
 30 left: 0;
 31 height: 60px;
 32 width: 60px;
 33 border: 1px dotted black;
 34 -webkit-transform-origin: top left; /* to match SVG */
 35 }
 36
 37 .final {
 38 border: 1px solid blue;
 39 }
 40
 41 #target, #ref {
 42 -webkit-animation-name: bounce;
 43 -webkit-animation-duration: 2s;
 44 -webkit-animation-iteration-count: infinite;
 45 -webkit-animation-direction: alternate;
 46 -webkit-animation-timing-function: ease-in-out;
 47 }
 48
 49 @-webkit-keyframes bounce {
 50 from {
 51 -webkit-transform: translate(0px, 0px) scale(1) rotate(0deg);
 52 }
 53 to {
 54 -webkit-transform: translate(75px, 25px) scale(2) rotate(45deg);
 55 }
 56 }
 57 </style>
 58</head>
 59<body>
 60 <h1>CSS Animation of 'webkit-transform:' property for SVG</h1>
 61
 62 <p>The SVG animation should be identical with the CSS one</p>
 63
 64 <div class="column">
 65 <h2>SVG compound</h2>
 66 <div class="container">
 67 <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
 68 viewBox="0 0 200 200" style="width:200px; height:200px;">
 69 <rect id="target" x="0" y="0" width="60" height="60" stroke="blue" fill="none">
 70 </rect>
 71 </svg>
 72 </div>
 73
 74 <h2>CSS compound</h2>
 75 <div class="container">
 76 <div class="final box" id="ref">
 77 </div>
 78 </div>
 79 </div>
 80
 81</body>
 82</html>

Source/WebCore/manual-tests/svg-css-transition-compound.html

 1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2 "http://www.w3.org/TR/html4/loose.dtd">
 3
 4<html lang="en">
 5<head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>CSS Transition of SVG elements</title>
 8
 9 <style type="text/css" media="screen">
 10 div {
 11 -webkit-box-sizing: border-box;
 12 }
 13
 14 .column {
 15 margin: 10px;
 16 display: inline-block;
 17 vertical-align: top;
 18 }
 19 .container {
 20 position: relative;
 21 height: 200px;
 22 width: 200px;
 23 margin: 10px;
 24 background-color: silver;
 25 border: 1px solid black;
 26 }
 27
 28 .box {
 29 position: absolute;
 30 top: 0;
 31 left: 0;
 32 height: 60px;
 33 width: 60px;
 34 border: 1px dotted black;
 35 -webkit-transform-origin: top left; /* to match SVG */
 36 }
 37
 38 .final {
 39 border: 1px solid blue;
 40 }
 41
 42 #target, #ref {
 43 -webkit-transition-property: -webkit-transform;
 44 -webkit-transition-duration: 1s;
 45 }
 46 </style>
 47
 48 <script type="text/javascript" charset="utf-8">
 49
 50 var flag = true;
 51
 52 function transition() {
 53 var svgElm = document.getElementById("target");
 54 var divElm = document.getElementById("ref");
 55
 56 if (flag) {
 57 svgElm.style.webkitTransform = "translate(75px, 25px) scale(2) rotate(45deg)";
 58 divElm.style.webkitTransform = "translate(75px, 25px) scale(2) rotate(45deg)";
 59 }
 60 else {
 61 svgElm.style.webkitTransform = "translate(0px, 0px) scale(1) rotate(0deg)";
 62 divElm.style.webkitTransform = "translate(0px, 0px) scale(1) rotate(0deg)";
 63 }
 64 flag = !flag;
 65 }
 66
 67 </script>
 68</head>
 69<body>
 70 <h1>CSS Transition of "-webkit-trasform" property for SVG elements</h1>
 71
 72 <p>The element below should transition when button is clicked</p>
 73 <p>The SVG transition should be identical with the CSS one</p>
 74
 75 <input type="button" value="Transition" onclick="transition()" />
 76
 77 <div class="column">
 78 <h2>SVG compound</h2>
 79 <div class="container">
 80 <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
 81 viewBox="0 0 200 200" style="width:200px; height:200px;">
 82 <rect id="target" x="0" y="0" width="60" height="60" stroke="blue" fill="none">
 83 </rect>
 84 </svg>
 85 </div>
 86
 87 <h2>CSS compound</h2>
 88 <div class="container">
 89 <div class="final box" id="ref">
 90 </div>
 91 </div>
 92 </div>
 93
 94</body>
 95</html>

Source/WebCore/rendering/svg/RenderSVGModelObject.cpp

@@void RenderSVGModelObject::willBeDestroyed()
9090
9191void RenderSVGModelObject::styleWillChange(StyleDifference diff, const RenderStyle* newStyle)
9292{
93  if (diff == StyleDifferenceLayout)
 93 if (diff == StyleDifferenceLayout) {
9494 setNeedsBoundariesUpdate();
 95 if (newStyle->hasTransform())
 96 setNeedsTransformUpdate();
 97 }
9598 RenderObject::styleWillChange(diff, newStyle);
9699}
97100

Source/WebCore/svg/SVGStyledTransformableElement.cpp

@@AffineTransform SVGStyledTransformableElement::getScreenCTM(StyleUpdateStrategy
6363AffineTransform SVGStyledTransformableElement::animatedLocalTransform() const
6464{
6565 AffineTransform matrix;
66  transform().concatenate(matrix);
 66 RenderStyle* style = renderer()->style();
 67
 68 // if CSS property was set, use that, otherwise fallback to attribute (if set)
 69 if (style->hasTransform()) {
 70 TransformationMatrix t;
 71 // For now, the transform-origin is not taken into account
 72 // Also, any percentage values will not be taken into account
 73 style->applyTransform(t, IntSize(0, 0), RenderStyle::ExcludeTransformOrigin);
 74 // Flatten any 3D transform
 75 matrix = t.toAffineTransform();
 76 } else {
 77 transform().concatenate(matrix);
 78 }
6779 if (m_supplementalTransform)
6880 return *m_supplementalTransform * matrix;
6981 return matrix;