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 <!-- TODO(philipj): Convert test to testharness.js. crbug.com/588956 |
| 6 (Please avoid writing new tests using video-test.js) --> |
5 <script src=video-test.js></script> | 7 <script src=video-test.js></script> |
6 | 8 |
7 <script> | 9 <script> |
8 var seekCount = 0; | 10 var seekCount = 0; |
9 var playCount = 0; | 11 var playCount = 0; |
10 | 12 |
11 function play() | 13 function play() |
12 { | 14 { |
13 if (video.readyState < HTMLMediaElement.HAVE_METADATA) { | 15 if (video.readyState < HTMLMediaElement.HAVE_METADATA) { |
14 setTimeout(play, 100); | 16 setTimeout(play, 100); |
15 return; | 17 return; |
16 } | 18 } |
17 | 19 |
18 if (++playCount > 1) | 20 if (++playCount > 1) |
19 return; | 21 return; |
20 | 22 |
21 consoleWrite("<br><em>++ seek to near the end, wait for 'seeked'
event to announce loop.</em>"); | 23 consoleWrite("<br><em>++ seek to near the end, wait for 'seeked'
event to announce loop.</em>"); |
22 testExpected("video.paused", false); | 24 testExpected("video.paused", false); |
23 | 25 |
24 // Pause playback so the movie can't possibly loop before the se
eked event fires | 26 // Pause playback so the movie can't possibly loop before the se
eked event fires |
25 run("video.pause()"); | 27 run("video.pause()"); |
26 waitForEvent("seeked", seeked); | 28 waitForEvent("seeked", seeked); |
27 run("video.currentTime = video.duration - 0.4"); | 29 run("video.currentTime = video.duration - 0.4"); |
28 consoleWrite(""); | 30 consoleWrite(""); |
29 } | 31 } |
30 | 32 |
31 function seeked() | 33 function seeked() |
32 { | 34 { |
33 switch (++seekCount) | 35 switch (++seekCount) |
34 { | 36 { |
35 case 1: | 37 case 1: |
36 consoleWrite("<br><em>++ first seek completed, beginning
playback.</em>"); | 38 consoleWrite("<br><em>++ first seek completed, beginning
playback.</em>"); |
37 testExpected("video.paused", true); | 39 testExpected("video.paused", true); |
38 testExpected("video.ended", false); | 40 testExpected("video.ended", false); |
39 run("video.play()"); | 41 run("video.play()"); |
40 consoleWrite(""); | 42 consoleWrite(""); |
41 break; | 43 break; |
42 case 2: | 44 case 2: |
43 consoleWrite("<br><em>++ second seek completed because v
ideo looped, toggle 'loop' and seek to near end again.</em>"); | 45 consoleWrite("<br><em>++ second seek completed because v
ideo looped, toggle 'loop' and seek to near end again.</em>"); |
44 testExpected("video.paused", false); | 46 testExpected("video.paused", false); |
45 testExpected("video.ended", false); | 47 testExpected("video.ended", false); |
46 run("video.pause()"); | 48 run("video.pause()"); |
47 | 49 |
48 testExpected("mediaElement.currentTime", 0, '>='); | 50 testExpected("mediaElement.currentTime", 0, '>='); |
49 | 51 |
50 // don't use "testExpected()" so we won't log the actual
duration as the floating point result may differ with different engines | 52 // 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); | 53 reportExpected(mediaElement.currentTime < mediaElement.d
uration, "mediaElement.currentTime", "<", "mediaElement.duration", mediaElement.
currentTime); |
52 run("video.loop = false"); | 54 run("video.loop = false"); |
53 run("video.currentTime = video.duration - 0.4"); | 55 run("video.currentTime = video.duration - 0.4"); |
54 consoleWrite(""); | 56 consoleWrite(""); |
55 break; | 57 break; |
56 case 3: | 58 case 3: |
57 consoleWrite("<br><em>++ third seek completed, beginning
playback for the last time.</em>"); | 59 consoleWrite("<br><em>++ third seek completed, beginning
playback for the last time.</em>"); |
58 testExpected("video.paused", true); | 60 testExpected("video.paused", true); |
59 testExpected("video.ended", false); | 61 testExpected("video.ended", false); |
60 run("video.play()"); | 62 run("video.play()"); |
61 consoleWrite(""); | 63 consoleWrite(""); |
62 break; | 64 break; |
63 default: | 65 default: |
64 failTest("Video should have only seeked three times."); | 66 failTest("Video should have only seeked three times."); |
65 break; | 67 break; |
66 | 68 |
67 } | 69 } |
68 } | 70 } |
69 | 71 |
70 function ended() | 72 function ended() |
71 { | 73 { |
72 consoleWrite("<br><em>++ played to end and stopped.</em>"); | 74 consoleWrite("<br><em>++ played to end and stopped.</em>"); |
73 testExpected("video.ended", true); | 75 testExpected("video.ended", true); |
74 | 76 |
75 // don't use "testExpected()" so we won't log the actual duratio
n as the floating point result may differ with different engines | 77 // 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); | 78 reportExpected(mediaElement.currentTime == mediaElement.duration
, "mediaElement.currentTime", "==", "mediaElement.duration", mediaElement.curren
tTime); |
77 | 79 |
78 consoleWrite(""); | 80 consoleWrite(""); |
79 endTest(); | 81 endTest(); |
80 } | 82 } |
81 | 83 |
82 function start() | 84 function start() |
83 { | 85 { |
84 findMediaElement(); | 86 findMediaElement(); |
85 | 87 |
86 consoleWrite("<em>++ Test setting/removing the attribute.</em>")
; | 88 consoleWrite("<em>++ Test setting/removing the attribute.</em>")
; |
87 testExpected("video.getAttribute('loop')", null); | 89 testExpected("video.getAttribute('loop')", null); |
88 testExpected("video.loop", false); | 90 testExpected("video.loop", false); |
89 | 91 |
90 run("video.loop = true"); | 92 run("video.loop = true"); |
91 testExpected("video.loop", true); | 93 testExpected("video.loop", true); |
92 testExpected("video.getAttribute('loop')", null, "!="); | 94 testExpected("video.getAttribute('loop')", null, "!="); |
93 | 95 |
94 run("video.removeAttribute('loop')"); | 96 run("video.removeAttribute('loop')"); |
95 testExpected("video.loop", false); | 97 testExpected("video.loop", false); |
96 | 98 |
97 waitForEvent('pause'); | 99 waitForEvent('pause'); |
98 waitForEvent('play', play); | 100 waitForEvent('play', play); |
99 waitForEvent("ended", ended); | 101 waitForEvent("ended", ended); |
100 | 102 |
101 consoleWrite("<br><em>++ Set 'loop' to true and begin playing.</
em>"); | 103 consoleWrite("<br><em>++ Set 'loop' to true and begin playing.</
em>"); |
102 var mediaFile = findMediaFile("video", "content/test"); | 104 var mediaFile = findMediaFile("video", "content/test"); |
103 run("video.loop = true"); | 105 run("video.loop = true"); |
104 video.src = mediaFile; | 106 video.src = mediaFile; |
105 consoleWrite(""); | 107 consoleWrite(""); |
106 } | 108 } |
107 </script> | 109 </script> |
108 | 110 |
109 </head> | 111 </head> |
110 <body> | 112 <body> |
111 <video controls autoplay ></video> | 113 <video controls autoplay ></video> |
112 <p><b>Test looping by:</b> | 114 <p><b>Test looping by:</b> |
113 <ol> | 115 <ol> |
114 <li>Play to end with 'loop' set to true.</li> | 116 <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> | 117 <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> | 118 <li>Set 'loop' to false and play again.</li> |
117 <li>Verify that 'ended' event fires.</li> | 119 <li>Verify that 'ended' event fires.</li> |
118 </ol> | 120 </ol> |
119 </p> | 121 </p> |
120 <script>start()</script> | 122 <script>start()</script> |
121 </body> | 123 </body> |
122 </html> | 124 </html> |
OLD | NEW |