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

const sub = 'https://{{domains[www]}}:{{ports[https][0]}}';
const same_origin_src =
  '/feature-policy/resources/feature-policy-idle-detection.html'
const same_origin_worker_frame_src =
    '/feature-policy/resources/feature-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', false);
});

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, same_origin_src,
      expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
   'in same-origin iframe using Feature policy "idle-detection".');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, same_origin_worker_frame_src,
      expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
   'in a worker in same-origin iframe using Feature policy "idle-detection".');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
      expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
   'in cross-origin iframe using Feature policy "idle-detection".');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, cross_origin_worker_frame_src,
      expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
   'in a worker in cross-origin iframe using Feature policy "idle-detection".');

</script>
</body>
