<!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="/feature-policy/resources/featurepolicy.js"></script>
<script>
  "use strict";

  const same_origin_src =
    "/feature-policy/resources/feature-policy-screen-wakelock.html";
  const cross_origin_src =
    "https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;

  promise_test(async t => {
    await test_driver.set_permission(
        { name: 'screen-wake-lock' }, 'granted');
    await navigator.wakeLock.request('screen').then(lock => lock.release());
  }, 'Feature-Policy header {"screen-wake-lock" : ["*"]} allows the top-level document.');

  async_test(t => {
    test_feature_availability(
      'navigator.wakeLock.request("screen")',
      t,
      same_origin_src,
      expect_feature_available_default
    );
  }, 'Feature-Policy header {"screen-wake-lock" : ["*"]} allows same-origin iframes.');

  // Set allow="screen-wake-lock" on iframe element to delegate
  // 'screen-wake-lock' to cross origin subframe.
  async_test(t => {
    test_feature_availability(
      'navigator.wakeLock.request("screen")',
      t,
      cross_origin_src,
      expect_feature_available_default,
      'screen-wake-lock'
    );
  }, 'Feature-Policy header {"screen-wake-lock" : ["*"]} allows cross-origin iframes.');

</script>
</body>
