<!doctype html>
<body>
  <script src=/resources/testharness.js></script>
  <script src=/resources/testharnessreport.js></script>
  <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
  <script>
    promise_test(async t => {
      let url = 'resources/topics-not-allowed-for-service-worker-fetch-helper.tentative.https.html';

      let r = await service_worker_unregister_and_register(t,
          'resources/fetch-topics.js', url);
      await wait_for_state(t, r.installing, 'activated');

      var popup_window = window.open("/common/blank.html");

      t.add_cleanup(async _=>{
        popup_window.close();
        await r.unregister();
      });

      // The current page isn't yet controlled by the service worker. Thus,
      // execute the actual test in a new page and let it post its result back
      // to this page.
      test_helper_popup_page_result = new Promise((resolve, reject) => {
        window.addEventListener('message', t.step_func((e) => {
          assert_equals(e.data.testResult,
                        'Topics fetch initiated from service worker did not include the topics header');
          resolve();
        }));
      });

      popup_window.location = url;
      await test_helper_popup_page_result;
    }, 'test that fetch(<url>, {browsingTopics: true}) from a service worker context will not include the topics header');
  </script>
</body>
