haikuwebkit/LayoutTests/storage/indexeddb/modern/abort-objectstore-info-priv...

76 lines
2.8 KiB
Plaintext

Explores the edge cases of what IDBObjectStore objects look like after a version change transaction that changed them aborts.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
connection1 = event.target.result;
objectStore1_1 = connection1.createObjectStore('objectStore1');
objectStore1_2 = connection1.createObjectStore('objectStore2');
objectStore1_2.createIndex('index', 'foo');
objectStore1_4 = connection1.createObjectStore('objectStore4');
objectStore1_4.createIndex('index', 'foo');
PASS connection1.version is 1
PASS connection1.objectStoreNames.length is 3
PASS objectStore1_1.indexNames.length is 0
PASS objectStore1_2.indexNames.length is 1
PASS objectStore1_4.indexNames.length is 1
connection1.close();
secondRequest = indexedDB.open(dbname, 2);
secondRequest.onupgradeneeded = secondUpgradeNeeded;
connection2 = event.target.result;
objectStore2_1 = secondRequest.transaction.objectStore('objectStore1');
objectStore2_2 = secondRequest.transaction.objectStore('objectStore2');
objectStore2_3 = connection2.createObjectStore('objectStore3');
objectStore2_4 = secondRequest.transaction.objectStore('objectStore4');
PASS connection2.version is 2
PASS connection2.objectStoreNames.length is 4
PASS objectStore2_1.indexNames.length is 0
PASS objectStore2_2.indexNames.length is 1
PASS objectStore2_3.indexNames.length is 0
PASS objectStore2_4.indexNames.length is 1
objectStore2_1.createIndex('index', 'foo');
objectStore2_2.deleteIndex('index');
objectStore2_3.createIndex('index', 'foo');
objectStore2_4.deleteIndex('index');
connection2.deleteObjectStore('objectStore4');
new_objectStore2_4 = connection2.createObjectStore('objectStore4');
new_objectStore2_4.createIndex('index1', 'foo');
new_objectStore2_4.createIndex('index2', 'bar');
PASS connection2.version is 2
PASS connection2.objectStoreNames.length is 4
PASS objectStore2_1.indexNames.length is 1
PASS objectStore2_2.indexNames.length is 0
PASS objectStore2_3.indexNames.length is 1
PASS new_objectStore2_4.indexNames.length is 2
secondRequest.transaction.abort();
connection2.close()
checkState():
PASS connection1.version is 1
PASS connection1.objectStoreNames.length is 3
PASS objectStore1_1.indexNames.length is 0
PASS objectStore1_2.indexNames.length is 1
PASS objectStore1_4.indexNames.length is 1
PASS connection2.version is 1
PASS connection2.objectStoreNames.length is 3
PASS objectStore2_1.indexNames.length is 0
PASS objectStore2_2.indexNames.length is 1
PASS objectStore2_3.indexNames.length is 0
PASS objectStore2_4.indexNames.length is 1
PASS new_objectStore2_4.indexNames.length is 0
PASS successfullyParsed is true
TEST COMPLETE