<!DOCTYPE html>
<title>IDBObjectStore.openCursor() - iterate through 100 objects</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
    var open_rq = createdb(async_test())

    open_rq.onupgradeneeded = function(e) {
        db = e.target.result;
        var store = db.createObjectStore("store");

        for (var i=0; i < 100; i++)
            store.add("record_" + i, i);
    };

    open_rq.onsuccess = function(e) {
        var count = 0
        var txn = db.transaction("store")

        txn.objectStore("store")
           .openCursor().onsuccess = this.step_func(function(e)
        {
            if (e.target.result) {
                count += 1;
                e.target.result.continue()
            }
        })

        txn.oncomplete = this.step_func(function() {
            assert_equals(count, 100);
            this.done()
        })
    }

</script>

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