<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../inspector/inspector-test.js"></script>
<script>

function onload()
{
    if (window.testRunner)
        testRunner.waitUntilDone();

    window.sessionStorage["inspector"] = "true";

    if (window.testRunner)
        testRunner.showWebInspector();
    runTest();
}

function test()
{
    function callback()
    {
        var storages = WebInspector.domStorageModel.storages();
        for (var i = 0; i < storages.length; ++i) {
            InspectorTest.addResult("SecurityOrigin: " + storages[i].securityOrigin);
            InspectorTest.addResult("IsLocalStorage: " + storages[i].isLocalStorage);
        }
        InspectorTest.completeTest();
    }
    InspectorBackend.runAfterPendingDispatches(callback);
}

</script>

</head>
<body onload="onload()">
<p>Tests that Web Inspector gets populated with DOM storages according to security origins found in the page.</p>
</body>
</html>
