| <!DOCTYPE html> |
| <title>Test autoplay is allowed if the document is capturing</title> |
| <script src='../../resources/testharness.js'></script> |
| <script src='../../resources/testharnessreport.js'></script> |
| <body></body> |
| <script> |
| |
| function testAutoplay() { |
| const video = document.createElement('video'); |
| video.src = '../content/test.ogv'; |
| |
| return new Promise((resolve) => { |
| video.play().then(() => resolve(true), |
| (e) => resolve(e.name != 'NotAllowedError')); |
| }); |
| } |
| |
| async_test(t => { |
| t.add_cleanup(() => { |
| internals.settings.setAutoplayPolicy('no-user-gesture-required'); |
| }); |
| |
| internals.settings.setAutoplayPolicy('document-user-activation-required'); |
| |
| /* The capturing video element */ |
| let capturingVideo = document.createElement('video'); |
| |
| testAutoplay().then(t.step_func((success) => { |
| // We should not be able to autoplay without a user gesture. |
| assert_false(success); |
| |
| // Start capturing user media. |
| navigator.mediaDevices.getUserMedia({video: true}).then( |
| t.step_func(step2), t.unreached_func()); |
| })); |
| |
| function step2(stream) { |
| capturingVideo.srcObject = stream; |
| capturingVideo.play().then(t.step_func(step3), t.unreached_func()); |
| } |
| |
| function step3() { |
| testAutoplay().then(t.step_func((success) => { |
| // Autoplay should be enabled as we are capturing. |
| assert_true(success); |
| |
| capturingVideo.srcObject.getTracks()[0].stop(); |
| |
| testAutoplay().then(t.step_func_done((success) => { |
| // Autoplay should be disabled again. |
| assert_false(success); |
| })); |
| })); |
| } |
| }); |
| |
| </script> |