chromium/third_party/blink/web_tests/storage/indexeddb/deleteIndex-bug110792.html

<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<script src="resources/shared.js"></script>
<script>

description("Ensure IndexedDB's IDBObjectStore.deleteIndex() works if IDBIndex object has not been fetched - regression test for bug 110792.");

indexedDBTest(onFirstUpgradeNeeded, closeAndReOpen, {version: 1});

function onFirstUpgradeNeeded(evt)
{
    preamble(evt);
    evalAndLog("db = event.target.result");
    evalAndLog("store = db.createObjectStore('store')");
    evalAndLog("store.createIndex('index', 'keyPath')");
}

function closeAndReOpen()
{
    preamble();
    evalAndLog("db.close()");
    debug("");
    request = evalAndLog("indexedDB.open(dbname, 2)");
    request.onblocked = unexpectedBlockedCallback;
    request.onerror = unexpectedErrorCallback;
    request.onupgradeneeded = onSecondUpgradeNeeded;
    request.onsuccess = finishJSTest;
}

function onSecondUpgradeNeeded(evt)
{
    preamble(evt);
    evalAndLog("db = event.target.result");
    evalAndLog("store = event.target.transaction.objectStore('store')");
    // Do NOT add a call to store.index('index') here (e.g. to assert it exists)
    // or the bug disappears.
    evalAndLog("store.deleteIndex('index')");
    evalAndExpectException("store.index('index')", "DOMException.NOT_FOUND_ERR", "'NotFoundError'");
}

</script>