tor-browser

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

idbcursor-direction.any.js (1867B)


      1 // META: global=window,worker
      2 // META: title=IDBCursor.direction
      3 // META: script=resources/support.js
      4 
      5 'use strict';
      6 
      7 function cursor_direction(constant, dir) {
      8  let db;
      9  let t = async_test('IDBCursor.direction - ' + dir);
     10  let expected = dir ? dir : 'next';
     11 
     12  let open_rq = createdb(t);
     13 
     14  open_rq.onupgradeneeded = function(e) {
     15    db = e.target.result;
     16    t.add_cleanup(function() {
     17      db.close();
     18      indexedDB.deleteDatabase(db.name);
     19    });
     20 
     21    let objStore = db.createObjectStore('test');
     22 
     23    objStore.add('data', 'key');
     24  };
     25 
     26  open_rq.onsuccess = t.step_func(function(e) {
     27    let cursor_rq;
     28    let count = 0;
     29    let os = db.transaction('test', 'readonly').objectStore('test');
     30    if (dir)
     31      cursor_rq = os.openCursor(undefined, dir);
     32    else
     33      cursor_rq = os.openCursor();
     34 
     35    cursor_rq.onsuccess = t.step_func(function(e) {
     36      let cursor = e.target.result;
     37 
     38      assert_equals(cursor.direction, constant, 'direction constant');
     39      assert_equals(cursor.direction, expected, 'direction');
     40      assert_readonly(cursor, 'direction');
     41 
     42      count++;
     43      if (count >= 2)
     44        t.done();
     45    });
     46 
     47    let cursor_rq2 = db.transaction('test', 'readonly')
     48                         .objectStore('test')
     49                         .openCursor(undefined, constant);
     50 
     51    cursor_rq2.onsuccess = t.step_func(function(e) {
     52      let cursor = e.target.result;
     53 
     54      assert_equals(
     55          cursor.direction, constant, 'direction constant (second try)');
     56      assert_equals(cursor.direction, expected, 'direction (second try)');
     57      assert_readonly(cursor, 'direction');
     58 
     59      count++;
     60      if (count >= 2)
     61        t.done();
     62    });
     63  });
     64 }
     65 
     66 cursor_direction('next');
     67 cursor_direction('next', 'next');
     68 cursor_direction('prev', 'prev');
     69 cursor_direction('nextunique', 'nextunique');
     70 cursor_direction('prevunique', 'prevunique');