| Index: third_party/WebKit/LayoutTests/media/autoplay-when-visible.html
|
| diff --git a/third_party/WebKit/LayoutTests/media/autoplay-when-visible.html b/third_party/WebKit/LayoutTests/media/autoplay-when-visible.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2e84b2d6a0af5c965c372c291b11832c530eb745
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/media/autoplay-when-visible.html
|
| @@ -0,0 +1,97 @@
|
| +<!DOCTYPE html>
|
| +<title>Test behaviour of autoplay muted videos with regards to visibility</title>
|
| +<script src="../resources/testharness.js"></script>
|
| +<script src="../resources/testharnessreport.js"></script>
|
| +<script src="media-file.js"></script>
|
| +<body>
|
| +<script>
|
| + window.internals.settings.setMediaPlaybackRequiresUserGesture(true);
|
| + window.internals.runtimeFlags.autoplayMutedVideosEnabled = true;
|
| +
|
| + async_test(function(t) {
|
| + // Create a video off screen.
|
| + {
|
| + var video = document.createElement('video');
|
| + video.id = 'offscreen';
|
| + video.src = findMediaFile('video', 'content/test');
|
| + video.muted = true;
|
| + video.autoplay = true;
|
| + video.loop = true;
|
| + video.style.position = 'absolute';
|
| + video.style.top = '-10000px';
|
| + document.body.appendChild(video);
|
| + }
|
| +
|
| + // Create a video in screen.
|
| + {
|
| + var video = document.createElement('video');
|
| + video.id = 'inscreen';
|
| + video.src = findMediaFile('video', 'content/test');
|
| + video.muted = true;
|
| + video.autoplay = true;
|
| + video.loop = true;
|
| + document.body.appendChild(video);
|
| + }
|
| +
|
| + // Create an audio in screen.
|
| + {
|
| + var audio = document.createElement('audio');
|
| + audio.src = findMediaFile('audio', 'content/test');
|
| + audio.muted = true;
|
| + audio.autoplay = true;
|
| + audio.loop = true;
|
| + audio.controls = true;
|
| + document.body.appendChild(audio);
|
| + }
|
| +
|
| + // Create offscreen video without autoplay.
|
| + {
|
| + var video = document.createElement('video');
|
| + video.id = 'offscreen-no-autoplay';
|
| + video.src = findMediaFile('video', 'content/test');
|
| + video.muted = true;
|
| + video.loop = true;
|
| + video.style.position = 'absolute';
|
| + video.style.top = '-10000px';
|
| + document.body.appendChild(video);
|
| + }
|
| +
|
| + var inscreen = document.querySelector('#inscreen');
|
| + var offscreen = document.querySelector('#offscreen');
|
| + var offscreenNoAutoplay = document.querySelector('#offscreen-no-autoplay');
|
| + var audio = document.querySelector('audio');
|
| +
|
| + inscreen.addEventListener('playing', t.step_func(function() {
|
| + // The offscreen videos shouldn't play.
|
| + assert_true(offscreen.paused);
|
| + assert_true(offscreenNoAutoplay.paused);
|
| + assert_false(inscreen.paused);
|
| + assert_true(audio.paused, 'audio should not play');
|
| +
|
| + // Both autoplay videos should have loaded.
|
| + assert_greater_than_equal(inscreen.readyState, HTMLMediaElement.HAVE_ENOUGH_DATA);
|
| + assert_greater_than_equal(offscreen.readyState, HTMLMediaElement.HAVE_ENOUGH_DATA);
|
| +
|
| + // Move video in screen.
|
| + offscreen.style.top = '0px';
|
| +
|
| + offscreen.addEventListener('playing', t.step_func(function() {
|
| + // Both autoplay videos should now play.
|
| + assert_false(inscreen.paused);
|
| + assert_false(offscreen.paused);
|
| + assert_true(offscreenNoAutoplay.paused);
|
| + assert_true(audio.paused, 'audio should not play');
|
| +
|
| + // Call to play() should succeed regardless of visibility.
|
| + offscreenNoAutoplay.play();
|
| + offscreenNoAutoplay.addEventListener('playing', t.step_func_done(function() {
|
| + assert_false(inscreen.paused);
|
| + assert_false(offscreen.paused);
|
| + assert_false(offscreenNoAutoplay.paused);
|
| + assert_true(audio.paused, 'audio should not play');
|
| + }));
|
| + }));
|
| + }));
|
| + });
|
| +</script>
|
| +</body>
|
|
|