<!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 same_origin_src =
  '/feature-policy/resources/feature-policy-idle-detection.html'
const cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' +
  same_origin_src;

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

promise_test(async t => {
  await new IdleDetector().start()
},
  'Default "idle-detection" feature policy ["self"] ' +
  'allows the top-level document.');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, same_origin_src,
      expect_feature_available_default);
}, 'Default "idle-detection" feature policy ["self"] ' +
   'allows same-origin iframes.');

promise_test(async t => {
  test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
      expect_feature_unavailable_default);
}, 'Default "idle-detection" feature policy ["self"] ' +
   'disallows cross-origin iframes.');

</script>
</body>
