if (this.importScripts) {
    importScripts('../../../resources/js-test.js');
    importScripts('shared.js');
}

description("Test read-only transactions in IndexedDB.");

indexedDBTest(prepareDatabase, setVersionDone);
function prepareDatabase()
{
    db = event.target.result;
    event.target.transaction.onabort = unexpectedAbortCallback;
    store = evalAndLog("store = db.createObjectStore('store')");
    evalAndLog("store.put('x', 'y')");
}

function setVersionDone()
{
    trans = evalAndLog("trans = db.transaction('store')");
    evalAndExpectException("trans.objectStore('store').put('a', 'b')", "0", "'ReadOnlyError'");

    trans = evalAndLog("trans = db.transaction('store')");
    evalAndExpectException("trans.objectStore('store').delete('x')", "0", "'ReadOnlyError'");

    trans = evalAndLog("trans = db.transaction('store')");
    cur = evalAndLog("cur = trans.objectStore('store').openCursor()");
    cur.onsuccess = gotCursor;
    cur.onerror = unexpectedErrorCallback;
}

function gotCursor()
{
    shouldBeFalse("!event.target.result");
    evalAndExpectException("event.target.result.delete()", "0", "'ReadOnlyError'");

    finishJSTest();
}
