<!DOCTYPE html>
<title>IDBFactory.deleteDatabase() - success event</title>
<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
<link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBFactory-deleteDatabase-IDBOpenDBRequest-DOMString-name">
<meta name=assert title="If the steps above are successful, the implementation must set the result of the request to undefined and fire a success event at the request. The event must implement the IDBVersionChangeEvent interface and have oldVersion set to database version and have the newVersion property set to null.">
<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(document.title, {timeout: 10000}), undefined, 9)

    open_rq.onupgradeneeded = function(e) {
        db = e.target.result
        db.createObjectStore('os')
    }
    open_rq.onsuccess = function(e) {
        db.close()

        var delete_rq = window.indexedDB.deleteDatabase(db.name)
        delete_rq.onerror = fail(this, "Unexpected delete_rq.error event")
        delete_rq.onsuccess = this.step_func( function (e) {
            assert_equals(e.oldVersion, 9, "oldVersion")
            assert_equals(e.newVersion, null, "newVersion")
            assert_equals(e.target.result, undefined, "result")
            assert_true(e instanceof IDBVersionChangeEvent, "e instanceof IDBVersionChangeEvent")
            this.done()
        })
    }
</script>

<div id=log></div>
