<!DOCTYPE html>
<head>
<title>Upgrade Insecure Requests: IFrames.</title>
<script src="/js-test-resources/testharness.js"></script>
<script src="/js-test-resources/testharnessreport.js"></script>

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
</head>
<body>
<script>
// This test is a bit of a hack. UPGRADE doesn't upgrade the port number, so we
// specify this non-existent URL ('http' over port 8443). If UPGRADE doesn't
// work, it won't load.
async_test(t => {
    var iframe = document.createElement('iframe');
    iframe.src = "HTtp://127.0.0.1:8443/security/resources/post-origin-to-parent.html";

    window.addEventListener('message', t.step_func(e => {
        if (e.source == iframe.contentWindow) {
            assert_equals("https://127.0.0.1:8443", e.data.origin);
            t.done();
        }
    }));

    document.body.appendChild(iframe);
}, "Same-host frames are upgraded.");

async_test(t => {
    var iframe = document.createElement('iframe');
    iframe.src = "hTtP://localhost:8443/security/resources/post-origin-to-parent.html";

    window.addEventListener('message', t.step_func(e => {
        if (e.source == iframe.contentWindow) {
            assert_equals("https://localhost:8443", e.data.origin);
            t.done();
        }
    }));

    document.body.appendChild(iframe);
}, "Cross-host frames are upgraded.");

async_test(t => {
    var iframe = document.createElement('iframe');
    iframe.srcdoc = "<a href='hTtP://127.0.0.1:8443/security/resources/post-origin-to-parent.html'>Navigate!</a>" +
               "<script>document.querySelector('a').click()</scr" + "ipt>";

    window.addEventListener('message', t.step_func(e => {
        if (e.source == iframe.contentWindow) {
            assert_equals("https://127.0.0.1:8443", e.data.origin);
            t.done();
        }
    }));

    document.body.appendChild(iframe);
}, "Upgrade policy cascades to nested, same-host frames.");
</script>
</body>
