<script>

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

function log(msg) {
    document.getElementById("logger").innerHTML += msg + "<br>";
}

function loaded()
{
    // Make a 512k character string, which computes as 1mb of payload.
    var object = "12345678";
    for (var i = 0; i < 16; ++i)
        object += object;
    
    log("The total payload is currently 60+mb. Pushing a 1mb object brings that 61+mb.");

    try {
        history.pushState(0, 0, object);
        log("It fit.");
    } catch (e) {
        log("Unexpected exception pushing 1mb:" + e);  
    }
    
    log("The total payload is currently 61+mb. Replacing the last 1mb with 2mb brings that to 62+mb.");

    object += object;
    try {
        history.replaceState(0, 0, object);
        log("It fit.");
    } catch (e) {
        log("Unexpected exception replacing 1mb with 2mb:" + e);  
    }

    log("The total payload is currently 62+mb. Replacing the last 2mb with 4mb brings that to 64+mb, and should not fit.");

    object += object;
    try {
        history.replaceState(0, 0, object);
        log("It fit, but should not have.");
    } catch (e) {
        log("Expected exception replacing 2mb with 4mb:" + e);  
    }

    if (window.testRunner)
        testRunner.notifyDone();
}

window.onload = loaded;

</script>
<body>
<div id="logger"></div>
</body>
