<!DOCTYPE html>
<html>
<head>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
</head>
<body>
    <script>
        var hash = document.location.hash;
        if (hash.length > 0)
            hash = hash.substring(1);

        var expected_referrer = "";
        if (hash === "origin")
            expected_referrer = "http://127.0.0.1:8000/";
        else if (hash === "unsafe-url")
            expected_referrer = "http://127.0.0.1:8000/security/referrer-policy-attribute-anchor-unsafe-url.html";
        else if (hash === "no-policy")
            expected_referrer = "http://127.0.0.1:8000/security/referrer-policy-attribute-no-policy.html";
        else if (hash === "origin-when-crossorigin")
            expected_referrer = "http://127.0.0.1:8000/";
        else if (hash === "no-referrer" ||
                 hash === "no-referrer-when-downgrade")
            expected_referrer = "";
        else
            throw new Error("Unexpected hash value!");

            throw new Error("Unexpected hash value!");

        test(function () {
            assert_equals(expected_referrer, document.referrer);
        }, "Referrer policy attribute on anchor element is applied: " + hash);
    </script>
</body>
</html>
