<!DOCTYPE html>
<meta charset=utf-8>
<body>
  <script src=/resources/testharness.js></script>
  <script src=/resources/testharnessreport.js></script>
  <script src=/common/get-host-info.sub.js></script>
  <script src=/feature-policy/resources/featurepolicy.js></script>
  <script>
  'use strict';

  async function gDM({audio, video}) {
    let stream;
    try {
      stream = await navigator.mediaDevices.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 gDM({video: true});
      await gDM({audio: true, video: true});
      await gDM({audio: true});
    }
  );
  </script>
</body>
