<html>
<head>
<script>

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

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

function runTest()
{
    if (!window.localStorage) {
        log("window.localStorage DOES NOT exist");
        return;
    }
    localStorage.clear();
    
    window.log = log;
    
    window.localStorage.setItem("FOO", "BAR");
    log("Value for FOO is " + window.localStorage.getItem("FOO"));    
    window.open("resources/window-open-second.html");
    

}

</script>
</head>
<body onload="runTest();">
This is a test to make sure the localStorage object for multiple windows in the same security origin share the same global storage area.<br>
<div id="logger"></div>
</body>
</html>
