| <!DOCTYPE html> |
| <title>Test for autoplay of whitelisted frames</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="media-controls.js"></script> |
| <body> |
| <script> |
| |
| test(function() { |
| assert_true(!!window.internals |
| && !!internals.settings, |
| "This test only works when run as a layout test!"); |
| }, "Prerequisites to running the rest of the tests"); |
| |
| internals.settings.setAutoplayPolicy('user-gesture-required'); |
| internals.settings.setWebAppScope( |
| document.URL.substring(0, document.URL.lastIndexOf('/') + 1) |
| ); |
| |
| testRunner.setAutoplayAllowed(true); |
| |
| function createMediaElement(type) { |
| var e = document.createElement(type); |
| e.src = type == 'audio' ? 'content/test.oga' : 'content/test.ogv'; |
| return e; |
| } |
| |
| function createVideoElement() { |
| return createMediaElement('video'); |
| } |
| |
| function createAudioElement() { |
| return createMediaElement('audio'); |
| } |
| |
| async_test(function(t) { |
| var e = createVideoElement(); |
| e.autoplay = true; |
| document.body.appendChild(e); |
| |
| var expectedEvents = [ 'canplay', 'play', 'playing']; |
| var eventWatcher = new EventWatcher(t, e, expectedEvents); |
| eventWatcher.wait_for(expectedEvents).then( |
| t.step_func_done(function() { |
| assert_false(e.paused); |
| })); |
| }, "Test that a video with an autoplay attribute autoplays when whitelisted."); |
| |
| promise_test(function() { |
| return createVideoElement().play(); |
| }, "Test that play() on a video succeeds without gesture when whitelisted."); |
| |
| async_test(function(t) { |
| var e = createAudioElement(); |
| e.autoplay = true; |
| document.body.appendChild(e); |
| |
| var expectedEvents = [ 'canplay', 'play', 'playing']; |
| var eventWatcher = new EventWatcher(t, e, expectedEvents); |
| eventWatcher.wait_for(expectedEvents).then( |
| t.step_func_done(function() { |
| assert_false(e.paused); |
| })); |
| }, "Test that an audio with an autoplay attribute autoplays when whitelisted."); |
| |
| promise_test(function() { |
| return createAudioElement().play(); |
| }, "Test that play() on an audio succeeds without gesture when whitelisted."); |
| |
| </script> |
| </body> |