<!DOCTYPE html>
<script src="../../fast/js/resources/js-test-pre.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>
<script src=../../fast/js/resources/js-test-post.js></script>
