<!DOCTYPE html>
<meta name=timeout content=long>
<body>
<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-serial.html';
const cross_origin_src = sub + same_origin_src;
const same_origin_worker_frame_src =
    '/feature-policy/resources/feature-policy-serial-worker.html';
const cross_origin_worker_frame_src = sub + same_origin_worker_frame_src;
const header = 'Feature-Policy header {"serial" : ["*"]}';

promise_test(
    () => navigator.serial.getPorts(),
    header + ' allows the top-level document.');

async_test(t => {
  test_feature_availability('serial.getPorts()', t, same_origin_src,
      expect_feature_available_default);
}, header + ' allows same-origin iframes.');

async_test(t => {
  test_feature_availability('serial.getPorts()', t, same_origin_worker_frame_src,
      expect_feature_available_default);
}, header + ' allows workers in same-origin iframes.');

// Set allow="serial" on iframe element to delegate 'serial' to cross origin
// subframe.
async_test(t => {
  test_feature_availability('serial.getPorts()', t, cross_origin_src,
      expect_feature_available_default, 'serial');
}, header + ' allows cross-origin iframes.');

// Set allow="serial" on iframe element to delegate 'serial' to cross origin
// subframe.
async_test(t => {
  test_feature_availability('serial.getPorts()', t,
      cross_origin_worker_frame_src,
      expect_feature_available_default, 'serial');
}, header + ' allows workers in cross-origin iframes.');

fetch_tests_from_worker(new Worker(
    'resources/serial-allowed-by-feature-policy-worker.js'));
</script>
</body>
