<html>
<head>
<link rel="stylesheet" href="../../../../fast/js/resources/js-test-style.css">
<script src="../../../../fast/js/resources/js-test-pre.js"></script>
<script src="../../../../fast/js/resources/js-test-post-function.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test API to view origins that have local storage and to delete local storage by origin.");

if (window.layoutTestController)
    layoutTestController.waitUntilDone();
    
function finishTest() {
    if (window.layoutTestController)
        layoutTestController.notifyDone();
}

function test()
{
    if (!window.localStorage) {
        testFailed("localStorage DOES NOT exist");
        return;
    }

    if (layoutTestController.originsWithLocalStorage().length > 0) {
        shouldBeEqualToString("layoutTestController.originsWithLocalStorage().toString()", "file__0");
        // We're just going to delete the existing origin, so we'll get one origin change notification.
        layoutTestController.observeStorageTrackerNotifications(1);
        // At this point, we're guaranteed to have one origin with local storage.
        layoutTestController.deleteLocalStorageForOrigin("file://");
    } else {
        testFailed("Ran with no origins with local storage.");
        layoutTestController.notifyDone();
    }

}

test();	

window.successfullyParsed = true;
isSuccessfullyParsed();
</script>
</body>
</html>
