<!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 = 'Default "autoplay" feature policy ["self"]';

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

  async_test(t => {
    simulateGesture(t, () => {
      test_feature_availability('autoplay', t, same_origin_src,
          expect_feature_available_default);
    });
  }, header + ' allows 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>
