<!DOCTYPE HTML>
<html>
<head>
<script src="/js-test-resources/js-test.js"></script>
<script>
description("Checking transmission of Beacons involving cookies.");

window.jsTestIsAsync = true;

function test() {
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
        //testRunner.dumpPingLoaderCallbacks();
    }
    try {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "../../cookies/resources/setCookies.cgi", false);
        xhr.setRequestHeader("SET-COOKIE", "hello=world;path=/");
        xhr.send(null);
        if (xhr.status != 200) {
            testFailed("cookie not set");
            finishJSTest();
        }
    } catch (e) {
        testFailed("cookie not set");
        finishJSTest();
    }

    shouldBeTrue('navigator.sendBeacon("resources/save-beacon.py?name=cookie", "Blip");');
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "resources/check-beacon.py?name=cookie");
    xhr.onload = function () {
        var lines = xhr.responseText.split("\n");
        for (var i in lines)
            testPassed(lines[i]);
        finishJSTest();
    };
    xhr.onerror = function () {
        testFailed("Unable to fetch beacon status");
        finishJSTest();
    };

    xhr.send();
}
</script>
</head>
<body onload="test();">
</body>
</html>
