OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src='../../../resources/testharness.js'></script> | 2 <script src='../../../resources/testharness.js'></script> |
3 <script src='../../../resources/testharnessreport.js'></script> | 3 <script src='../../../resources/testharnessreport.js'></script> |
4 <script src='property-suite.js'></script> | 4 <script src='property-suite.js'></script> |
5 | 5 |
6 <div id="testElement"></div> | 6 <div id="testElement"></div> |
7 | 7 |
8 <script> | 8 <script> |
9 | 9 |
| 10 let zeroAngle = new CSSAngleValue(0, 'deg'); |
| 11 |
| 12 function angleValue(value, unit) { |
| 13 return new CSSAngleValue(value, unit); |
| 14 } |
| 15 |
10 function cssTransformWithRotate(angleValue) { | 16 function cssTransformWithRotate(angleValue) { |
11 return new CSSTransformValue([ | 17 return new CSSTransformValue([ |
12 new CSSRotation(angleValue)]); | 18 new CSSRotation(angleValue)]); |
13 } | 19 } |
14 | 20 |
15 function cssTransformWithRotate3D(x, y, z, angleValue) { | 21 function cssTransformWithRotate3D(x, y, z, angleValue) { |
16 return new CSSTransformValue([ | 22 return new CSSTransformValue([ |
17 new CSSRotation(x, y, z, angleValue)]); | 23 new CSSRotation(x, y, z, angleValue)]); |
18 } | 24 } |
19 | 25 |
20 runInlineStylePropertyMapTests( { | 26 runInlineStylePropertyMapTests( { |
21 property: 'transform', | 27 property: 'transform', |
22 validKeywords: [ | 28 validKeywords: [ |
23 'none', | 29 'none', |
24 ], | 30 ], |
25 validObjects: [ | 31 validObjects: [ |
26 // Translations | 32 // Translations |
27 // TODO(meade) | 33 // TODO(meade) |
28 // Scales | 34 // Scales |
29 // TODO(meade) | 35 // TODO(meade) |
30 // Skews | 36 // Skews |
31 // TODO(meade) | 37 new CSSTransformValue([new CSSSkew(angleValue(30, 'deg'), zeroAngle)]), |
| 38 new CSSTransformValue([new CSSSkew(angleValue(10, 'rad'), zeroAngle)]), |
| 39 new CSSTransformValue([new CSSSkew(angleValue(2, 'grad'), zeroAngle)]), |
| 40 new CSSTransformValue([new CSSSkew(angleValue(0.2, 'turn'), zeroAngle)]), |
| 41 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(30, 'deg'))]), |
| 42 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(10, 'rad'))]), |
| 43 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(2, 'grad'))]), |
| 44 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(0.2, 'turn'))]), |
32 // Rotations | 45 // Rotations |
33 cssTransformWithRotate(new CSSAngleValue(30, 'deg')), | 46 cssTransformWithRotate(angleValue(30, 'deg')), |
34 cssTransformWithRotate(new CSSAngleValue(10, 'rad')), | 47 cssTransformWithRotate(angleValue(10, 'rad')), |
35 cssTransformWithRotate(new CSSAngleValue(2, 'grad')), | 48 cssTransformWithRotate(angleValue(2, 'grad')), |
36 cssTransformWithRotate(new CSSAngleValue(0.2, 'turn')), | 49 cssTransformWithRotate(angleValue(0.2, 'turn')), |
37 cssTransformWithRotate3D(1, 2, 3, new CSSAngleValue(30, 'deg')), | 50 cssTransformWithRotate3D(1, 2, 3, angleValue(30, 'deg')), |
38 cssTransformWithRotate3D(1, 2, 3, new CSSAngleValue(10, 'rad')), | 51 cssTransformWithRotate3D(1, 2, 3, angleValue(10, 'rad')), |
39 cssTransformWithRotate3D(1, 2, 3, new CSSAngleValue(2, 'grad')), | 52 cssTransformWithRotate3D(1, 2, 3, angleValue(2, 'grad')), |
40 cssTransformWithRotate3D(1, 2, 3, new CSSAngleValue(0.2, 'turn')), | 53 cssTransformWithRotate3D(1, 2, 3, angleValue(0.2, 'turn')), |
41 // Perspectives | 54 // Perspectives |
42 // TODO(meade) | 55 // TODO(meade) |
43 ], | 56 ], |
44 // Values with these strings aren't used in Typed OM, but can also be | 57 // Values with these strings aren't used in Typed OM, but can also be |
45 // represented by the specified values. | 58 // represented by the specified values. |
46 validStringMappings: { | 59 validStringMappings: { |
| 60 // Skews |
| 61 'skew(45deg)': |
| 62 new CSSTransformValue([new CSSSkew(angleValue(45, 'deg'), zeroAngle)]), |
| 63 'skew(1rad)': |
| 64 new CSSTransformValue([new CSSSkew(angleValue(1, 'rad'), zeroAngle)]), |
| 65 'skew(6.2grad)': |
| 66 new CSSTransformValue([new CSSSkew(angleValue(6.2, 'grad'), zeroAngle)]), |
| 67 'skew(0.31turn)': |
| 68 new CSSTransformValue([new CSSSkew(angleValue(0.31, 'turn'), zeroAngle)]), |
| 69 'skewX(45deg)': |
| 70 new CSSTransformValue([new CSSSkew(angleValue(45, 'deg'), zeroAngle)]), |
| 71 'skewX(1rad)': |
| 72 new CSSTransformValue([new CSSSkew(angleValue(1, 'rad'), zeroAngle)]), |
| 73 'skewX(6.2grad)': |
| 74 new CSSTransformValue([new CSSSkew(angleValue(6.2, 'grad'), zeroAngle)]), |
| 75 'skewX(0.31turn)': |
| 76 new CSSTransformValue([new CSSSkew(angleValue(0.31, 'turn'), zeroAngle)]), |
| 77 'skewY(45deg)': |
| 78 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(45, 'deg'))]), |
| 79 'skewY(1rad)': |
| 80 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(1, 'rad'))]), |
| 81 'skewY(6.2grad)': |
| 82 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(6.2, 'grad'))]), |
| 83 'skewY(0.31turn)': |
| 84 new CSSTransformValue([new CSSSkew(zeroAngle, angleValue(0.31, 'turn'))]), |
47 // Rotations | 85 // Rotations |
48 'rotateX(45deg)': | 86 'rotateX(45deg)': cssTransformWithRotate3D(1, 0, 0, angleValue(45, 'deg')), |
49 cssTransformWithRotate3D(1, 0, 0, new CSSAngleValue(45, 'deg')), | 87 'rotateX(1rad)': cssTransformWithRotate3D(1, 0, 0, angleValue(1, 'rad')), |
50 'rotateX(1rad)': | |
51 cssTransformWithRotate3D(1, 0, 0, new CSSAngleValue(1, 'rad')), | |
52 'rotateX(6.2grad)': | 88 'rotateX(6.2grad)': |
53 cssTransformWithRotate3D(1, 0, 0, new CSSAngleValue(6.2, 'grad')), | 89 cssTransformWithRotate3D(1, 0, 0, angleValue(6.2, 'grad')), |
54 'rotateX(0.31turn)': | 90 'rotateX(0.31turn)': |
55 cssTransformWithRotate3D(1, 0, 0, new CSSAngleValue(0.31, 'turn')), | 91 cssTransformWithRotate3D(1, 0, 0, angleValue(0.31, 'turn')), |
56 'rotateY(45deg)': | 92 'rotateY(45deg)': cssTransformWithRotate3D(0, 1, 0, angleValue(45, 'deg')), |
57 cssTransformWithRotate3D(0, 1, 0, new CSSAngleValue(45, 'deg')), | 93 'rotateY(1rad)': cssTransformWithRotate3D(0, 1, 0, angleValue(1, 'rad')), |
58 'rotateY(1rad)': | |
59 cssTransformWithRotate3D(0, 1, 0, new CSSAngleValue(1, 'rad')), | |
60 'rotateY(6.2grad)': | 94 'rotateY(6.2grad)': |
61 cssTransformWithRotate3D(0, 1, 0, new CSSAngleValue(6.2, 'grad')), | 95 cssTransformWithRotate3D(0, 1, 0, angleValue(6.2, 'grad')), |
62 'rotateY(0.31turn)': | 96 'rotateY(0.31turn)': |
63 cssTransformWithRotate3D(0, 1, 0, new CSSAngleValue(0.31, 'turn')), | 97 cssTransformWithRotate3D(0, 1, 0, angleValue(0.31, 'turn')), |
64 'rotateZ(45deg)': | 98 'rotateZ(45deg)': cssTransformWithRotate3D(0, 0, 1, angleValue(45, 'deg')), |
65 cssTransformWithRotate3D(0, 0, 1, new CSSAngleValue(45, 'deg')), | 99 'rotateZ(1rad)': cssTransformWithRotate3D(0, 0, 1, angleValue(1, 'rad')), |
66 'rotateZ(1rad)': | |
67 cssTransformWithRotate3D(0, 0, 1, new CSSAngleValue(1, 'rad')), | |
68 'rotateZ(6.2grad)': | 100 'rotateZ(6.2grad)': |
69 cssTransformWithRotate3D(0, 0, 1, new CSSAngleValue(6.2, 'grad')), | 101 cssTransformWithRotate3D(0, 0, 1, angleValue(6.2, 'grad')), |
70 'rotateZ(0.31turn)': | 102 'rotateZ(0.31turn)': |
71 cssTransformWithRotate3D(0, 0, 1, new CSSAngleValue(0.31, 'turn')), | 103 cssTransformWithRotate3D(0, 0, 1, angleValue(0.31, 'turn')), |
72 }, | 104 }, |
73 supportsMultiple: false, | 105 supportsMultiple: false, |
74 invalidObjects: [new CSSSimpleLength(4, 'px')] | 106 invalidObjects: [new CSSSimpleLength(4, 'px')] |
75 }); | 107 }); |
76 | 108 |
77 // TODO(meade): Remove/update this test once translate is supported. | 109 // TODO(meade): Remove/update this test once translate is supported. |
78 test(function() { | 110 test(function() { |
79 testElement.style.transform = 'translateY(50px)'; | 111 testElement.style.transform = 'translateY(50px)'; |
80 testElement.styleMap.entries(); | 112 testElement.styleMap.entries(); |
81 }, "Unhandled case doesn't crash."); | 113 }, "Unhandled case doesn't crash."); |
82 | 114 |
83 test(function() { | 115 test(function() { |
84 testElement.style.transform = 'rotate(calc(45deg + 1rad))'; | 116 testElement.style.transform = 'rotate(calc(45deg + 1rad))'; |
85 let result = testElement.styleMap.get('transform'); | 117 let result = testElement.styleMap.get('transform'); |
86 assert_equals(result.constructor, CSSStyleValue, | 118 assert_equals(result.constructor, CSSStyleValue, |
87 'result is a base CSSStyleValue'); | 119 'result is a base CSSStyleValue'); |
88 assert_equals(result.cssText, 'rotate(calc(102.296deg))'); | 120 assert_equals(result.cssText, 'rotate(calc(102.296deg))'); |
89 }, 'Getting transform when it has a rotate with a calc angle does not crash'); | 121 }, 'Getting transform when it has a rotate with a calc angle does not crash'); |
90 | 122 |
91 test(function() { | 123 test(function() { |
92 testElement.style.transform = 'rotate3d(1, 2, 3, calc(45deg + 1rad))'; | 124 testElement.style.transform = 'rotate3d(1, 2, 3, calc(45deg + 1rad))'; |
93 let result = testElement.styleMap.get('transform'); | 125 let result = testElement.styleMap.get('transform'); |
94 assert_equals(result.constructor, CSSStyleValue, | 126 assert_equals(result.constructor, CSSStyleValue, |
95 'result is a base CSSStyleValue'); | 127 'result is a base CSSStyleValue'); |
96 assert_equals(result.cssText, 'rotate3d(1, 2, 3, calc(102.296deg))'); | 128 assert_equals(result.cssText, 'rotate3d(1, 2, 3, calc(102.296deg))'); |
97 }, 'Getting transform when it has a rotate3d with a calc angle does not crash'); | 129 }, 'Getting transform when it has a rotate3d with a calc angle does not crash'); |
98 | 130 |
| 131 test(function() { |
| 132 testElement.style.transform = 'skew(calc(5deg + 0.1rad))'; |
| 133 let result = testElement.styleMap.get('transform'); |
| 134 assert_equals(result.cssText, 'skew(calc(10.7296deg))'); |
| 135 assert_equals(result.constructor, CSSStyleValue); |
| 136 }, 'Getting transform when it has a skew with a calc angle does not crash'); |
| 137 |
| 138 test(function() { |
| 139 testElement.style.transform = 'skew(calc(5deg + 0.1rad), 5deg)'; |
| 140 let result = testElement.styleMap.get('transform'); |
| 141 assert_equals(result.cssText, 'skew(calc(10.7296deg), 5deg)'); |
| 142 assert_equals(result.constructor, CSSStyleValue); |
| 143 |
| 144 testElement.style.transform = 'skew(5deg, calc(5deg + 0.1rad))'; |
| 145 result = testElement.styleMap.get('transform'); |
| 146 assert_equals(result.cssText, 'skew(5deg, calc(10.7296deg))'); |
| 147 assert_equals(result.constructor, CSSStyleValue); |
| 148 }, 'Getting transform when it has a 2-argument skew with a calc angle ' + |
| 149 'does not crash'); |
| 150 |
| 151 test(function() { |
| 152 testElement.style.transform = 'skewX(calc(5deg + 0.1rad))'; |
| 153 let result = testElement.styleMap.get('transform'); |
| 154 assert_equals(result.cssText, 'skewX(calc(10.7296deg))'); |
| 155 assert_equals(result.constructor, CSSStyleValue); |
| 156 }, 'Getting transform when it has a skewX with a calc angle does not crash'); |
| 157 |
| 158 test(function() { |
| 159 testElement.style.transform = 'skewY(calc(5deg + 0.1rad))'; |
| 160 let result = testElement.styleMap.get('transform'); |
| 161 assert_equals(result.cssText, 'skewY(calc(10.7296deg))'); |
| 162 assert_equals(result.constructor, CSSStyleValue); |
| 163 }, 'Getting transform when it has a skewY with a calc angle does not crash'); |
| 164 |
99 </script> | 165 </script> |
100 | |
OLD | NEW |