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

Unified Diff: LayoutTests/media/video-loop.html

Issue 898883003: Fixes play seek when user sets loop after ended. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Responding to feedback Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | LayoutTests/media/video-loop-expected.txt » ('j') | Source/core/html/HTMLMediaElement.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: LayoutTests/media/video-loop.html
diff --git a/LayoutTests/media/video-loop.html b/LayoutTests/media/video-loop.html
index 4e44416754b58ee0508ab8abe7788dd0ffd2da00..73ed2f9bb8966ae92a9b7232491f8c303f031f2f 100644
--- a/LayoutTests/media/video-loop.html
+++ b/LayoutTests/media/video-loop.html
@@ -3,11 +3,11 @@
<head>
<script src=media-file.js></script>
<script src=video-test.js></script>
-
+
<script>
var seekCount = 0;
var playCount = 0;
-
+
function play()
{
if (video.readyState < HTMLMediaElement.HAVE_METADATA) {
@@ -27,7 +27,7 @@
run("video.currentTime = video.duration - 0.4");
consoleWrite("");
}
-
+
function seeked()
{
switch (++seekCount)
@@ -46,39 +46,58 @@
run("video.pause()");
testExpected("mediaElement.currentTime", 0, '>=');
-
- // don't use "testExpected()" so we won't log the actual duration as the floating point result may differ with different engines
- reportExpected(mediaElement.currentTime < mediaElement.duration, "mediaElement.currentTime", "<", "mediaElement.duration", mediaElement.currentTime);
+
+ // Don't use "testExpected()" so we won't log the actual duration as the floating point result may differ with different engines
+ reportExpected(mediaElement.currentTime < mediaElement.duration - 0.4, "mediaElement.currentTime", "<", "mediaElement.duration", mediaElement.currentTime);
run("video.loop = false");
run("video.currentTime = video.duration - 0.4");
consoleWrite("");
break;
case 3:
- consoleWrite("<br><em>++ third seek completed, beginning playback for the last time.</em>");
+ consoleWrite("<br><em>++ third seek completed, unset 'loop' and let play to the end.</em>");
testExpected("video.paused", true);
testExpected("video.ended", false);
run("video.play()");
consoleWrite("");
break;
+ case 4:
+ consoleWrite("<br><em>++ fourth seek completed.</em>");
+ // Don't use "testExpected()" so we won't log the actual duration as the floating point result may differ with different engines
+ reportExpected(mediaElement.currentTime < mediaElement.duration, "mediaElement.currentTime", "<", "mediaElement.duration", mediaElement.currentTime);
+ testExpected("video.loop", true);
+ testExpected("video.paused", false);
+ testExpected("video.ended", false);
+ consoleWrite("<br><em>++ Pausing now that test is over to prevent additional unwanted looping.</em>");
+ run("video.pause()");
+ consoleWrite("");
+ endTest();
default:
- failTest("Video should have only seeked three times.");
+ failTest("Video should have only seeked four times.");
break;
}
}
-
+
function ended()
{
consoleWrite("<br><em>++ played to end and stopped.</em>");
testExpected("video.ended", true);
- // don't use "testExpected()" so we won't log the actual duration as the floating point result may differ with different engines
+ // Don't use "testExpected()" so we won't log the actual duration as the floating point result may differ with different engines
reportExpected(mediaElement.currentTime == mediaElement.duration, "mediaElement.currentTime", "==", "mediaElement.duration", mediaElement.currentTime);
+ // Testing edge case where we set 'loop' after playback ends. Verifies fix for crbug.com/364442
+ consoleWrite("<br><em>++ with ended == true, set 'loop' attribute. This will cause ended == false; looping video cannot be 'ended', only paused.</em>");
+ testExpected("video.loop", false);
+ testExpected("video.paused", true);
+ run("video.loop = true");
+ testExpected("video.loop", true);
+ testExpected("video.ended", false);
+ testExpected("video.paused", true);
+ run("video.play()");
consoleWrite("");
- endTest();
}
-
+
function start()
{
findMediaElement();
@@ -115,6 +134,8 @@
<li>When 'seeked' event fires, verify that time has jumped back and movie is playing.</li>
<li>Set 'loop' to false and play again.</li>
<li>Verify that 'ended' event fires.</li>
+ <li>Set 'loop' to true now that video is ended. Call play again.</li>
+ <li>Verify 'seeked' event fires, verify that time has jumped back and movie is playing.</li>
</ol>
</p>
<script>start()</script>
« no previous file with comments | « no previous file | LayoutTests/media/video-loop-expected.txt » ('j') | Source/core/html/HTMLMediaElement.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698