OLD | NEW |
| (Empty) |
1 <!doctype html> | |
2 <title>activation behavior</title> | |
3 <script src="../resources/testharness.js"></script> | |
4 <script src="../resources/testharnessreport.js"></script> | |
5 <script src="media-file.js"></script> | |
6 <div id="log"></div> | |
7 <script> | |
8 var uniqueSrcCounter = 0; | |
9 | |
10 function activation_behavior_test(tagName, src) | |
11 { | |
12 // FIXME: hack used to investigate http://crbug.com/355489 | |
13 function uniqueSrc() | |
14 { | |
15 return src + '?activation-behavior-' + ++uniqueSrcCounter; | |
16 } | |
17 | |
18 async_test(function(t) | |
19 { | |
20 var e = document.createElement(tagName); | |
21 e.controls = true; | |
22 e.src = uniqueSrc(); | |
23 e.preload = 'auto'; | |
24 e.oncanplay = t.step_func(function() | |
25 { | |
26 assert_greater_than(e.readyState, e.HAVE_CURRENT_DATA, 'element read
yState'); | |
27 e.controller = new MediaController(); | |
28 assert_false(e.controller.paused, 'controller paused state before cl
ick'); | |
29 assert_true(e.paused, 'element paused state before click'); | |
30 e.click(); | |
31 assert_false(e.controller.paused, 'controller paused state after cli
ck'); | |
32 assert_false(e.paused, 'element paused state after click'); | |
33 t.done(); | |
34 }); | |
35 }, tagName + ' activation behavior for restrained media controller'); | |
36 | |
37 async_test(function(t) | |
38 { | |
39 var e = document.createElement(tagName); | |
40 e.controls = true; | |
41 e.src = uniqueSrc(); | |
42 e.preload = 'auto'; | |
43 e.oncanplay = t.step_func(function() | |
44 { | |
45 e.pause(); // clears autoplaying flag | |
46 assert_greater_than(e.readyState, e.HAVE_CURRENT_DATA, 'element read
yState'); | |
47 e.controller = new MediaController(); | |
48 assert_false(e.controller.paused, 'controller paused state before cl
ick'); | |
49 assert_true(e.paused, 'element paused state before click'); | |
50 e.click(); | |
51 assert_false(e.controller.paused, 'controller paused state after cli
ck'); | |
52 assert_false(e.paused, 'element paused state after click'); | |
53 t.done(); | |
54 }); | |
55 }, tagName + ' activation behavior for restrained media controller (with non
-autoplaying paused slave)'); | |
56 | |
57 async_test(function(t) | |
58 { | |
59 var e1 = document.createElement(tagName); | |
60 var e2 = document.createElement(tagName); | |
61 e1.controls = true; | |
62 e1.src = uniqueSrc(); | |
63 e2.src = uniqueSrc(); | |
64 e1.preload = e2.preload = 'auto'; | |
65 var canplaycount = 0; | |
66 e1.oncanplay = e2.oncanplay = t.step_func(function() | |
67 { | |
68 if (++canplaycount != 2) { | |
69 return; | |
70 } | |
71 e1.play(); | |
72 assert_greater_than(e1.readyState, e1.HAVE_CURRENT_DATA, 'element 1
readyState'); | |
73 assert_greater_than(e2.readyState, e2.HAVE_CURRENT_DATA, 'element 2
readyState'); | |
74 e1.controller = new MediaController(); | |
75 e2.controller = e1.controller; | |
76 assert_false(e1.controller.paused, 'controller paused state before c
lick'); | |
77 assert_false(e1.paused, 'element 1 paused state before click'); | |
78 assert_true(e2.paused, 'element 2 paused state before click'); | |
79 e1.click(); | |
80 assert_false(e1.controller.paused, 'controller paused state after cl
ick'); | |
81 assert_false(e1.paused, 'element 1 paused state after click'); | |
82 assert_false(e2.paused, 'element 2 paused state after click'); | |
83 t.done(); | |
84 }); | |
85 }, tagName + ' activation behavior for restrained media controller (with non
-blocked playing and autoplaying-and-paused slaves)'); | |
86 | |
87 test(function() | |
88 { | |
89 var e = document.createElement(tagName); | |
90 e.controls = true; | |
91 e.controller = new MediaController(); | |
92 e.controller.pause(); | |
93 assert_true(e.controller.paused, 'controller paused state before click')
; | |
94 assert_true(e.paused, 'element paused state before click'); | |
95 e.click(); | |
96 assert_false(e.controller.paused, 'controller paused state after click')
; | |
97 assert_true(e.paused, 'element paused state after click'); | |
98 }, tagName + ' activation behavior for paused media controller'); | |
99 | |
100 async_test(function(t) | |
101 { | |
102 var e = document.createElement(tagName); | |
103 e.controls = true; | |
104 e.src = uniqueSrc(); | |
105 e.preload = 'auto'; | |
106 e.oncanplay = t.step_func(function() | |
107 { | |
108 assert_greater_than(e.readyState, e.HAVE_CURRENT_DATA, 'element read
yState'); | |
109 e.controller = new MediaController(); | |
110 e.controller.pause(); | |
111 assert_true(e.controller.paused, 'controller paused state before cli
ck'); | |
112 assert_true(e.paused, 'element paused state before click'); | |
113 e.click(); | |
114 assert_false(e.controller.paused, 'controller paused state after cli
ck'); | |
115 assert_true(e.paused, 'element paused state after click'); | |
116 t.done(); | |
117 }); | |
118 }, tagName + ' activation behavior for paused media controller (with non-blo
cked paused slave)'); | |
119 | |
120 test(function() | |
121 { | |
122 var e = document.createElement(tagName); | |
123 e.controls = true; | |
124 e.controller = new MediaController(); | |
125 e.controller.play(); | |
126 assert_false(e.controller.paused, 'controller paused state before click'
); | |
127 assert_false(e.paused, 'element paused state before click'); | |
128 e.click(); | |
129 assert_true(e.controller.paused, 'controller paused state after click'); | |
130 assert_false(e.paused, 'element paused state after click'); | |
131 }, tagName + ' activation behavior for playing media controller'); | |
132 | |
133 async_test(function(t) | |
134 { | |
135 var e = document.createElement(tagName); | |
136 e.controls = true; | |
137 e.src = uniqueSrc(); | |
138 e.preload = 'auto'; | |
139 e.oncanplay = t.step_func(function() | |
140 { | |
141 e.play(); | |
142 assert_greater_than(e.readyState, e.HAVE_CURRENT_DATA, 'element read
yState'); | |
143 e.controller = new MediaController(); | |
144 assert_false(e.controller.paused, 'controller paused state before cl
ick'); | |
145 assert_false(e.paused, 'element paused state before click'); | |
146 e.click(); | |
147 assert_true(e.controller.paused, 'controller paused state after clic
k'); | |
148 assert_false(e.paused, 'element paused state after click'); | |
149 t.done(); | |
150 }); | |
151 }, tagName + ' activation behavior for playing media controller (with non-bl
ocked playing slave)'); | |
152 | |
153 async_test(function(t) | |
154 { | |
155 var e1 = document.createElement(tagName); | |
156 var e2 = document.createElement(tagName); | |
157 e1.controls = true; | |
158 e1.src = uniqueSrc(); | |
159 e1.preload = 'auto'; | |
160 e1.oncanplay = t.step_func(function() | |
161 { | |
162 assert_greater_than(e1.readyState, e1.HAVE_CURRENT_DATA, 'element 1
readyState'); | |
163 assert_equals(e2.readyState, e2.HAVE_NOTHING, 'element 2 readyState'
); | |
164 e1.controller = new MediaController(); | |
165 e2.controller = e1.controller; | |
166 assert_false(e1.controller.paused, 'controller paused state before c
lick'); | |
167 assert_true(e1.paused, 'element 1 paused state before click'); | |
168 assert_true(e2.paused, 'element 2 paused state before click'); | |
169 e1.click(); | |
170 assert_true(e1.controller.paused, 'controller paused state after cli
ck'); | |
171 assert_true(e1.paused, 'element 1 paused state after click'); | |
172 assert_true(e2.paused, 'element 2 paused state after click'); | |
173 t.done(); | |
174 }); | |
175 }, tagName + ' activation behavior for playing media controller (with non-bl
ocked autoplaying-and-paused and blocked paused slaves)'); | |
176 | |
177 test(function() | |
178 { | |
179 var e = document.createElement(tagName); | |
180 e.controls = true; | |
181 assert_true(e.paused, 'paused state before click()'); | |
182 e.click(); | |
183 assert_false(e.paused, 'paused state after click()'); | |
184 }, tagName + ' activation behavior for paused media element'); | |
185 | |
186 test(function() | |
187 { | |
188 var e = document.createElement(tagName); | |
189 e.controls = true; | |
190 e.play(); | |
191 assert_false(e.paused, 'paused state before click()'); | |
192 e.click(); | |
193 assert_true(e.paused, 'paused state after click()'); | |
194 }, tagName + ' activation behavior for playing media element'); | |
195 | |
196 test(function() | |
197 { | |
198 var e = document.createElement(tagName); | |
199 e.controls = true; | |
200 e.onclick = function(ev) { ev.preventDefault(); }; | |
201 assert_true(e.paused, 'paused state before click()'); | |
202 e.click(); | |
203 assert_true(e.paused, 'paused state after click()'); | |
204 }, tagName + ' activation behavior for canceled event'); | |
205 | |
206 test(function() | |
207 { | |
208 var e = document.createElement(tagName); | |
209 assert_true(e.paused, 'paused state before click()'); | |
210 e.click(); | |
211 assert_true(e.paused, 'paused state after click()'); | |
212 }, tagName + ' activation behavior without controls'); | |
213 } | |
214 | |
215 activation_behavior_test('audio', findMediaFile('audio', 'content/test')); | |
216 activation_behavior_test('video', findMediaFile('video', 'content/test')); | |
217 </script> | |
OLD | NEW |