@@ -160,28 +160,35 @@ defineSuite([
160
160
var epoch = JulianDate . fromIso8601 ( '2015-11-01T00:00:00Z' ) ;
161
161
var clock = new Clock ( ) ;
162
162
163
- var element = loadVideo ( ) ;
163
+ // Since Chrome doesn't allow video playback without user
164
+ // interaction, we use a mock element.
165
+ var element = jasmine . createSpyObj ( 'MockVideoElement' , [ 'addEventListener' , 'removeEventListener' , 'play' , 'pause' ] ) ;
166
+ element . paused = false ;
167
+ element . play . and . callFake ( function ( ) {
168
+ this . paused = false ;
169
+ } ) ;
170
+ element . pause . and . callFake ( function ( ) {
171
+ this . paused = true ;
172
+ } ) ;
164
173
165
174
var videoSynchronizer = new VideoSynchronizer ( {
166
175
clock : clock ,
167
176
element : element ,
168
177
epoch : epoch
169
178
} ) ;
170
179
171
- return pollToPromise ( function ( ) {
172
- clock . shouldAnimate = false ;
173
- clock . tick ( ) ;
174
- return element . paused === true ;
175
- } ) . then ( function ( ) {
176
- clock . shouldAnimate = true ;
177
- clock . tick ( ) ;
178
- return element . paused === false ;
179
- } ) . then ( function ( ) {
180
- clock . shouldAnimate = false ;
181
- clock . tick ( ) ;
182
- return element . paused === true ;
183
- } ) . then ( function ( ) {
184
- videoSynchronizer . destroy ( ) ;
185
- } ) ;
180
+ clock . shouldAnimate = false ;
181
+ clock . tick ( ) ;
182
+ expect ( element . pause . calls . count ( ) ) . toEqual ( 1 ) ;
183
+
184
+ clock . shouldAnimate = true ;
185
+ clock . tick ( ) ;
186
+ expect ( element . play . calls . count ( ) ) . toEqual ( 1 ) ;
187
+
188
+ clock . shouldAnimate = false ;
189
+ clock . tick ( ) ;
190
+ expect ( element . pause . calls . count ( ) ) . toEqual ( 2 ) ;
191
+
192
+ videoSynchronizer . destroy ( ) ;
186
193
} ) ;
187
194
} ) ;
0 commit comments