Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/media/video-preload.html |
| diff --git a/third_party/WebKit/LayoutTests/media/video-preload.html b/third_party/WebKit/LayoutTests/media/video-preload.html |
| index c02767aa0a393508d90c49fff3259dbebe7ea557..11dbc8b097ef964a931f16342d95ea836a42e3bf 100644 |
| --- a/third_party/WebKit/LayoutTests/media/video-preload.html |
| +++ b/third_party/WebKit/LayoutTests/media/video-preload.html |
| @@ -1,147 +1,66 @@ |
| -<!DOCTYPE HTML> |
| - |
| -<html> |
| - <head> |
| - <script src=media-file.js></script> |
| - <!-- TODO(foolip): Convert test to testharness.js. crbug.com/588956 |
| - (Please avoid writing new tests using video-test.js) --> |
| - <script src=video-test.js></script> |
| - |
| - <script> |
| - var timer = null; |
| - var movieInfo = |
| - { |
| - current : -1, |
| - movies : |
| - [ |
| - { |
| - // should not buffer, 'preload' is 'none' |
| - preload : "none", |
| - shouldBuffer : false, |
| - autoPlay : false, |
| - playInsteadOfLoad : false, |
| - description : "until 'play()' is called", |
| - }, |
| - { |
| - // should buffer, because load() is called. |
| - preload : "none", |
| - shouldBuffer : true, |
| - autoPlay : false, |
| - playInsteadOfLoad : false, |
| - description : "because 'load()' is called", |
| - }, |
| - { |
| - // should buffer, because play() is called. |
| - preload : "none", |
| - shouldBuffer : true, |
| - autoPlay : false, |
| - playInsteadOfLoad : true, |
| - description : "because 'play()' is called", |
| - }, |
| - { |
| - preload : "metadata", |
| - shouldBuffer : true, |
| - autoPlay : false, |
| - playInsteadOfLoad : false, |
| - description : "", |
| - }, |
| - { |
| - preload : "auto", |
| - shouldBuffer : true, |
| - autoPlay : false, |
| - playInsteadOfLoad : false, |
| - description : "", |
| - }, |
| - { |
| - // should buffer because 'autoplay' is set |
| - preload : "none", |
| - shouldBuffer : true, |
| - autoPlay : true, |
| - playInsteadOfLoad : false, |
| - description : " because of 'autoplay'", |
| - }, |
| - ] |
| - }; |
| - var timer = null; |
| - |
| - function checkLoad() |
| - { |
| - var movie = movieInfo.movies[movieInfo.current]; |
| - |
| - logResult(true, "did not buffer automatically"); |
| - |
| - // start playback, which should force data to load |
| +<!DOCTYPE html> |
| +<title>Test media loading behaviour with different "preload" values.</title> |
| +<script src="../resources/testharness.js"></script> |
| +<script src="../resources/testharnessreport.js"></script> |
| +<script src="media-file.js"></script> |
| +<video></video> |
| +<script> |
| +async_test(function(t) { |
| + var movies = [ |
| + // should not buffer, "preload" is "none" (don't use "playInsteadOfLoad"). |
| + { preload : "none", shouldBuffer : false, autoPlay : false, playInsteadOfLoad : false }, |
|
fs
2016/06/28 08:56:42
Suggest dropping the space before the ':' ("preloa
Srirama
2016/06/29 17:27:46
Done.
|
| + // should buffer, because load() is called. |
| + { preload : "none", shouldBuffer : true, autoPlay : false, playInsteadOfLoad : false }, |
| + // should buffer, because play() is called. |
| + { preload : "none", shouldBuffer : true, autoPlay : false, playInsteadOfLoad : true }, |
| + { preload : "metadata", shouldBuffer : true, autoPlay : false, playInsteadOfLoad : false }, |
| + { preload : "auto", shouldBuffer : true, autoPlay : false, playInsteadOfLoad : false }, |
| + // should buffer because "autoplay" is set. |
| + { preload : "none", shouldBuffer : true, autoPlay : true, playInsteadOfLoad : false } |
| + ]; |
| + var timer = null; |
| + var movie = null; |
|
fs
2016/06/28 08:56:42
Could make this local where it's used. Or maybe re
Srirama
2016/06/29 13:27:07
You mean write a function like "check_video_preloa
fs
2016/06/29 13:35:18
Yes, that would be one way to do it. Could also ju
Srirama
2016/06/29 17:27:46
Done.
|
| + var movieIndex = -1; |
| + var video = document.querySelector("video"); |
| + video.onerror = t.step_func(function() {}); |
| + video.onloadstart = t.step_func(function() {}); |
| + video.onplay = t.step_func(function() {}); |
| + |
| + video.onloadedmetadata = t.step_func(function() { |
| + movie = movies[movieIndex]; |
| + clearTimeout(timer); |
| + assert_true(movie.shouldBuffer); |
| + openNextMovie(); |
| + }); |
| + |
| + openNextMovie(); |
| + |
| + function openNextMovie() { |
| + movieIndex++; |
| + movie = movies[movieIndex]; |
| + if (!movie) { |
| + t.done(); |
| + return; |
| + } |
| + |
| + video.setAttribute("preload", movie.preload); |
| + video.setAttribute("autoplay", movie.autoPlay); |
|
fs
2016/06/28 08:56:42
This is not equivalent, since 'autoplay' is a bool
Srirama
2016/06/29 17:27:46
Done.
|
| + video.src = findMediaFile("video", "content/test");; |
|
fs
2016/06/28 08:56:42
Nit: ;;
Srirama
2016/06/29 17:27:46
Done.
|
| + if (movieIndex > 0) { |
| + if (movie.playInsteadOfLoad) |
| + video.play(); |
| + else |
| + video.load(); |
| + } |
| + |
| + if (!movie.shouldBuffer) { |
| + timer = setTimeout(function() { |
| + var movie = movies[movieIndex]; |
| + // start playback, which should force data to load. |
| movie.shouldBuffer = true; |
| - run("video.play()"); |
| - } |
| - |
| - function loadedmetadata() |
| - { |
| - var movie = movieInfo.movies[movieInfo.current]; |
| - |
| - clearTimeout(timer); |
| - logResult(movie.shouldBuffer, "buffered automatically"); |
| - openNextMovie(); |
| - } |
| - |
| - function setupAttribute(attr, value) |
| - { |
| - if (value) |
| - run("video.setAttribute('" + attr + "', '" + value + "')"); |
| - else |
| - run("video.removeAttribute('" + attr + "')"); |
| - } |
| - |
| - function openNextMovie() |
| - { |
| - consoleWrite(""); |
| - |
| - movieInfo.current++; |
| - if (movieInfo.current >= movieInfo.movies.length) |
| - { |
| - endTest(); |
| - return; |
| - } |
| - |
| - var movie = movieInfo.movies[movieInfo.current]; |
| - var url = findMediaFile("video", "content/test"); |
| - var desc = "Will load with <em>'preload=" + movie.preload + "'</em>" |
| - + ", <b>should" + (movie.shouldBuffer ? "" : " not") + " </b> buffer automatically " |
| - + movie.description; |
| - consoleWrite(desc); |
| - |
| - setupAttribute('preload', movie.preload); |
| - setupAttribute('autoplay', movie.autoPlay); |
| - |
| - video.src = url; |
| - if (movieInfo.current > 0) { |
| - if (movie.playInsteadOfLoad) { |
| - run("video.play()"); |
| - } else { |
| - run("video.load()"); |
| - } |
| - } |
| - if (!movie.shouldBuffer) |
| - timer = setTimeout(checkLoad, 200); |
| - } |
| - |
| - function start() |
| - { |
| - findMediaElement(); |
| - |
| - waitForEvent("error"); |
| - waitForEvent("loadstart"); |
| - waitForEvent("play"); |
| - waitForEvent('loadedmetadata', loadedmetadata); |
| - |
| - openNextMovie(); |
| - } |
| - |
| - </script> |
| - </head> |
| - |
| - <body onload="start()"> |
| - <p>Test to see if media loads automatically when 'preload' is specified.</p> |
| - <video controls ></video> |
| - </body> |
| -</html> |
| + video.play(); |
| + }, 200); |
| + } |
| + } |
| +}); |
| +</script> |