blob: af650afac11f70efd4e97a89083b8db23f4b9e22 [file] [log] [blame]
<html>
<head>
<script src="../inspector-test.js"></script>
<script src="indexeddb-test.js"></script>
<script>
function test()
{
var indexedDBModel = new WebInspector.IndexedDBModel(WebInspector.targetManager.mainTarget());
indexedDBModel.enable();
var mainFrameId = InspectorTest.resourceTreeModel.mainFrame.id;
var databaseName = "testDatabase1";
var securityOrigin = "http://127.0.0.1:8000";
var databaseId = new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, databaseName);
function dumpDatabase()
{
InspectorTest.addResult("Dumping database:");
var database = indexedDBModel._databases.get(databaseId);
if (!database)
return;
InspectorTest.addResult(database.databaseId.name);
InspectorTest.addResult(" intVersion: " + database.intVersion);
InspectorTest.addResult(" objectStores:");
var objectStoreNames = [];
for (var objectStoreName in database.objectStores)
objectStoreNames.push(objectStoreName);
objectStoreNames.sort();
for (var i = 0; i < objectStoreNames.length; ++i) {
var objectStore = database.objectStores[objectStoreNames[i]];
InspectorTest.addResult(" " + objectStore.name);
InspectorTest.addResult(" keyPath: " + JSON.stringify(objectStore.keyPath));
InspectorTest.addResult(" autoIncrement: " + objectStore.autoIncrement);
InspectorTest.addResult(" indexes: ");
var indexNames = [];
for (var indexName in objectStore.indexes)
indexNames.push(indexName);
indexNames.sort();
for (var j = 0; j < indexNames.length; ++j) {
var index = objectStore.indexes[indexNames[j]];
InspectorTest.addResult(" " + index.name);
InspectorTest.addResult(" keyPath: " + JSON.stringify(index.keyPath));
InspectorTest.addResult(" unique: " + index.unique);
InspectorTest.addResult(" multiEntry: " + index.multiEntry);
}
}
InspectorTest.addResult("");
}
InspectorTest.addSniffer(WebInspector.IndexedDBModel.prototype, "_updateOriginDatabaseNames", step2, false);
function step2()
{
InspectorTest.createDatabase(mainFrameId, databaseName, step3);
}
function step3()
{
InspectorTest.addSniffer(WebInspector.IndexedDBModel.prototype, "_updateOriginDatabaseNames", step4, false);
indexedDBModel.refreshDatabaseNames();
}
function step4()
{
dumpDatabase();
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step5);
indexedDBModel.refreshDatabase(databaseId);
}
function step5()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step5);
dumpDatabase();
InspectorTest.createObjectStore(mainFrameId, databaseName, "testObjectStore1", "test.key.path", true, step6);
}
function step6()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step7);
indexedDBModel.refreshDatabase(databaseId);
}
function step7()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step7);
dumpDatabase();
InspectorTest.createObjectStore(mainFrameId, databaseName, "testObjectStore2", null, false, step8);
}
function step8()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step9);
indexedDBModel.refreshDatabase(databaseId);
}
function step9()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step9);
dumpDatabase();
InspectorTest.createObjectStoreIndex(mainFrameId, databaseName, "testObjectStore2", "testIndexName1", "", false, true, step10);
}
function step10()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step11);
indexedDBModel.refreshDatabase(databaseId);
}
function step11()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step11);
dumpDatabase();
InspectorTest.createObjectStoreIndex(mainFrameId, databaseName, "testObjectStore2", "testIndexName2", ["key.path1", "key.path2"], true, false, step12);
}
function step12()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step13);
indexedDBModel.refreshDatabase(databaseId);
}
function step13()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step13);
dumpDatabase();
InspectorTest.deleteObjectStoreIndex(mainFrameId, databaseName, "testObjectStore2", "testIndexName2", step14);
}
function step14()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step15);
indexedDBModel.refreshDatabase(databaseId);
}
function step15()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step15);
dumpDatabase();
InspectorTest.deleteObjectStoreIndex(mainFrameId, databaseName, "testObjectStore2", "testIndexName1", step16);
}
function step16()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step17);
indexedDBModel.refreshDatabase(databaseId);
}
function step17()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step17);
dumpDatabase();
InspectorTest.deleteObjectStore(mainFrameId, databaseName, "testObjectStore2", step18);
}
function step18()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step19);
indexedDBModel.refreshDatabase(databaseId);
}
function step19()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step19);
dumpDatabase();
InspectorTest.deleteObjectStore(mainFrameId, databaseName, "testObjectStore1", step20);
}
function step20()
{
indexedDBModel.addEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step21);
indexedDBModel.refreshDatabase(databaseId);
}
function step21()
{
indexedDBModel.removeEventListener(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, step21);
dumpDatabase();
InspectorTest.deleteDatabase(mainFrameId, databaseName, step22);
}
function step22()
{
InspectorTest.completeTest();
}
}
</script>
</head>
<body onload="runTest()">
<p>Tests that database names are correctly loaded and saved in IndexedDBModel.</p>
</body>
</html>