tor-browser

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

cursor-overloads.any.js (3605B)


      1 // META: title=IndexedDB
      2 // META: global=window,worker
      3 // META: script=resources/support.js
      4 
      5 'use strict';
      6 
      7 async_test(t => {
      8  let db;
      9  let trans;
     10  let store;
     11  let index;
     12  let request = createdb(t);
     13 
     14  request.onupgradeneeded = function(e) {
     15    db = e.target.result;
     16    store = db.createObjectStore('store');
     17    index = store.createIndex('index', 'value');
     18    store.put({value: 0}, 0);
     19    trans = request.transaction;
     20    trans.oncomplete = verifyOverloads;
     21  };
     22 
     23  function verifyOverloads() {
     24    trans = db.transaction('store', 'readonly');
     25    store = trans.objectStore('store');
     26    index = store.index('index');
     27 
     28    checkCursorDirection(store.openCursor(), 'next');
     29    checkCursorDirection(store.openCursor(0), 'next');
     30    checkCursorDirection(store.openCursor(0, 'next'), 'next');
     31    checkCursorDirection(store.openCursor(0, 'nextunique'), 'nextunique');
     32    checkCursorDirection(store.openCursor(0, 'prev'), 'prev');
     33    checkCursorDirection(store.openCursor(0, 'prevunique'), 'prevunique');
     34 
     35    checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), 'next');
     36    checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'next'), 'next');
     37    checkCursorDirection(
     38        store.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
     39    checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'prev'), 'prev');
     40    checkCursorDirection(
     41        store.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');
     42 
     43    checkCursorDirection(index.openCursor(), 'next');
     44    checkCursorDirection(index.openCursor(0), 'next');
     45    checkCursorDirection(index.openCursor(0, 'next'), 'next');
     46    checkCursorDirection(index.openCursor(0, 'nextunique'), 'nextunique');
     47    checkCursorDirection(index.openCursor(0, 'prev'), 'prev');
     48    checkCursorDirection(index.openCursor(0, 'prevunique'), 'prevunique');
     49 
     50    checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), 'next');
     51    checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'next'), 'next');
     52    checkCursorDirection(
     53        index.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
     54    checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'prev'), 'prev');
     55    checkCursorDirection(
     56        index.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');
     57 
     58    checkCursorDirection(index.openKeyCursor(), 'next');
     59    checkCursorDirection(index.openKeyCursor(0), 'next');
     60    checkCursorDirection(index.openKeyCursor(0, 'next'), 'next');
     61    checkCursorDirection(index.openKeyCursor(0, 'nextunique'), 'nextunique');
     62    checkCursorDirection(index.openKeyCursor(0, 'prev'), 'prev');
     63    checkCursorDirection(index.openKeyCursor(0, 'prevunique'), 'prevunique');
     64 
     65    checkCursorDirection(index.openKeyCursor(IDBKeyRange.only(0)), 'next');
     66    checkCursorDirection(
     67        index.openKeyCursor(IDBKeyRange.only(0), 'next'), 'next');
     68    checkCursorDirection(
     69        index.openKeyCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
     70    checkCursorDirection(
     71        index.openKeyCursor(IDBKeyRange.only(0), 'prev'), 'prev');
     72    checkCursorDirection(
     73        index.openKeyCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');
     74 
     75    t.done();
     76  }
     77 
     78  function checkCursorDirection(request, direction) {
     79    request.onsuccess = function(event) {
     80      assert_not_equals(
     81          event.target.result, null, 'Check the result is not null')
     82      assert_equals(
     83          event.target.result.direction, direction,
     84          'Check the result direction');
     85    };
     86  }
     87 }, 'Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor()');