1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
4 <script src="resources/SVGTestCase.js"></script>
5 <script src="../../resources/js-test.js"></script>
6 <script src="../../fast/repaint/resources/repaint.js"></script>
7 <style type="text/css" media="screen">
10 display: inline-block;
18 background-color: silver;
19 border: 1px solid black;
27 -webkit-transform-origin: top left; /* to match SVG */
33 <div class="container">
34 <svg id="svg1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" style="width:200px; height:200px;">
35 <rect id="rect1" x="0" y="0" height="60" width="60" fill="green"/>
38 <div class="container">
39 <svg id="svg2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" style="width:200px; height:200px;">
40 <rect id="rect2" x="0" y="0" height="60" width="60" fill="green" transform="translate(1000, 1000) rotate(90)"/>
45 <div class="container">
46 <svg id="svg1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" style="width:200px; height:200px;">
47 <rect id="rect3" x="0" y="0" height="60" width="60" fill="green"/>
50 <div class="container">
51 <svg id="svg2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" style="width:200px; height:200px;">
52 <rect id="rect4" x="0" y="0" height="60" width="60" fill="green" transform="translate(1000, 1000) rotate(90)"/>
57 <div class="container">
59 <svg id="svg3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" style="width:200px; height:200px;">
60 <rect id="rect5" x="0" y="0" height="60" width="60" fill="green"/>
65 <h1>SVG 1.1 dynamic update tests</h1>
66 <p id="description"></p>
67 <p>Also, to pass the test, the rectangles should be rotated with 45deg</p>
68 <div id="console"></div>
70 // [Expected rendering result] 'Test passed' message - and a series of PASS messages
72 description("Tests dynamic updates of the '-webkit-transform' on SVG element");
73 //createSVGTestCase();
75 function dumpRect(r) {
83 function dumpMatrix(matrix) {
84 return "[" + matrix.a.toFixed(1)
85 + " " + matrix.b.toFixed(1)
86 + " " + matrix.c.toFixed(1)
87 + " " + matrix.d.toFixed(1)
88 + " " + matrix.e.toFixed(1)
89 + " " + matrix.f.toFixed(1)
93 function dumpTransform(transform) {
94 var transformTypes = {
95 "0": "SVG_TRANSFORM_UNKNOWN",
96 "1": "SVG_TRANSFORM_MATRIX",
97 "2": "SVG_TRANSFORM_TRANSLATE",
98 "3": "SVG_TRANSFORM_SCALE",
99 "4": "SVG_TRANSFORM_ROTATE",
100 "5": "SVG_TRANSFORM_SKEWX",
101 "6": "SVG_TRANSFORM_SKEWY"
104 return "type=" + transformTypes[transform.type] + " matrix=" + dumpMatrix(transform.matrix);
107 var rect1 = document.getElementById("rect1");
108 var rect2 = document.getElementById("rect2");
109 var rect3 = document.getElementById("rect3");
110 var rect4 = document.getElementById("rect4");
111 var rect5 = document.getElementById("rect5");
113 var wrapper = document.getElementById("wrapper");
116 debug("Transform via style attribute");
117 rect1.setAttribute("style", "-webkit-transform: translate(100px, 25px) scale(2) rotate(45deg)");
119 shouldBeEqualToString("rect1.style.webkitTransform", "translate(100px, 25px) scale(2) rotate(45deg)");
120 shouldBeEqualToString("dumpMatrix(rect1.getCTM())", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
121 shouldBeEqualToString("dumpMatrix(new WebKitCSSMatrix(rect1.style.webkitTransform))", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
122 shouldBe("dumpMatrix(new WebKitCSSMatrix(rect1.style.webkitTransform))", "dumpMatrix(rect1.getCTM())");
123 shouldBe("rect1.transform.baseVal.numberOfItems", "0");
124 shouldBeNull("rect1.getAttribute('transform')");
127 shouldBeEqualToString("dumpMatrix(rect2.getCTM())", "[0.0 1.0 -1.0 0.0 1000.0 1000.0]");
128 shouldBeEqualToString("dumpMatrix(new WebKitCSSMatrix(rect2.style.webkitTransform))", "[1.0 0.0 0.0 1.0 0.0 0.0]");
130 rect2.setAttribute("style", "-webkit-transform: translate(100px, 25px) scale(2) rotate(45deg)");
132 shouldBeEqualToString("rect2.style.webkitTransform", "translate(100px, 25px) scale(2) rotate(45deg)");
133 shouldBeEqualToString("dumpMatrix(rect2.getCTM())", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
134 shouldBeEqualToString("dumpMatrix(new WebKitCSSMatrix(rect2.style.webkitTransform))", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
135 shouldBe("dumpMatrix(new WebKitCSSMatrix(rect2.style.webkitTransform))", "dumpMatrix(rect2.getCTM())");
136 shouldBe("rect2.transform.baseVal.numberOfItems", "2");
137 shouldBeEqualToString("rect2.getAttribute('transform')", "translate(1000, 1000) rotate(90)");
138 shouldBeEqualToString("dumpTransform(rect2.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 1000.0 1000.0]");
139 shouldBeEqualToString("dumpTransform(rect2.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]");
142 debug("Transform via CSS");
143 rect3.style.webkitTransform = "translate(100px, 25px) scale(2) rotate(45deg)";
145 shouldBeEqualToString("rect3.style.webkitTransform", "translate(100px, 25px) scale(2) rotate(45deg)");
146 shouldBeEqualToString("dumpMatrix(rect3.getCTM())", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
147 shouldBeEqualToString("dumpMatrix(new WebKitCSSMatrix(rect3.style.webkitTransform))", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
148 shouldBe("dumpMatrix(new WebKitCSSMatrix(rect3.style.webkitTransform))", "dumpMatrix(rect3.getCTM())");
149 shouldBe("rect3.transform.baseVal.numberOfItems", "0");
150 shouldBeNull("rect3.getAttribute('transform')");
153 shouldBeEqualToString("dumpMatrix(rect2.getCTM())", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
154 shouldBeEqualToString("dumpMatrix(new WebKitCSSMatrix(rect2.style.webkitTransform))", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
156 rect4.style.webkitTransform = "translate(100px, 25px) scale(2) rotate(45deg)";
158 shouldBeEqualToString("rect4.style.webkitTransform", "translate(100px, 25px) scale(2) rotate(45deg)");
159 shouldBeEqualToString("dumpMatrix(rect4.getCTM())", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
160 shouldBeEqualToString("dumpMatrix(new WebKitCSSMatrix(rect4.style.webkitTransform))", "[1.4 1.4 -1.4 1.4 100.0 25.0]");
161 shouldBe("dumpMatrix(new WebKitCSSMatrix(rect4.style.webkitTransform))", "dumpMatrix(rect4.getCTM())");
162 shouldBe("rect4.transform.baseVal.numberOfItems", "2");
163 shouldBeEqualToString("rect4.getAttribute('transform')", "translate(1000, 1000) rotate(90)");
164 shouldBeEqualToString("dumpTransform(rect4.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 1000.0 1000.0]");
165 shouldBeEqualToString("dumpTransform(rect4.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]");
168 debug("Transform on wrapper div");
169 wrapper.style.webkitTransform = "translate(100px, 25px) scale(2) rotate(45deg)";
170 shouldBeEqualToString("rect5.style.webkitTransform", "");
171 shouldBeEqualToString("dumpMatrix(rect5.getCTM())", "[1.0 0.0 0.0 1.0 0.0 0.0]");
172 shouldBeEqualToString("dumpMatrix(new WebKitCSSMatrix(rect5.style.webkitTransform))", "[1.0 0.0 0.0 1.0 0.0 0.0]");
173 shouldBe("dumpMatrix(new WebKitCSSMatrix(rect5.style.webkitTransform))", "dumpMatrix(rect5.getCTM())");
174 shouldBe("rect5.transform.baseVal.numberOfItems", "0");
175 shouldBeNull("rect5.getAttribute('transform')");
178 var successfullyParsed = true;