<!DOCTYPE html>
<body>
<script src=/resources/testdriver.js></script>
<script src=/resources/testdriver-vendor.js></script>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/permissions-policy/resources/permissions-policy.js></script>
<script>
'use strict';

const sub = 'https://{{domains[www]}}:{{ports[https][0]}}';
const same_origin_src =
  '/permissions-policy/resources/permissions-policy-idle-detection.html'
const same_origin_worker_frame_src =
    '/permissions-policy/resources/permissions-policy-idle-detection-worker.html';
const cross_origin_src = sub + same_origin_src;
const cross_origin_worker_frame_src = sub + same_origin_worker_frame_src;

promise_setup(async () => {
  await test_driver.set_permission({ name: 'idle-detection' }, 'granted');
});

promise_test(async t => {
  await new IdleDetector().start();
},
  'Permissions-Policy idle-detection=* explicity set by top-level ' +
  'frame allows the top-level document.');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, same_origin_src,
      expect_feature_available_default);
}, 'Permissions-Policy idle-detection=* explicity set by top-level ' +
   'frame allows same-origin iframes.');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, same_origin_worker_frame_src,
      expect_feature_available_default);
}, 'Permissions-Policy idle-detection=* explicity set by top-level ' +
   'frame allows workers in same-origin iframes.');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
      expect_feature_available_default);
}, 'Permissions-Policy idle-detection=* explicity set by top-level ' +
   'frame allows cross-origin iframes.');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, cross_origin_worker_frame_src,
      expect_feature_available_default);
}, 'Permissions-Policy idle-detection=* explicity set by top-level ' +
   'frame allows workers in cross-origin iframes.');

fetch_tests_from_worker(new Worker(
  'resources/idle-detection-allowed-by-permissions-policy-worker.js'))

</script>
</body>
