|
1 function test_seek1(v, seekTime, is, ok, finish) { |
|
2 |
|
3 var startPassed = false; |
|
4 var endPassed = false; |
|
5 var seekFlagStart = false; |
|
6 var seekFlagEnd = false; |
|
7 var readonly = true; |
|
8 var completed = false; |
|
9 |
|
10 function startTest() { |
|
11 if (completed) |
|
12 return; |
|
13 ok(!v.seeking, "seeking should default to false"); |
|
14 try { |
|
15 v.seeking = true; |
|
16 readonly = v.seeking === false; |
|
17 } |
|
18 catch(e) { |
|
19 readonly = "threw exception: " + e; |
|
20 } |
|
21 is(readonly, true, "seeking should be readonly"); |
|
22 |
|
23 v.play(); |
|
24 v.currentTime=seekTime; |
|
25 seekFlagStart = v.seeking; |
|
26 } |
|
27 |
|
28 function seekStarted() { |
|
29 if (completed) |
|
30 return; |
|
31 ok(v.currentTime >= seekTime - 0.1, |
|
32 "Video currentTime should be around " + seekTime + ": " + v.currentTime + " (seeking)"); |
|
33 v.pause(); |
|
34 startPassed = true; |
|
35 } |
|
36 |
|
37 function seekEnded() { |
|
38 if (completed) |
|
39 return; |
|
40 |
|
41 var t = v.currentTime; |
|
42 // Since we were playing, and we only paused asynchronously, we can't be |
|
43 // sure that we paused before the seek finished, so we may have played |
|
44 // ahead arbitrarily far. |
|
45 ok(t >= seekTime - 0.1, "Video currentTime should be around " + seekTime + ": " + t + " (seeked)"); |
|
46 v.play(); |
|
47 endPassed = true; |
|
48 seekFlagEnd = v.seeking; |
|
49 } |
|
50 |
|
51 function playbackEnded() { |
|
52 if (completed) |
|
53 return; |
|
54 |
|
55 completed = true; |
|
56 ok(startPassed, "seeking event"); |
|
57 ok(endPassed, "seeked event"); |
|
58 ok(seekFlagStart, "seeking flag on start should be true"); |
|
59 ok(!seekFlagEnd, "seeking flag on end should be false"); |
|
60 finish(); |
|
61 } |
|
62 |
|
63 v.addEventListener("ended", playbackEnded, false); |
|
64 v.addEventListener("loadedmetadata", startTest, false); |
|
65 v.addEventListener("seeking", seekStarted, false); |
|
66 v.addEventListener("seeked", seekEnded, false); |
|
67 |
|
68 } |