<!DOCTYPE html>
<html>
<head>
<meta name='referrer' content='no-referrer-when-downgrade'>
<script src="/js-test-resources/js-test.js"></script>
</head>
<body>
<script>
description("Tests the behavior of no-referrer-when-downgrade referrer policy when cross origin from HTTPS to HTTP.");
jsTestIsAsync = true;

if (window.internals) {
    internals.settings.setAllowDisplayOfInsecureContent(true);
    internals.setResourceLoadStatisticsEnabled(false);
}

window.onmessage = function(event) {
    referrer = event.data.referrer;
    // Should be the empty string
    shouldBeEqualToString("referrer", "");
    if (window.internals)
        internals.setResourceLoadStatisticsEnabled(true);
    finishJSTest();
}

if (window.testRunner) {
    testRunner.setStatisticsShouldDowngradeReferrer(false, function () {
        let iframeElement = document.createElement("iframe");
        iframeElement.src = "http://localhost:8000/referrer-policy/resources/document.html";
        document.body.appendChild(iframeElement);
    });
}
</script>
</body>
</html>
