chromium/third_party/blink/web_tests/storage/indexeddb/resources/create-object-store-options.js

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

description("Test IndexedDB's createObjectStore's various options");

indexedDBTest(prepareDatabase, setVersionComplete);
function prepareDatabase()
{
    db = event.target.result;

    evalAndLog("db.createObjectStore('a', {keyPath: 'a'})");
    evalAndLog("db.createObjectStore('b')");

    debug("db.createObjectStore('c', {autoIncrement: true});");
    db.createObjectStore('c', {autoIncrement: true});
}

function setVersionComplete()
{
    trans = evalAndLog("trans = db.transaction(['a', 'b'], 'readwrite')");
    shouldBeEqualToString("trans.mode", "readwrite");

    req = evalAndLog("trans.objectStore('a').put({'a': 0})");
    req.onsuccess = putB;
    req.onerror = unexpectedErrorCallback;

    evalAndExpectExceptionClass("db.createObjectStore('d', 'bar');", "TypeError");
    evalAndExpectExceptionClass("db.createObjectStore('e', false);", "TypeError");
}

function putB()
{
    req = evalAndLog("trans.objectStore('b').put({'a': 0}, 0)");  // OOPS
    req.onsuccess = getA;
    req.onerror = unexpectedErrorCallback;
}

function getA()
{
    req = evalAndLog("trans.objectStore('a').get(0)");
    req.onsuccess = getB;
    req.onerror = unexpectedErrorCallback;
}

function getB()
{
    shouldBe("event.target.result.a", "{a: 0}");

    req = evalAndLog("trans.objectStore('b').get(0)");
    req.onsuccess = checkB;
    req.onerror = unexpectedErrorCallback;
}

function checkB()
{
    shouldBe("event.target.result.a", "{a: 0}");

    finishJSTest();
}