OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src=media-file.js></script> | 4 <script src=media-file.js></script> |
5 <script src=video-test.js></script> | 5 <script src=video-test.js></script> |
6 | 6 |
7 <script> | 7 <script> |
8 var seekCount = 0; | 8 var seekCount = 0; |
9 var playCount = 0; | 9 var playCount = 0; |
10 | 10 |
11 function play() | 11 function play() |
12 { | 12 { |
13 if (video.readyState < HTMLMediaElement.HAVE_METADATA) { | 13 if (video.readyState < HTMLMediaElement.HAVE_METADATA) { |
14 setTimeout(play, 100); | 14 setTimeout(play, 100); |
15 return; | 15 return; |
16 } | 16 } |
17 | 17 |
18 if (++playCount > 1) | 18 if (++playCount > 1) |
19 return; | 19 return; |
20 | 20 |
21 consoleWrite("<br><em>++ seek to near the end, wait for 'seeked'
event to announce loop.</em>"); | 21 consoleWrite("<br><em>++ seek to near the end, wait for 'seeked'
event to announce loop.</em>"); |
22 testExpected("video.paused", false); | 22 testExpected("video.paused", false); |
23 | 23 |
24 // Pause playback so the movie can't possibly loop before the se
eked event fires | 24 // Pause playback so the movie can't possibly loop before the se
eked event fires |
25 run("video.pause()"); | 25 run("video.pause()"); |
26 waitForEvent("seeked", seeked); | 26 waitForEvent("seeked", seeked); |
27 run("video.currentTime = video.duration - 0.4"); | 27 run("video.currentTime = video.duration - 0.4"); |
28 consoleWrite(""); | 28 consoleWrite(""); |
29 } | 29 } |
30 | 30 |
31 function seeked() | 31 function seeked() |
32 { | 32 { |
33 switch (++seekCount) | 33 switch (++seekCount) |
34 { | 34 { |
35 case 1: | 35 case 1: |
36 consoleWrite("<br><em>++ first seek completed, beginning
playback.</em>"); | 36 consoleWrite("<br><em>++ first seek completed, beginning
playback.</em>"); |
37 testExpected("video.paused", true); | 37 testExpected("video.paused", true); |
38 testExpected("video.ended", false); | 38 testExpected("video.ended", false); |
39 run("video.play()"); | 39 run("video.play()"); |
40 consoleWrite(""); | 40 consoleWrite(""); |
41 break; | 41 break; |
42 case 2: | 42 case 2: |
43 consoleWrite("<br><em>++ second seek completed because v
ideo looped, toggle 'loop' and seek to near end again.</em>"); | 43 consoleWrite("<br><em>++ second seek completed because v
ideo looped, toggle 'loop' and seek to near end again.</em>"); |
44 testExpected("video.paused", false); | 44 testExpected("video.paused", false); |
45 testExpected("video.ended", false); | 45 testExpected("video.ended", false); |
46 run("video.pause()"); | 46 run("video.pause()"); |
47 | 47 |
48 testExpected("mediaElement.currentTime", 0, '>='); | 48 testExpected("mediaElement.currentTime", 0, '>='); |
49 | 49 |
50 // don't use "testExpected()" so we won't log the actual
duration as the floating point result may differ with different engines | 50 // Don't use "testExpected()" so we won't log the actual
duration as the floating point result may differ with different engines |
51 reportExpected(mediaElement.currentTime < mediaElement.d
uration, "mediaElement.currentTime", "<", "mediaElement.duration", mediaElement.
currentTime); | 51 reportExpected(mediaElement.currentTime < mediaElement.d
uration - 0.4, "mediaElement.currentTime", "<", "mediaElement.duration", mediaEl
ement.currentTime); |
52 run("video.loop = false"); | 52 run("video.loop = false"); |
53 run("video.currentTime = video.duration - 0.4"); | 53 run("video.currentTime = video.duration - 0.4"); |
54 consoleWrite(""); | 54 consoleWrite(""); |
55 break; | 55 break; |
56 case 3: | 56 case 3: |
57 consoleWrite("<br><em>++ third seek completed, beginning
playback for the last time.</em>"); | 57 consoleWrite("<br><em>++ third seek completed, unset 'lo
op' and let play to the end.</em>"); |
58 testExpected("video.paused", true); | 58 testExpected("video.paused", true); |
59 testExpected("video.ended", false); | 59 testExpected("video.ended", false); |
60 run("video.play()"); | 60 run("video.play()"); |
61 consoleWrite(""); | 61 consoleWrite(""); |
62 break; | 62 break; |
| 63 case 4: |
| 64 consoleWrite("<br><em>++ fourth seek completed.</em>"); |
| 65 // Don't use "testExpected()" so we won't log the actual
duration as the floating point result may differ with different engines |
| 66 reportExpected(mediaElement.currentTime < mediaElement.d
uration, "mediaElement.currentTime", "<", "mediaElement.duration", mediaElement.
currentTime); |
| 67 testExpected("video.loop", true); |
| 68 testExpected("video.paused", false); |
| 69 testExpected("video.ended", false); |
| 70 consoleWrite("<br><em>++ Pausing now that test is over t
o prevent additional unwanted looping.</em>"); |
| 71 run("video.pause()"); |
| 72 consoleWrite(""); |
| 73 endTest(); |
63 default: | 74 default: |
64 failTest("Video should have only seeked three times."); | 75 failTest("Video should have only seeked four times."); |
65 break; | 76 break; |
66 | 77 |
67 } | 78 } |
68 } | 79 } |
69 | 80 |
70 function ended() | 81 function ended() |
71 { | 82 { |
72 consoleWrite("<br><em>++ played to end and stopped.</em>"); | 83 consoleWrite("<br><em>++ played to end and stopped.</em>"); |
73 testExpected("video.ended", true); | 84 testExpected("video.ended", true); |
74 | 85 |
75 // don't use "testExpected()" so we won't log the actual duratio
n as the floating point result may differ with different engines | 86 // Don't use "testExpected()" so we won't log the actual duratio
n as the floating point result may differ with different engines |
76 reportExpected(mediaElement.currentTime == mediaElement.duration
, "mediaElement.currentTime", "==", "mediaElement.duration", mediaElement.curren
tTime); | 87 reportExpected(mediaElement.currentTime == mediaElement.duration
, "mediaElement.currentTime", "==", "mediaElement.duration", mediaElement.curren
tTime); |
77 | 88 |
| 89 // Testing edge case where we set 'loop' after playback ends. Ve
rifies fix for crbug.com/364442 |
| 90 consoleWrite("<br><em>++ with ended == true, set 'loop' attribut
e. This will cause ended == false; looping video cannot be 'ended', only paused.
</em>"); |
| 91 testExpected("video.loop", false); |
| 92 testExpected("video.paused", true); |
| 93 run("video.loop = true"); |
| 94 testExpected("video.loop", true); |
| 95 testExpected("video.ended", false); |
| 96 testExpected("video.paused", true); |
| 97 run("video.play()"); |
78 consoleWrite(""); | 98 consoleWrite(""); |
79 endTest(); | |
80 } | 99 } |
81 | 100 |
82 function start() | 101 function start() |
83 { | 102 { |
84 findMediaElement(); | 103 findMediaElement(); |
85 | 104 |
86 consoleWrite("<em>++ Test setting/removing the attribute.</em>")
; | 105 consoleWrite("<em>++ Test setting/removing the attribute.</em>")
; |
87 testExpected("video.getAttribute('loop')", null); | 106 testExpected("video.getAttribute('loop')", null); |
88 testExpected("video.loop", false); | 107 testExpected("video.loop", false); |
89 | 108 |
90 run("video.loop = true"); | 109 run("video.loop = true"); |
91 testExpected("video.loop", true); | 110 testExpected("video.loop", true); |
(...skipping 16 matching lines...) Expand all Loading... |
108 | 127 |
109 </head> | 128 </head> |
110 <body> | 129 <body> |
111 <video controls autoplay ></video> | 130 <video controls autoplay ></video> |
112 <p><b>Test looping by:</b> | 131 <p><b>Test looping by:</b> |
113 <ol> | 132 <ol> |
114 <li>Play to end with 'loop' set to true.</li> | 133 <li>Play to end with 'loop' set to true.</li> |
115 <li>When 'seeked' event fires, verify that time has jumped back and
movie is playing.</li> | 134 <li>When 'seeked' event fires, verify that time has jumped back and
movie is playing.</li> |
116 <li>Set 'loop' to false and play again.</li> | 135 <li>Set 'loop' to false and play again.</li> |
117 <li>Verify that 'ended' event fires.</li> | 136 <li>Verify that 'ended' event fires.</li> |
| 137 <li>Set 'loop' to true now that video is ended. Call play again.</li
> |
| 138 <li>Verify 'seeked' event fires, verify that time has jumped back an
d movie is playing.</li> |
118 </ol> | 139 </ol> |
119 </p> | 140 </p> |
120 <script>start()</script> | 141 <script>start()</script> |
121 </body> | 142 </body> |
122 </html> | 143 </html> |
OLD | NEW |