<html>
<head>
<script>

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

function log(a)
{
    alert(a + "");
}

function runTest()
{
    if (!window.testRunner) {
        log("Test only designed to be run under DumpRenderTree or WebKitTestRunner");
        return;
    }

    localStorage.setItem("testItem", "Persistent item!");
    log("Persistent localStorage testItem is: " + localStorage.getItem("testItem"));
    
    testRunner.setPrivateBrowsingEnabled(true);
    testRunner.setCanOpenWindows();
    
    window.location.href = "resources/private-browsing-1.html"
}

</script>
</head>
<body onload="runTest();">
This is a test to make sure that when private browsing is on changes to local storage are not persistent.
<div id="logger"></div>
</body>
</html>
