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

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

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

function finish()
{
    if (window.layoutTestController)
        layoutTestController.notifyDone()
}

function runTest()
{
    if (!window.sessionStorage) {
        log("window.sessionStorage DOES NOT exist");
        finish();
        return;
    }
    
    log("Setting FOO using the index setter.");
    sessionStorage["FOO"] = "BAR";
    log("Reading FOO:");
    log(sessionStorage.FOO);
    log(sessionStorage["FOO"]);
    log(sessionStorage.getItem("FOO"));
    log("");
    
    log("Setting FOO again, using setItem.");
    sessionStorage.setItem("FOO", "BAZ");
    log("Reading FOO:");
    log(sessionStorage.FOO);
    log(sessionStorage["FOO"]);
    log(sessionStorage.getItem("FOO"));
    log("");

    log("Setting FOO again, using the index setter.");
    sessionStorage["FOO"] = "BAT";
    log("Reading FOO:");
    log(sessionStorage.FOO);
    log(sessionStorage["FOO"]);
    log(sessionStorage.getItem("FOO"));
    log("");
    
    log("Setting FOO again, using property-slot syntax");
    sessionStorage.FOO = "BATMAN";
    log("Reading FOO:");
    log(sessionStorage.FOO);
    log(sessionStorage["FOO"]);
    log(sessionStorage.getItem("FOO"));
    log("");
    
    log("Removing FOO, then trying to read it");
    sessionStorage.removeItem("FOO");
    log("Reading FOO:");
    log(sessionStorage.FOO);
    log(sessionStorage["FOO"]);
    log(sessionStorage.getItem("FOO"));
    log("");
    
    finish();
}

</script>
</head>
<body onload="runTest();">
This is a test to make sure you can get and set values in SessionStorage by index.<br>
<div id="logger"></div>
</body>
</html>
