<html>
<head>
<script src="resources/clearLocalStorage.js"></script>
<script>

if (window.layoutTestController)
    layoutTestController.dumpAsText();

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

function runTest()
{
    if (!window.localStorage) {
        log("window.localStorage DOES NOT exist");
        return;
    }
    
    log("Length is " + localStorage.length);
    log("Value for FOO is " + localStorage.getItem("FOO"));

    localStorage.setItem("FOO", "BAR");
    
    log("Length is " + localStorage.length);
    log("Value for FOO is " + localStorage.getItem("FOO"));
    log("Key for index 0 is " + localStorage.key(0));
    log("Key for index 1 is " + localStorage.key(1));
    log("Key for index -1 is " + localStorage.key(-1));
    
    localStorage.setItem("FOO", "BAZ");
    
    log("Length is " + localStorage.length);
    log("Value for FOO is " + localStorage.getItem("FOO"));
    
    localStorage.removeItem("FOO");
    
    log("Length is " + localStorage.length);
    log("Value for FOO is " + localStorage.getItem("FOO"));
}

</script>
</head>
<body onload="runTest();">
This test tries simple operations on localStorage<br>
<div id="logger"></div>
</body>
</html>
