<!DOCTYPE html>
<meta charset="utf-8">
<title>IDBIndex.getKey() - returns the record's primary key</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 db,
      t = async_test(document.title, {timeout: 10000});

    var open_rq = createdb(t);
    open_rq.onupgradeneeded = function(e) {
        db = e.target.result;
        var objStore = db.createObjectStore("test", { keyPath: "key" });
        objStore.createIndex("index", "data");

        assert_equals(objStore.indexNames[0], "index", "indexNames");
        assert_equals(objStore.indexNames.length, 1, "indexNames.length");
    };

    open_rq.onsuccess = function(e) {
        var objStore = db.transaction("test")
                   .objectStore("test");

        assert_equals(objStore.indexNames[0], "index", "indexNames (second)");
        assert_equals(objStore.indexNames.length, 1, "indexNames.length (second)");

        t.done();
    };
</script>

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