<!DOCTYPE html>
<title>Service Worker: 3P iframe for partitioned service workers</title>
<script src="./test-helpers.sub.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="./partitioned-utils.js"></script>


<body>
This iframe will register a service worker when it loads and then add its own
iframe that will attempt to navigate to a url that service worker will intercept
and use to resolve the service worker's internal Promise.
<script>

async function onLoad() {
  await setupServiceWorker();

  // When the SW's iframe finishes it'll post a message. This forwards it up to
  // the window.
  self.addEventListener('message', evt => {
      window.parent.postMessage(evt.data, '*');
  });

  // Now try to resolve the SW's promise. If we're partitioned then there
  // shouldn't be a promise to resolve.
  const resolve_frame_url = new URL('./partitioned-resolve.fakehtml?From3pFrame', self.location);
  const frame_resolve = await new Promise(resolve => {
    var frame = document.createElement('iframe');
    frame.src = resolve_frame_url;
    frame.onload = function() { resolve(frame); };
    document.body.appendChild(frame);
  });
}

self.addEventListener('load', onLoad);
</script>
</body>