<!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-geolocation.html";
    const cross_origin_src =
      "https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;

    promise_test(async (t) => {
      await test_driver.set_permission(
        { name: "geolocation" },
        "granted",
        false
      );
      await new Promise(resolve => {
        navigator.geolocation.getCurrentPosition(resolve);
      })
    }, 'Feature-Policy header geolocation "self" allows the top-level document.');

    async_test((t) => {
      test_feature_availability(
        "geolocation",
        t,
        same_origin_src,
        expect_feature_available_default
      );
    }, 'Feature-Policy header geolocation "self" allows same-origin iframes.');

    async_test((t) => {
      test_feature_availability(
        "geolocation",
        t,
        cross_origin_src,
        expect_feature_unavailable_default
      );
    }, 'Feature-Policy header geolocation "self" disallows cross-origin iframes.');
  </script>
</body>
