| OLD | NEW | 
| (Empty) |  | 
 |    1 <!DOCTYPE html> | 
 |    2 <title>IDBCursor asyncness</title> | 
 |    3 <link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal"> | 
 |    4 <script src="../../../resources/testharness.js"></script> | 
 |    5 <script src="../../../resources/testharnessreport.js"></script> | 
 |    6 <script src="support.js"></script> | 
 |    7  | 
 |    8 <script> | 
 |    9  | 
 |   10     var db, open; | 
 |   11  | 
 |   12     setup(function() { | 
 |   13         open = indexedDB.open('testdb-' + new Date().getTime()); | 
 |   14         open.onupgradeneeded = function(e) { | 
 |   15             db = e.target.result; | 
 |   16             var objStore = db.createObjectStore("test"); | 
 |   17             objStore.createIndex("index", ""); | 
 |   18  | 
 |   19             objStore.add("data",  1); | 
 |   20             objStore.add("data2", 2); | 
 |   21         }; | 
 |   22     }, | 
 |   23     { explicit_done: true }); | 
 |   24  | 
 |   25  | 
 |   26     open.onsuccess = function() { | 
 |   27  | 
 |   28  | 
 |   29         async_test(document.title + " - advance").step(function(e) { | 
 |   30             var count = 0; | 
 |   31             var rq = db.transaction("test").objectStore("test").openCursor(); | 
 |   32  | 
 |   33             rq.onsuccess = this.step_func(function(e) { | 
 |   34                 if (!e.target.result) { | 
 |   35                     assert_equals(count, 2, 'count'); | 
 |   36                     this.done(); | 
 |   37                     return; | 
 |   38                 } | 
 |   39                 var cursor = e.target.result; | 
 |   40  | 
 |   41                 switch(count) { | 
 |   42                     case 0: | 
 |   43                         assert_equals(cursor.value, "data") | 
 |   44                         assert_equals(cursor.key, 1) | 
 |   45                         cursor.advance(1) | 
 |   46                         assert_equals(cursor.value, "data") | 
 |   47                         assert_equals(cursor.key, 1) | 
 |   48                         break | 
 |   49  | 
 |   50                     case 1: | 
 |   51                         assert_equals(cursor.value, "data2") | 
 |   52                         assert_equals(cursor.key, 2) | 
 |   53                         cursor.advance(1) | 
 |   54                         assert_equals(cursor.value, "data2") | 
 |   55                         assert_equals(cursor.key, 2) | 
 |   56                         break | 
 |   57  | 
 |   58                     default: | 
 |   59                         assert_unreached("Unexpected count: " + count) | 
 |   60                 } | 
 |   61  | 
 |   62                 count++; | 
 |   63             }); | 
 |   64             rq.onerror = fail(this, "unexpected error") | 
 |   65         }); | 
 |   66  | 
 |   67  | 
 |   68         async_test(document.title + " - continue").step(function(e) { | 
 |   69             var count = 0; | 
 |   70             var rq = db.transaction("test").objectStore("test").index("index").o
     penCursor(); | 
 |   71  | 
 |   72             rq.onsuccess = this.step_func(function(e) { | 
 |   73                 if (!e.target.result) { | 
 |   74                     assert_equals(count, 2, 'count'); | 
 |   75                     this.done(); | 
 |   76                     return; | 
 |   77                 } | 
 |   78                 var cursor = e.target.result; | 
 |   79  | 
 |   80                 switch(count) { | 
 |   81                     case 0: | 
 |   82                         assert_equals(cursor.value, "data") | 
 |   83                         assert_equals(cursor.key,   "data") | 
 |   84                         assert_equals(cursor.primaryKey, 1) | 
 |   85                         cursor.continue("data2") | 
 |   86                         assert_equals(cursor.value, "data") | 
 |   87                         assert_equals(cursor.key,   "data") | 
 |   88                         assert_equals(cursor.primaryKey, 1) | 
 |   89                         break | 
 |   90  | 
 |   91                     case 1: | 
 |   92                         assert_equals(cursor.value, "data2") | 
 |   93                         assert_equals(cursor.key,   "data2") | 
 |   94                         assert_equals(cursor.primaryKey, 2) | 
 |   95                         cursor.continue() | 
 |   96                         assert_equals(cursor.value, "data2") | 
 |   97                         assert_equals(cursor.key,   "data2") | 
 |   98                         assert_equals(cursor.primaryKey, 2) | 
 |   99                         break | 
 |  100  | 
 |  101                     default: | 
 |  102                         assert_unreached("Unexpected count: " + count) | 
 |  103                 } | 
 |  104  | 
 |  105                 count++; | 
 |  106             }); | 
 |  107             rq.onerror = fail(this, "unexpected error") | 
 |  108         }); | 
 |  109  | 
 |  110  | 
 |  111         async_test(document.title + " - fresh advance still async").step(functio
     n(e) { | 
 |  112             var count = 0; | 
 |  113             var rq = db.transaction("test").objectStore("test").index("index").o
     penCursor(); | 
 |  114  | 
 |  115             rq.onsuccess = this.step_func(function(e) { | 
 |  116                 if (!e.target.result) { | 
 |  117                     assert_equals(count, 2, 'count'); | 
 |  118                     this.done(); | 
 |  119                     return; | 
 |  120                 } | 
 |  121                 var cursor = e.target.result; | 
 |  122                 cursor.advance(1) | 
 |  123  | 
 |  124                 switch(count) { | 
 |  125                     case 0: | 
 |  126                         assert_equals(cursor.value, "data") | 
 |  127                         assert_equals(cursor.key,   "data") | 
 |  128                         assert_equals(cursor.primaryKey, 1) | 
 |  129                         break | 
 |  130  | 
 |  131                     case 1: | 
 |  132                         assert_equals(cursor.value, "data2") | 
 |  133                         assert_equals(cursor.key,   "data2") | 
 |  134                         assert_equals(cursor.primaryKey, 2) | 
 |  135                         break | 
 |  136  | 
 |  137                     default: | 
 |  138                         assert_unreached("Unexpected count: " + count) | 
 |  139                 } | 
 |  140  | 
 |  141                 count++; | 
 |  142             }); | 
 |  143             rq.onerror = fail(this, "unexpected error") | 
 |  144         }); | 
 |  145  | 
 |  146  | 
 |  147         async_test(document.title + " - fresh continue still async").step(functi
     on(e) { | 
 |  148             var count = 0; | 
 |  149             var rq = db.transaction("test").objectStore("test").openCursor(); | 
 |  150  | 
 |  151             rq.onsuccess = this.step_func(function(e) { | 
 |  152                 if (!e.target.result) { | 
 |  153                     assert_equals(count, 2, 'count'); | 
 |  154                     this.done(); | 
 |  155                     return; | 
 |  156                 } | 
 |  157                 var cursor = e.target.result; | 
 |  158                 cursor.continue() | 
 |  159  | 
 |  160                 switch(count) { | 
 |  161                     case 0: | 
 |  162                         assert_equals(cursor.value, "data") | 
 |  163                         assert_equals(cursor.key, 1) | 
 |  164                         break | 
 |  165  | 
 |  166                     case 1: | 
 |  167                         assert_equals(cursor.value, "data2") | 
 |  168                         assert_equals(cursor.key, 2) | 
 |  169                         break | 
 |  170  | 
 |  171                     default: | 
 |  172                         assert_unreached("Unexpected count: " + count) | 
 |  173                 } | 
 |  174  | 
 |  175                 count++; | 
 |  176             }); | 
 |  177             rq.onerror = fail(this, "unexpected error") | 
 |  178         }); | 
 |  179  | 
 |  180         // Stop blocking the testing system from hereon | 
 |  181         done(); | 
 |  182     } | 
 |  183  | 
 |  184 </script> | 
 |  185  | 
 |  186 <div id=log></div> | 
| OLD | NEW |