<html>
<head>
<script>

var secondWindowLog = "Logging from second window:<br>";

function log(a)
{
    secondWindowLog += a + "<br>";
}

function runTest()
{
    if (!window.localStorage) {
        log("window.localStorage DOES NOT exist");
        return;
    }
    
    log("Value for FOO is " + window.localStorage.getItem("FOO"));
    window.localStorage.setItem("FOO", "BAR-NEWWINDOW");
    log("Value for FOO after changing my own copy is " + window.localStorage.getItem("FOO"));
    
    log("Value for FOO in my opening window is " + window.opener.localStorage.getItem("FOO"));
    
    window.opener.log(secondWindowLog);
    
    if (window.testRunner)
        testRunner.notifyDone();
}

</script>
</head>
<body onload="runTest();">
This is a new window to make sure the localStorage object for an origin is shared between multiple windows.<br>
</body>
</html>
