<!DOCTYPE html>
<html>
<head>
<title>Ping</title>
<script src="resources/utilities.js"></script>
<script>

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

if (location.protocol != "https:")
    location = "https://127.0.0.1:8443/navigation/ping-attribute/anchor-cross-origin-from-https.html"

var testCalled = false;

function test() {
    if (!testCalled) {
        if (window.testRunner && window.internals) {
            testRunner.dumpAsText();
            internals.settings.setHyperlinkAuditingEnabled(true);
            testRunner.waitUntilDone();
        }
        testCalled = true;
        return;
    }

    clickElement(document.getElementById("a"));
}

</script>
</head>
</script>
</head>
<body onload="test();">
<img src="../resources/delete-ping.py" onload="test();" onerror="test();"></img>
<a id="a" href="../resources/check-ping.py" ping="http://localhost:8000/navigation/resources/save-ping.py?test=/navigation/ping-attribute/anchor-cross-origin-from-https.html">Navigate and send ping</a>
</body></html>
