tor-browser

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

idbindex_openKeyCursor.any.js (2490B)


      1 // META: global=window,worker
      2 // META: title=IDBIndex.openKeyCursor()
      3 // META: script=resources/support.js
      4 
      5 'use strict';
      6 
      7 async_test(t => {
      8    let db;
      9 
     10    let open_rq = createdb(t);
     11    open_rq.onupgradeneeded = function(e) {
     12        db = e.target.result;
     13        let store = db.createObjectStore("store", { keyPath: "key" });
     14        let index = store.createIndex("index", "indexedProperty");
     15 
     16        store.add({ key: 1, indexedProperty: "data" });
     17 
     18        assert_throws_dom("DataError", function(){
     19            index.openKeyCursor(NaN);
     20        });
     21        t.done();
     22    }
     23 }, "Throw DataError when using a invalid key");
     24 
     25 async_test(t => {
     26    let db;
     27 
     28    let open_rq = createdb(t);
     29    open_rq.onupgradeneeded = function(e) {
     30        db = e.target.result;
     31        let store = db.createObjectStore("store", { keyPath: "key" });
     32        let index = store.createIndex("index", "indexedProperty");
     33 
     34        store.add({ key: 1, indexedProperty: "data" });
     35        store.deleteIndex("index");
     36 
     37        assert_throws_dom("InvalidStateError", function(){
     38            index.openKeyCursor();
     39        });
     40        t.done();
     41    }
     42 }, "Throw InvalidStateError when the index is deleted");
     43 
     44 async_test(t => {
     45    let db;
     46 
     47    let open_rq = createdb(t);
     48    open_rq.onupgradeneeded = function(e) {
     49        db = e.target.result;
     50        let store = db.createObjectStore("store", { keyPath: "key" });
     51        let index = store.createIndex("index", "indexedProperty");
     52        store.add({ key: 1, indexedProperty: "data" });
     53    }
     54    open_rq.onsuccess = function(e) {
     55        db = e.target.result;
     56        let tx = db.transaction('store', 'readonly');
     57        let index = tx.objectStore('store').index('index');
     58        tx.abort();
     59 
     60        assert_throws_dom("TransactionInactiveError", function(){
     61            index.openKeyCursor();
     62        });
     63        t.done();
     64    }
     65 }, "Throw TransactionInactiveError on aborted transaction");
     66 
     67 async_test(t => {
     68    let db;
     69 
     70    let open_rq = createdb(t);
     71    open_rq.onupgradeneeded = function(e) {
     72        db = e.target.result;
     73        let store = db.createObjectStore("store", { keyPath: "key" });
     74        let index = store.createIndex("index", "indexedProperty");
     75        store.add({ key: 1, indexedProperty: "data" });
     76 
     77        e.target.transaction.abort();
     78 
     79        assert_throws_dom("InvalidStateError", function(){
     80            index.openKeyCursor();
     81        });
     82        t.done();
     83    }
     84 }, "Throw InvalidStateError on index deleted by aborted upgrade");