<!DOCTYPE html>
<html>
<head>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/common/get-host-info.sub.js"></script>
</head>
<body>
    <script>
const host = get_host_info();
const remoteBaseURL = host.HTTP_REMOTE_ORIGIN + window.location.pathname.replace(/\/[^\/]*$/, '/') ;
const localBaseURL = host.HTTP_ORIGIN + window.location.pathname.replace(/\/[^\/]*$/, '/') ;

function with_iframe(url) {
  return new Promise(function(resolve) {
      var frame = document.createElement('iframe');
      frame.src = url;
      frame.onload = function() { resolve(frame); };
      document.body.appendChild(frame);
    });
}

promise_test(async() => {
    const url = remoteBaseURL + "resources/iframe.py?corp=same-origin";

    await new Promise((resolve, reject) => {
        return fetch(url, { mode: "no-cors" }).then(reject, resolve);
    });

    const iframe = await with_iframe(url);
    return new Promise((resolve, reject) => {
        window.addEventListener("message", (event) => {
            if (event.data !== "pong") {
                reject(event.data);
                return;
            }
            resolve();
        }, false);
        iframe.contentWindow.postMessage("ping", "*");
    }).finally(() => {
        iframe.remove();
    });
}, "Load an iframe that has Cross-Origin-Resource-Policy header");
    </script>
</body>
</html>
