<!DOCTYPE html>
<meta charset=utf-8>
<title>IDBDatabase.deleteObjectStore() - the object store is not reused</title>
<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=support.js></script>

<script>

var t = async_test(),
    keys = [],
    open_rq = createdb(t)

open_rq.onupgradeneeded = function(e) {
    var db = e.target.result

    var objStore = db.createObjectStore("resurrected", { autoIncrement: true, keyPath: "k" });
    objStore.add({k:5}).onsuccess = function(e) { keys.push(e.target.result); }
    objStore.add({}).onsuccess = function(e) { keys.push(e.target.result); }
    objStore.createIndex("idx", "i");
    assert_true(objStore.indexNames.contains("idx"));
    assert_equals(objStore.keyPath, "k", "keyPath");

    db.deleteObjectStore("resurrected");

    var objStore2 = db.createObjectStore("resurrected", { autoIncrement: true });
    objStore2.add("Unicorns'R'us").onsuccess = function(e) { keys.push(e.target.result); };
    assert_false(objStore2.indexNames.contains("idx"), "index exist on new objstore");
    assert_equals(objStore2.keyPath, null, "keyPath");

    assert_throws("NotFoundError", function() { objStore2.index("idx"); });
}

open_rq.onsuccess = function(e) {
    assert_array_equals(keys, [5, 6, 1], "keys");
    t.done();
}

</script>

<div id="log"></div>
