blob: b685fc2e4632c2ae3d26faaf03f2b0c4e62adf42 [file] [log] [blame]
description("This test exercises IDBObjectStore.delete() followed by an abort to make sure the delete is un-done.");
indexedDBTest(prepareDatabase);
function log(message)
{
debug(message);
}
function logCount()
{
var req = objectStore.count();
req.onsuccess = function() {
debug("Count is " + req.result);
}
}
function done()
{
finishJSTest();
}
var database;
function prepareDatabase(event)
{
debug("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion);
var versionTransaction = event.target.transaction;
database = event.target.result;
database.createObjectStore("TestObjectStore").put("bar", "foo");
versionTransaction.onabort = function(event) {
debug("Initial upgrade versionchange transaction unexpected abort");
done();
}
versionTransaction.oncomplete = function(event) {
debug("Initial upgrade versionchange transaction complete");
continueTest1();
}
versionTransaction.onerror = function(event) {
debug("Initial upgrade versionchange transaction unexpected error" + event);
done();
}
}
function continueTest1()
{
var transaction = database.transaction("TestObjectStore", "readwrite");
transaction.objectStore("TestObjectStore").delete("foo").onsuccess = function()
{
var request = transaction.objectStore("TestObjectStore").get("foo");
request.onsuccess = function()
{
debug("After delete, record for \"foo\" has value: " + request.result);
transaction.abort();
}
}
transaction.onabort = function(event) {
debug("readwrite transaction aborted");
continueTest2();
}
transaction.oncomplete = function(event) {
debug("readwrite transaction unexpected complete");
done();
}
transaction.onerror = function(event) {
debug("readwrite transaction unexpected error");
done();
}
}
function continueTest2()
{
var transaction = database.transaction("TestObjectStore", "readonly");
var request = transaction.objectStore("TestObjectStore").get("foo");
request.onsuccess = function()
{
debug("Record for \"foo\" has final value: " + request.result);
}
transaction.onabort = function(event)
{
debug("readonly transaction unexpected abort");
done();
}
transaction.oncomplete = function(event)
{
debug("readonly transaction complete");
done();
}
transaction.onerror = function(event)
{
debug("readonly transaction unexpected error");
done();
}
}