<!DOCTYPE html>
<body>
  <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/media.js></script>
  <script src=/feature-policy/resources/featurepolicy.js></script>
  <script src=/feature-policy/resources/autoplay.js></script>
  <script>
  'use strict';
  const same_origin_src = '/feature-policy/resources/feature-policy-autoplay.html';
  const cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' +
    same_origin_src;
  const header = 'Feature-Policy header: autoplay "none"';

  async_test(t => {
    simulateGesture(t, () => {
      isAutoplayAllowed().then(t.step_func_done((result) => {
        assert_true(result);
      }));
    });
  }, header + ' has no effect on the top level document.');

  async_test(t => {
    simulateGesture(t, () => {
      test_feature_availability('autoplay', t, same_origin_src,
          expect_feature_unavailable_default);
    });
  }, header + ' disallows same-origin iframes.');

  async_test(t => {
    simulateGesture(t, () => {
      test_feature_availability('autoplay', t, cross_origin_src,
          expect_feature_unavailable_default,);
    });
  }, header + ' disallows cross-origin iframes.');
  </script>
</body>
