| <!DOCTYPE html> | |
| <meta charset=utf-8> | |
| <body> | |
| <script src="/resources/testharness.js" | |
| type="text/javascript{{GET[in-iframe]}}"></script> | |
| <script src="/resources/testharnessreport.js" | |
| type="text/javascript{{GET[in-iframe]}}"></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="/permissions-policy/resources/permissions-policy.js"></script> | |
| <script> | |
| 'use strict'; | |
| async function getDisplayMedia(constraints) { | |
| await test_driver.bless('transient activation for getDisplayMedia()'); | |
| return navigator.mediaDevices.getDisplayMedia(constraints); | |
| } | |
| async function testGDM({audio, video}) { | |
| let stream; | |
| try { | |
| stream = await getDisplayMedia({audio, video}); | |
| if (stream.getVideoTracks().length == 0) { | |
| throw Error(`requested video track must be present with ` + | |
| `audio ${audio} and video ${video}, or fail`); | |
| } | |
| } finally { | |
| if (stream) { | |
| stream.getTracks().forEach(track => track.stop()); | |
| } | |
| } | |
| } | |
| if (page_loaded_in_iframe()) { | |
| test_driver.set_test_context(window.parent); | |
| } | |
| const cross_domain = get_host_info().HTTPS_REMOTE_ORIGIN; | |
| run_all_fp_tests_allow_self( | |
| cross_domain, | |
| 'display-capture', | |
| 'NotAllowedError', | |
| async () => { | |
| await testGDM({audio: true}); | |
| } | |
| ); | |
| </script> | |
| </body> |