chromium/third_party/blink/web_tests/storage/indexeddb/mozilla/resources/remove-objectstore.js

// original test:
// http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_remove_objectStore.html?force=1
// license of original test:
// " Any copyright is dedicated to the Public Domain.
//   http://creativecommons.org/publicdomain/zero/1.0/ "

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

description("Test IndexedDB deleting an object store");

indexedDBTest(prepareDatabase, checkObjectStore);
function prepareDatabase()
{
    db = event.target.result;
    shouldBe("db.objectStoreNames.length", "0");

    objectStoreName = evalAndLog("objectStoreName = 'Objects';");
    objectStore = evalAndLog("objectStore = db.createObjectStore(objectStoreName, { keyPath: 'foo' });");

    for (i = 0; i < 100; i++) {
        request = evalAndLog("request = objectStore.add({foo: i});");
        request.onerror = unexpectedErrorCallback;
    }
}

function checkObjectStore()
{
    shouldBe("db.objectStoreNames.length", "1");
    shouldBe("db.objectStoreNames.item(0)", "objectStoreName");
    evalAndLog("db.close()");

    evalAndLog("request = indexedDB.open(dbname, 2)");
    request.onerror = unexpectedErrorCallback;
    request.onblocked = unexpectedBlockedCallback;
    request.onupgradeneeded = inSetVersion2;
    request.onsuccess = setVersion3;
}

function inSetVersion2()
{
    db = event.target.result;
    evalAndLog("db.deleteObjectStore(objectStore.name);");
    shouldBe("db.objectStoreNames.length", "0");

    objectStore = evalAndLog("objectStore = db.createObjectStore(objectStoreName, { keyPath: 'foo' });");
    shouldBe("db.objectStoreNames.length", "1");
    shouldBe("db.objectStoreNames.item(0)", "objectStoreName");

    request = evalAndLog("request = objectStore.openCursor();");
    request.onerror = unexpectedErrorCallback;
    request.onsuccess = function(event) {
        shouldBe("event.target.result", "null");
        deleteSecondObjectStore();
    };
}

function deleteSecondObjectStore()
{
    evalAndLog("db.deleteObjectStore(objectStore.name);");
    shouldBe("db.objectStoreNames.length", "0");
}

function setVersion3()
{
    evalAndLog("db.close()");

    evalAndLog("request = indexedDB.open(dbname, 3)");
    request.onerror = unexpectedErrorCallback;
    request.onblocked = unexpectedBlockedCallback;
    request.onupgradeneeded = inSetVersion3;
    request.onsuccess = finishJSTest;
}

function inSetVersion3()
{
    db = event.target.result;
    objectStore = evalAndLog("objectStore = db.createObjectStore(objectStoreName, { keyPath: 'foo' });");
    request = evalAndLog("request = objectStore.add({foo:'bar'});");
    request.onerror = unexpectedErrorCallback;
    request.onsuccess = deleteThirdObjectStore;
}

function deleteThirdObjectStore()
{
    evalAndLog("db.deleteObjectStore(objectStoreName);");
}