<!DOCTYPE html>

<head>
  <script src=/resources/testharness.js></script>
  <script src=/resources/testharnessreport.js></script>
</head>

<body>
  <script>
  'use strict';

  const script = 'script';
  const testPage = `
  <${script}>
    parent.postMessage(document.fullscreenEnabled, '*');
  </${script}>
  `;

  function runTest(allow, expectation) {
    return new Promise((resolve, reject) => {
      window.onmessage = event => resolve(event.data);

      const iframe = document.createElement("iframe");
      iframe.allow = allow;
      iframe.src = `javascript: \`${testPage}\``;
      document.body.appendChild(iframe);

    }).then(enabled => {
      assert_equals(enabled, expectation);
    });
  }

  promise_test(() => runTest('fullscreen *', true),
      'allow attribute(container policy) can enable feature on javascript generated document');

  promise_test(() => runTest("fullscreen 'none'", false),
      'allow attribute(container policy) can disable feature on javascript generated document');

  </script>
</body>
