| description("This test exercises the readonly attributes on an IDBObjectStore."); |
| |
| indexedDBTest(prepareDatabase); |
| |
| |
| function log(message) |
| { |
| debug(message); |
| } |
| |
| function done() |
| { |
| finishJSTest(); |
| } |
| |
| var database; |
| |
| function prepareDatabase(event) |
| { |
| debug("First upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion); |
| |
| var tx = event.target.transaction; |
| database = event.target.result; |
| |
| debug(tx + " - " + tx.mode); |
| debug(database); |
| |
| var os1 = database.createObjectStore('TestObjectStore1', { autoIncrement: true , keyPath: "foo" }); |
| var os2 = database.createObjectStore('TestObjectStore2', { autoIncrement: false }); |
| |
| debug(os1.name); |
| debug(os2.name); |
| debug(os1.autoIncrement); |
| debug(os2.autoIncrement); |
| debug(os1.keyPath); |
| debug(os2.keyPath); |
| debug(os1.transaction); |
| debug(os2.transaction); |
| debug(os1.transaction == tx); |
| debug(os2.transaction == tx); |
| debug(os1.transaction == os2.transaction); |
| |
| os2.createIndex("Foo index", "foo"); |
| os2.createIndex("Bar index", "bar"); |
| |
| var names = os2.indexNames; |
| debug("Object store has indexes:") |
| for (var i = 0; i < names.length; ++i) |
| debug(names[i]); |
| |
| os2.createIndex("Baz index", "baz"); |
| debug("After adding another, object store now has indexes:"); |
| names = os2.indexNames; |
| for (var i = 0; i < names.length; ++i) |
| debug(names[i]); |
| |
| tx.onabort = function(event) { |
| debug("First version change transaction unexpected abort"); |
| done(); |
| } |
| |
| tx.oncomplete = function(event) { |
| debug("First version change transaction completed"); |
| continueTest(); |
| } |
| |
| tx.onerror = function(event) { |
| debug("First version change transaction unexpected error - " + event); |
| done(); |
| } |
| } |
| |
| function continueTest() |
| { |
| var transaction = database.transaction("TestObjectStore2", "readonly"); |
| var objectStore = transaction.objectStore("TestObjectStore2"); |
| |
| debug("In a new transaction, object store has indexes:"); |
| var names = objectStore.indexNames; |
| for (var i = 0; i < names.length; ++i) |
| debug(names[i]); |
| |
| transaction.onabort = function(event) { |
| debug("readonly transaction unexpected abort" + event); |
| done(); |
| } |
| |
| transaction.oncomplete = function(event) { |
| debug("readonly transaction complete"); |
| done(); |
| } |
| |
| transaction.onerror = function(event) { |
| debug("readonly transaction unexpected error" + event); |
| done(); |
| } |
| } |
| |
| |