OLD | NEW |
---|---|
(Empty) | |
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <script src='../../resources/testharness.js'></script> | |
5 <script src='../../resources/testharnessreport.js'></script> | |
6 </head> | |
7 <body> | |
8 <div id='testElement'> | |
9 <div id='childTestElement'></div> | |
10 </div> | |
11 <script> | |
12 CSS.registerProperty( | |
13 { | |
14 name: '--my-image', | |
15 syntax: '<image>', | |
16 inherits: false, | |
17 initialValue: 'url()' | |
18 }); | |
19 CSS.registerProperty( | |
20 { | |
21 name: '--my-length', | |
22 syntax: '<length>', | |
23 inherits: false, | |
24 initialValue: '0px' | |
25 }); | |
26 CSS.registerProperty( | |
27 { | |
28 name: '--my-inherited-length', | |
29 syntax: '<length>', | |
30 inherits: true, | |
31 initialValue: '0px' | |
32 }); | |
33 CSS.registerProperty( | |
34 { | |
35 name: '--my-percentage', | |
36 syntax: '<percentage>', | |
37 inherits: false, | |
38 initialValue: '0%' | |
39 }); | |
40 CSS.registerProperty( | |
41 { | |
42 name: '--my-unused-property', | |
43 syntax: '<percentage>', | |
44 inherits: false, | |
45 initialValue: '0%' | |
46 }); | |
47 </script> | |
48 <style> | |
49 #testElement { | |
50 font-size: 10px; | |
51 --my-length: 10em; | |
52 --my-inherited-length: 200px; | |
53 --my-percentage: 10%; | |
54 background-image: var(--my-image); | |
55 width: var(--my-length); | |
56 height: calc(var(--my-length) + var(--my-percentage) + 15px); | |
57 } | |
58 </style> | |
meade_UTC10
2017/04/06 03:47:32
Can this be above the script element, and the two
| |
59 <script> | |
60 // TODO(rjwright): Change this & put it in the CSS when relative URLs work with registered | |
61 // properties. | |
62 var locationPath = location.href.substring(0, location.href.lastIndexOf('/')); | |
63 var imagePath = locationPath + '/resources/1x1-green.png'; | |
64 testElement.style = '--my-image: url(\"' + imagePath + '\");'; | |
65 | |
66 var computedStyleMap = getComputedStyleMap(testElement); | |
67 var childComputedStyleMap = getComputedStyleMap(childTestElement); | |
68 | |
69 test(function() { | |
70 assert_true(computedStyleMap.has('--my-length')); | |
71 var result = computedStyleMap.get('--my-length'); | |
72 assert_true(result instanceof CSSSimpleLength); | |
73 assert_equals(result.cssText, '100px'); | |
74 }, 'Getting a length type registered property returns a CSSSimpleLength'); | |
75 | |
76 var t1 = async_test('Getting a URL image type registered property returns a CSSU RLImageValue'); | |
77 function t1Callback() { | |
78 t1.step(function() { | |
79 assert_true(computedStyleMap.has('--my-image')); | |
80 var result = computedStyleMap.get('--my-image'); | |
81 assert_true(result instanceof CSSURLImageValue); | |
82 assert_equals(result.cssText, 'url(\"' + imagePath + '\")'); | |
83 // FIXME(rjwright): I thought this was fixed! | |
meade_UTC10
2017/04/06 03:47:32
Perhaps a more helpful comment? :p
| |
84 assert_equals(result.state, 'loaded'); | |
85 assert_equals(result.intrinsicWidth, 1); | |
86 assert_equals(result.intrinsicHeight, 1); | |
87 assert_equals(result.intrinsicRatio, 1); | |
88 }); | |
89 t1.done(); | |
90 } | |
91 | |
92 test(function() { | |
93 var result = computedStyleMap.get('width'); | |
94 assert_true(result instanceof CSSSimpleLength); | |
95 assert_equals(result.cssText, '100px'); | |
96 }, 'Getting a width with a length type var value returns a CSSSimpleLength'); | |
97 | |
98 var t2 = async_test('Getting a background-image with a URL image type var value returns a CSSURLImageValue'); | |
99 function t2Callback() { | |
meade_UTC10
2017/04/06 03:47:32
If you move the calculation of the image path into
| |
100 t2.step(function() { | |
101 var result = computedStyleMap.get('background-image'); | |
102 assert_true(result instanceof CSSURLImageValue); | |
103 assert_equals(result.cssText, 'url(\"' + imagePath + '\")'); | |
104 assert_equals(result.state, 'loaded'); | |
105 assert_equals(result.intrinsicWidth, 1); | |
106 assert_equals(result.intrinsicHeight, 1); | |
107 assert_equals(result.intrinsicRatio, 1); | |
108 }); | |
109 t2.done(); | |
110 } | |
111 | |
112 test(function() { | |
113 assert_true(childComputedStyleMap.has('--my-inherited-length')); | |
114 var result = childComputedStyleMap.get('--my-inherited-length'); | |
115 assert_true(result instanceof CSSSimpleLength); | |
116 assert_equals(result.cssText, '200px'); | |
117 }, 'Getting an inherited length type registered property returns a CSSSimpleLeng th'); | |
118 | |
119 test(function() { | |
120 assert_true(childComputedStyleMap.has('--my-length')); | |
121 result = childComputedStyleMap.get('--my-length'); | |
122 assert_true(result instanceof CSSSimpleLength); | |
123 assert_equals(result.cssText, '0px'); | |
124 }, 'Getting a non-inherited length type registered property returns a CSSSimpleL ength'); | |
125 | |
126 test(function() { | |
127 var result = computedStyleMap.get('height'); | |
128 assert_true(result instanceof CSSCalcLength); | |
129 assert_equals(result.px, 115); | |
130 assert_equals(result.percent, 10); | |
131 assert_equals(result.cssText, 'calc(10% + 115px)'); | |
132 }, 'Getting a height with a calc type containing var values returns a CSSCalcLen gth'); | |
133 | |
134 test(function() { | |
135 assert_true(computedStyleMap.has('--my-unused-property')); | |
136 result = computedStyleMap.get('--my-unused-property'); | |
137 assert_true(result instanceof CSSSimpleLength); | |
138 assert_equals(result.cssText, '0%'); | |
139 }, 'Getting the value of a registered property that isn\'t set on the element ' + | |
140 'returns the initial value for the property'); | |
141 | |
142 test(function() { | |
143 assert_false(computedStyleMap.has('--my-non-property')); | |
144 assert_equals(computedStyleMap.get('--my-non-property'), null); | |
145 }, 'Getting the value of a property that isn\'t registered returns null'); | |
146 | |
147 test(function() { | |
148 var result = computedStyleMap.getAll('--my-length'); | |
149 assert_equals(result.length, 1); | |
150 assert_true(result[0] instanceof CSSSimpleLength); | |
151 assert_equals(result[0].cssText, '100px'); | |
152 }, 'getAll for a length type registered property returns a single value'); | |
153 | |
154 document.onreadystatechange = function() { | |
155 if(document.readyState == 'complete') { | |
156 t1Callback(computedStyleMap); | |
157 t2Callback(computedStyleMap); | |
158 } | |
159 }; | |
160 | |
161 </script> | |
162 </body> | |
163 </html> | |
OLD | NEW |