OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <script src="../resources/testharness.js"></script> | |
3 <script src="../resources/testharnessreport.js"></script> | |
4 <style> | |
5 a { visibility: hidden; } | |
6 </style> | |
7 | |
8 <div id='container'> | |
9 <div id='child'></div> | |
10 </div> | |
11 <div id='element'></div> | |
12 <svg> | |
13 <rect id='svgElement'></rect> | |
14 </svg> | |
15 | |
16 <a href='example.com/unvisited' id='unvisited'><div id='unvisitedchild'>Unvisite
d</div></a> | |
17 <a href='' id='visited'><div id='visitedchild'>Visited</div></a> | |
18 | |
19 <script> | |
20 | |
21 var container = document.getElementById('container'); | |
22 var child = document.getElementById('child'); | |
23 var element = document.getElementById('element'); | |
24 var unvisited = document.getElementById('unvisited'); | |
25 var visited = document.getElementById('visited'); | |
26 var unvisitedChild = document.getElementById('unvisitedchild'); | |
27 var visitedChild = document.getElementById('visitedchild'); | |
28 | |
29 test(function() { | |
30 var keyframes = [ | |
31 {backgroundColor: 'currentColor'}, | |
32 {backgroundColor: 'rgb(0, 68, 0)'} | |
33 ]; | |
34 | |
35 element.style.color = 'rgb(204, 0, 0)'; | |
36 var player = element.animate(keyframes, 10); | |
37 player.pause(); | |
38 player.currentTime = 5; | |
39 element.style.color = 'rgb(0, 0, 204)'; | |
40 assert_equals(getComputedStyle(element).backgroundColor, 'rgb(0, 34, 102)'); | |
41 }, 'Background color responsive to currentColor changes'); | |
42 | |
43 test(function() { | |
44 var keyframes = [ | |
45 {fill: 'currentColor'}, | |
46 {fill: 'rgb(0, 68, 0)'} | |
47 ]; | |
48 | |
49 svgElement.style.color = 'rgb(204, 0, 0)'; | |
50 var player = svgElement.animate(keyframes, 10); | |
51 player.pause(); | |
52 player.currentTime = 5; | |
53 svgElement.style.color = 'rgb(0, 0, 204)'; | |
54 assert_equals(getComputedStyle(svgElement).fill, 'rgb(0, 34, 102)'); | |
55 }, 'Fill color responsive to currentColor changes'); | |
56 | |
57 test(function() { | |
58 var keyframes = [ | |
59 {backgroundColor: 'rgba(250, 240, 220, 0.431372549)'}, | |
60 {backgroundColor: 'currentColor'} | |
61 ]; | |
62 | |
63 element.style.color = 'rgb(204, 0, 0)'; | |
64 var player = element.animate(keyframes, 10); | |
65 player.pause(); | |
66 player.currentTime = 3; | |
67 element.style.color = 'rgba(160, 190, 180, 0.980392157)'; | |
68 assert_equals(getComputedStyle(element).backgroundColor, 'rgba(206, 215, 200
, 0.596)'); | |
69 }, 'Color interpolation uses pre-multiplied colors'); | |
70 | |
71 test(function() { | |
72 var keyframes = [ | |
73 { | |
74 borderBottomColor: 'currentColor', | |
75 borderLeftColor: 'currentColor', | |
76 borderRightColor: 'currentColor', | |
77 borderTopColor: 'currentColor', | |
78 offset: 0 | |
79 }, | |
80 { | |
81 borderBottomColor: 'rgb(0, 68, 0)', | |
82 borderLeftColor: 'rgb(0, 70, 0)', | |
83 borderRightColor: 'rgb(0, 72, 0)', | |
84 borderTopColor: 'rgb(0, 74, 0)', | |
85 offset: 1 | |
86 } | |
87 ]; | |
88 | |
89 element.style.color = 'rgb(204, 0, 0)'; | |
90 var player = element.animate(keyframes, 10); | |
91 player.pause(); | |
92 player.currentTime = 5; | |
93 element.style.color = 'rgb(0, 0, 204)'; | |
94 assert_equals(getComputedStyle(element).borderBottomColor, 'rgb(0, 34, 102)'
); | |
95 assert_equals(getComputedStyle(element).borderLeftColor, 'rgb(0, 35, 102)'); | |
96 assert_equals(getComputedStyle(element).borderRightColor, 'rgb(0, 36, 102)')
; | |
97 assert_equals(getComputedStyle(element).borderTopColor, 'rgb(0, 37, 102)'); | |
98 }, 'Border color responsive to currentColor changes'); | |
99 | |
100 test(function() { | |
101 var keyframes = [ | |
102 { | |
103 borderBottomColor: 'currentColor', | |
104 borderLeftColor: 'currentColor', | |
105 borderRightColor: 'currentColor', | |
106 borderTopColor: 'currentColor', | |
107 offset: 0 | |
108 }, | |
109 { | |
110 borderBottomColor: 'rgb(0, 68, 0)', | |
111 borderLeftColor: 'rgb(0, 70, 0)', | |
112 borderRightColor: 'rgb(0, 72, 0)', | |
113 borderTopColor: 'rgb(0, 74, 0)', | |
114 offset: 1 | |
115 } | |
116 ]; | |
117 | |
118 element.style.color = 'rgb(204, 0, 0)'; | |
119 var player = element.animate(keyframes, 10); | |
120 player.pause(); | |
121 player.currentTime = 5; | |
122 element.style.color = 'rgb(0, 0, 200)'; | |
123 assert_equals(getComputedStyle(element).borderBottomColor, 'rgb(0, 34, 100)'
); | |
124 assert_equals(getComputedStyle(element).borderLeftColor, 'rgb(0, 35, 100)'); | |
125 assert_equals(getComputedStyle(element).borderRightColor, 'rgb(0, 36, 100)')
; | |
126 assert_equals(getComputedStyle(element).borderTopColor, 'rgb(0, 37, 100)'); | |
127 }, 'Border color responsive to currentColor changes again'); | |
128 | |
129 test(function() { | |
130 var keyframes = [ | |
131 {outlineColor: 'currentColor'}, | |
132 {outlineColor: 'rgb(0, 68, 0)'} | |
133 ]; | |
134 | |
135 element.style.color = 'rgb(204, 0, 0)'; | |
136 var player = element.animate(keyframes, 10); | |
137 player.pause(); | |
138 player.currentTime = 5; | |
139 element.style.color = 'rgb(0, 0, 204)'; | |
140 assert_equals(getComputedStyle(element).outlineColor, 'rgb(0, 34, 102)'); | |
141 }, 'Outline color responsive to currentColor changes'); | |
142 | |
143 test(function() { | |
144 var keyframes = [ | |
145 {stroke: 'rgb(0, 68, 0)'}, | |
146 {stroke: 'currentColor'} | |
147 ]; | |
148 | |
149 svgElement.style.color = 'rgb(204, 0, 0)'; | |
150 var player = svgElement.animate(keyframes, 10); | |
151 player.pause(); | |
152 player.currentTime = 5; | |
153 svgElement.style.color = 'rgb(0, 0, 204)'; | |
154 assert_equals(getComputedStyle(svgElement).stroke, 'rgb(0, 34, 102)'); | |
155 }, 'Stroke color responsive to currentColor changes'); | |
156 | |
157 test(function() { | |
158 var keyframes = [ | |
159 {textDecorationColor: 'rgb(0, 68, 0)'}, | |
160 {textDecorationColor: 'currentColor'} | |
161 ]; | |
162 | |
163 element.style.color = 'rgb(204, 0, 0)'; | |
164 var player = element.animate(keyframes, 10); | |
165 player.pause(); | |
166 player.currentTime = 5; | |
167 element.style.color = 'rgb(0, 0, 204)'; | |
168 assert_equals(getComputedStyle(element).textDecorationColor, 'rgb(0, 34, 102
)'); | |
169 }, 'Text decoration color responsive to currentColor changes'); | |
170 | |
171 test(function() { | |
172 var keyframes = [ | |
173 {color: 'currentColor'}, | |
174 {color: 'rgb(0, 68, 0)'} | |
175 ]; | |
176 | |
177 child.style.color = 'rgb(10, 10, 10)'; // Should be ignored | |
178 container.style.color = 'rgb(204, 0, 0)'; | |
179 var player = child.animate(keyframes, 10); | |
180 player.pause(); | |
181 player.currentTime = 5; | |
182 container.style.color = 'rgb(0, 0, 204)'; | |
183 assert_equals(getComputedStyle(child).color, 'rgb(0, 34, 102)'); | |
184 player.currentTime = 7.5; | |
185 container.style.color = 'rgb(136, 0, 136)'; | |
186 assert_equals(getComputedStyle(child).color, 'rgb(34, 51, 34)'); | |
187 }, 'Color responsive to parent currentColor changes'); | |
188 | |
189 test(function() { | |
190 var keyframes = [ | |
191 {color: 'rgb(0, 68, 0)'}, | |
192 {color: 'currentColor'} | |
193 ]; | |
194 | |
195 child.style.color = 'rgb(10, 10, 10)'; // Should be ignored | |
196 container.style.color = 'rgb(204, 0, 0)'; | |
197 var player = child.animate(keyframes, 10); | |
198 player.pause(); | |
199 player.currentTime = 5; | |
200 container.style.color = 'rgb(0, 0, 204)'; | |
201 assert_equals(getComputedStyle(child).color, 'rgb(0, 34, 102)'); | |
202 player.currentTime = 7.5; | |
203 container.style.color = 'rgb(136, 0, 68)'; | |
204 assert_equals(getComputedStyle(child).color, 'rgb(102, 17, 51)'); | |
205 }, 'Color responsive to repeated parent currentColor changes'); | |
206 | |
207 test(function() { | |
208 var keyframes = [ | |
209 {backgroundColor: 'currentColor'}, | |
210 {backgroundColor: 'rgb(100, 150, 200)'} | |
211 ]; | |
212 | |
213 var player1 = unvisited.animate(keyframes, 10); | |
214 var player2 = visited.animate(keyframes, 10); | |
215 player1.pause(); | |
216 player2.pause(); | |
217 player1.currentTime = 5; | |
218 player2.currentTime = 5; | |
219 assert_equals(getComputedStyle(unvisited).backgroundColor, getComputedStyle(
visited).backgroundColor); | |
220 }, 'Color animations do not expose visited status'); | |
221 | |
222 test(function() { | |
223 var keyframes = [ | |
224 {color: 'rgb(100, 150, 200)'}, | |
225 {color: 'currentColor'} | |
226 ]; | |
227 | |
228 var player1 = unvisitedChild.animate(keyframes, 10); | |
229 var player2 = visitedChild.animate(keyframes, 10); | |
230 player1.pause(); | |
231 player2.pause(); | |
232 player1.currentTime = 5; | |
233 player2.currentTime = 5; | |
234 assert_equals(getComputedStyle(unvisitedChild).color, getComputedStyle(visit
edChild).color); | |
235 }, 'Color animations do not expose parent visited status'); | |
236 | |
237 </script> | |
OLD | NEW |