<!DOCTYPE html>
<meta charset="utf-8">
<title>Service Worker: XSL's base URL must be the response URL</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/test-helpers.sub.js?pipe=sub"></script>
<script>
// This test loads an XML document which is controlled a service worker. The
// document loads a stylesheet and a service worker responds with another URL.
// The stylesheet imports a relative URL to test that the base URL is the
// response URL from the service worker.
promise_test(async (t) => {
  const SCOPE = 'resources/xsl-base-url-iframe.xml';
  const SCRIPT = 'resources/xsl-base-url-worker.js';
  let worker;
  let frame;

  t.add_cleanup(() => {
    if (frame)
      frame.remove();
    service_worker_unregister(t, SCOPE);
  });

  const registration = await service_worker_unregister_and_register(
      t, SCRIPT, SCOPE);
  worker = registration.installing;
  await wait_for_state(t, worker, 'activated');

  frame = await with_iframe(SCOPE);
  assert_equals(frame.contentDocument.body.textContent, 'PASS');
}, 'base URL when service worker does respondWith(fetch(responseUrl))');
</script>
