tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

idbcursor-direction-objectstore-keyrange.any.js (1687B)


      1 // META: global=window,worker
      2 // META: title=IDBCursor direction - object store with keyrange
      3 // META: script=resources/support.js
      4 
      5 // Spec: https://w3c.github.io/IndexedDB/#cursor-iteration-operation
      6 
      7 'use strict';
      8 
      9 let records = [1337, 'Alice', 'Bob', 'Greg', 'Åke', ['Anne']];
     10 let directions = ['next', 'prev', 'nextunique', 'prevunique'];
     11 let cases = [
     12  {dir: 'next', expect: ['Alice', 'Bob', 'Greg']},
     13  {dir: 'prev', expect: ['Greg', 'Bob', 'Alice']},
     14  {dir: 'nextunique', expect: ['Alice', 'Bob', 'Greg']},
     15  {dir: 'prevunique', expect: ['Greg', 'Bob', 'Alice']},
     16 ];
     17 
     18 cases.forEach(function(testcase) {
     19  let dir = testcase.dir;
     20  let expect = testcase.expect;
     21  indexeddb_test(
     22      function(t, db, tx) {
     23        let objStore = db.createObjectStore('test');
     24        for (let i = 0; i < records.length; i++)
     25          objStore.add(records[i], records[i]);
     26      },
     27      function(t, db) {
     28        let count = 0;
     29        let rq = db.transaction('test', 'readonly')
     30                     .objectStore('test')
     31                     .openCursor(IDBKeyRange.bound('AA', 'ZZ'), dir);
     32        rq.onsuccess = t.step_func(function(e) {
     33          let cursor = e.target.result;
     34          if (!cursor) {
     35            assert_equals(count, expect.length, 'cursor runs');
     36            t.done();
     37          }
     38          assert_equals(cursor.value, expect[count], 'cursor.value');
     39          count++;
     40          cursor.continue();
     41        });
     42        rq.onerror = t.step_func(function(e) {
     43          e.preventDefault();
     44          e.stopPropagation();
     45          assert_unreached('rq.onerror - ' + e.message);
     46        });
     47      },
     48      'IDBCursor direction - object store with keyrange - ' + dir);
     49 });