| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <body> |
| <button id="button">User gesture</button> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="/common/get-host-info.sub.js"></script> |
| <script src="/feature-policy/resources/featurepolicy.js"></script> |
| <script> |
| 'use strict'; |
| |
| async function getDisplayMedia(constraints) { |
| const p = new Promise(r => button.onclick = r); |
| await test_driver.click(button); |
| await p; |
| return navigator.mediaDevices.getDisplayMedia(constraints); |
| } |
| |
| async function testGDM({audio, video}) { |
| let stream; |
| try { |
| stream = await getDisplayMedia({audio, video}); |
| if (stream.getVideoTracks().length == 0) { |
| throw {name: `requested video track must be present with ` + |
| `audio ${audio} and video ${video}, or fail`}; |
| } |
| } finally { |
| if (stream) { |
| stream.getTracks().forEach(track => track.stop()); |
| } |
| } |
| } |
| |
| const cross_domain = get_host_info().HTTPS_REMOTE_ORIGIN; |
| run_all_fp_tests_allow_self( |
| cross_domain, |
| 'display-capture', |
| 'NotAllowedError', |
| async () => { |
| await testGDM({video: true}); |
| await testGDM({audio: true, video: true}); |
| await testGDM({audio: true}); |
| } |
| ); |
| </script> |
| </body> |