|  | <!DOCTYPE html> | 
|  | <title>IDBCursor.source</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> | 
|  | setup({ explicit_done: true }); | 
|  |  | 
|  | var db; | 
|  | var open_rq = indexedDB.open('testdb-' + new Date().getTime()); | 
|  | open_rq.onupgradeneeded = function(e) { | 
|  | db = e.target.result; | 
|  | var objStore = db.createObjectStore("my_objectstore"); | 
|  | objStore.createIndex("my_index", ""); | 
|  |  | 
|  | objStore.add("data",  1); | 
|  | objStore.add("data2", 2); | 
|  | }; | 
|  |  | 
|  | function cursor_source(name, stringified_object, cursor_rq) { | 
|  | var cursor; | 
|  |  | 
|  | cursor_rq.onsuccess = this.step_func(function(e) { | 
|  | if (!e.target.result) { | 
|  | return; | 
|  | } | 
|  | cursor = e.target.result; | 
|  | assert_readonly(cursor, 'source'); | 
|  |  | 
|  | // Direct try | 
|  | assert_true(cursor.source instanceof Object, "source isobject"); | 
|  | assert_equals(cursor.source + "", stringified_object, "source"); | 
|  | assert_equals(cursor.source.name, name, "name"); | 
|  |  | 
|  | cursor.continue(); | 
|  | }); | 
|  |  | 
|  | cursor_rq.transaction.oncomplete = this.step_func(function(e) { | 
|  | this.done(); | 
|  | }); | 
|  |  | 
|  | cursor_rq.transaction.onerror = this.step_func(function(e) { | 
|  | assert_unreached("Transaction got error. " + (e.target.error ? e.target.error.name : "unknown")); | 
|  | }); | 
|  | } | 
|  |  | 
|  | open_rq.onsuccess = function() { | 
|  | async_test(document.title + ' - IDBObjectStore').step(function() { | 
|  | cursor_source.call(this, "my_objectstore", "[object IDBObjectStore]", db.transaction("my_objectstore") | 
|  | .objectStore("my_objectstore") | 
|  | .openCursor()); | 
|  | }); | 
|  |  | 
|  | async_test(document.title + ' - IDBIndex').step(function() { | 
|  | cursor_source.call(this, "my_index", "[object IDBIndex]", db.transaction("my_objectstore") | 
|  | .objectStore("my_objectstore") | 
|  | .index("my_index") | 
|  | .openCursor()); | 
|  | }); | 
|  |  | 
|  | done(); | 
|  | }; | 
|  |  | 
|  | </script> | 
|  |  | 
|  | <div id="log"></div> |