Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: third_party/WebKit/LayoutTests/media/video-loop.html

Issue 2124223002: Convert video-[loop, double]* tests to testharness.js (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <title>Test video looping.</title>
3 <head> 3 <script src="../resources/testharness.js"></script>
4 <script src=media-file.js></script> 4 <script src="../resources/testharnessreport.js"></script>
5 <!-- TODO(foolip): Convert test to testharness.js. crbug.com/588956 5 <script src="media-file.js"></script>
6 (Please avoid writing new tests using video-test.js) --> 6 <video autoplay></video>
7 <script src=video-test.js></script> 7 <script>
8 // Test looping by:
9 // Play to end with "loop" set to true.
10 // When "seeked" event fires, verify that time has jumped back and movie is play ing.
11 // Set "loop" to false and play again.
12 // Verify that "ended" event fires.
13 async_test(function(t) {
14 var video = document.querySelector("video");
15 // Test setting/removing the attribute.
16 assert_equals(video.getAttribute("loop"), null);
17 assert_false(video.loop);
8 18
9 <script> 19 video.loop = true;
10 var seekCount = 0; 20 assert_true(video.loop);
11 var playCount = 0; 21 assert_not_equals(video.getAttribute("loop"), null);
12 22
13 function play() 23 video.removeAttribute("loop");
14 { 24 assert_false(video.loop);
15 if (video.readyState < HTMLMediaElement.HAVE_METADATA) {
16 setTimeout(play, 100);
17 return;
18 }
19 25
20 if (++playCount > 1) 26 video.onplay = t.step_func(function() {
21 return; 27 video.onplay = null;
28 assert_false(video.paused);
22 29
23 consoleWrite("<br><em>++ seek to near the end, wait for 'seeked' event to announce loop.</em>"); 30 // Pause playback so the movie can't possibly loop before the seeked eve nt fires.
24 testExpected("video.paused", false); 31 video.pause();
32 // seek to near the end, wait for "seeked" event to announce loop.
33 var seekCount = 0;
34 video.onseeked = t.step_func(function() {
35 switch (++seekCount) {
36 case 1:
37 // first seek completed, beginning playback.
38 assert_true(video.paused);
39 assert_false(video.ended);
40 video.play();
41 break;
42 case 2:
43 // second seek completed because video looped, toggle "loop" and seek to near end again.
44 assert_false(video.paused);
45 assert_false(video.ended);
46 video.pause();
47 assert_greater_than_equal(video.currentTime, 0);
48 assert_less_than(video.currentTime, video.duration);
49 video.loop = false;
50 video.currentTime = video.duration - 0.4;
51 break;
52 case 3:
53 // third seek completed, beginning playback for the last time.
54 assert_true(video.paused);
55 assert_false(video.ended);
56 video.play();
57 break;
58 }
59 });
25 60
26 // Pause playback so the movie can't possibly loop before the se eked event fires 61 video.currentTime = video.duration - 0.4;
27 run("video.pause()"); 62 });
28 waitForEvent("seeked", seeked);
29 run("video.currentTime = video.duration - 0.4");
30 consoleWrite("");
31 }
32 63
33 function seeked() 64 video.onended = t.step_func_done(function() {
34 { 65 assert_true(video.ended);
35 switch (++seekCount) 66 assert_equals(video.currentTime, video.duration);
36 { 67 });
37 case 1:
38 consoleWrite("<br><em>++ first seek completed, beginning playback.</em>");
39 testExpected("video.paused", true);
40 testExpected("video.ended", false);
41 run("video.play()");
42 consoleWrite("");
43 break;
44 case 2:
45 consoleWrite("<br><em>++ second seek completed because v ideo looped, toggle 'loop' and seek to near end again.</em>");
46 testExpected("video.paused", false);
47 testExpected("video.ended", false);
48 run("video.pause()");
49 68
50 testExpected("mediaElement.currentTime", 0, '>='); 69 // Set "loop" to true and begin playing.
51 70 video.loop = true;
52 // don't use "testExpected()" so we won't log the actual duration as the floating point result may differ with different engines 71 video.src = findMediaFile("video", "content/test");
53 reportExpected(mediaElement.currentTime < mediaElement.d uration, "mediaElement.currentTime", "<", "mediaElement.duration", mediaElement. currentTime); 72 });
54 run("video.loop = false"); 73 </script>
55 run("video.currentTime = video.duration - 0.4");
56 consoleWrite("");
57 break;
58 case 3:
59 consoleWrite("<br><em>++ third seek completed, beginning playback for the last time.</em>");
60 testExpected("video.paused", true);
61 testExpected("video.ended", false);
62 run("video.play()");
63 consoleWrite("");
64 break;
65 default:
66 failTest("Video should have only seeked three times.");
67 break;
68
69 }
70 }
71
72 function ended()
73 {
74 consoleWrite("<br><em>++ played to end and stopped.</em>");
75 testExpected("video.ended", true);
76
77 // don't use "testExpected()" so we won't log the actual duratio n as the floating point result may differ with different engines
78 reportExpected(mediaElement.currentTime == mediaElement.duration , "mediaElement.currentTime", "==", "mediaElement.duration", mediaElement.curren tTime);
79
80 consoleWrite("");
81 endTest();
82 }
83
84 function start()
85 {
86 findMediaElement();
87
88 consoleWrite("<em>++ Test setting/removing the attribute.</em>") ;
89 testExpected("video.getAttribute('loop')", null);
90 testExpected("video.loop", false);
91
92 run("video.loop = true");
93 testExpected("video.loop", true);
94 testExpected("video.getAttribute('loop')", null, "!=");
95
96 run("video.removeAttribute('loop')");
97 testExpected("video.loop", false);
98
99 waitForEvent('pause');
100 waitForEvent('play', play);
101 waitForEvent("ended", ended);
102
103 consoleWrite("<br><em>++ Set 'loop' to true and begin playing.</ em>");
104 var mediaFile = findMediaFile("video", "content/test");
105 run("video.loop = true");
106 video.src = mediaFile;
107 consoleWrite("");
108 }
109 </script>
110
111 </head>
112 <body>
113 <video controls autoplay ></video>
114 <p><b>Test looping by:</b>
115 <ol>
116 <li>Play to end with 'loop' set to true.</li>
117 <li>When 'seeked' event fires, verify that time has jumped back and movie is playing.</li>
118 <li>Set 'loop' to false and play again.</li>
119 <li>Verify that 'ended' event fires.</li>
120 </ol>
121 </p>
122 <script>start()</script>
123 </body>
124 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698