tor-browser

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

idbobjectstore_clear.any.js (3424B)


      1 // META: global=window,worker
      2 // META: title=IDBObjectStore.clear()
      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 objStore = db.createObjectStore("store", { autoIncrement: true });
     14 
     15        objStore.add({ property: "data" });
     16        objStore.add({ something_different: "Yup, totally different" });
     17        objStore.add(1234);
     18        objStore.add([1, 2, 1234]);
     19 
     20        objStore.clear().onsuccess = t.step_func(function(e) {
     21            assert_equals(e.target.result, undefined);
     22        });
     23    };
     24 
     25 
     26    open_rq.onsuccess = function(e) {
     27        let rq = db.transaction("store", "readonly")
     28                   .objectStore("store")
     29                   .openCursor();
     30 
     31        rq.onsuccess = t.step_func(function(e) {
     32            assert_equals(e.target.result, null, 'cursor');
     33            t.done();
     34        });
     35    };
     36 }, "Verify clear removes all records ");
     37 
     38 async_test(t => {
     39    let db;
     40 
     41    let open_rq = createdb(t);
     42    open_rq.onupgradeneeded = function(e) {
     43        db = e.target.result;
     44        let objStore = db.createObjectStore("store", { autoIncrement: true });
     45        objStore.createIndex("index", "indexedProperty");
     46 
     47        objStore.add({ indexedProperty: "data" });
     48        objStore.add({ indexedProperty: "yo, man", something_different: "Yup, totally different" });
     49        objStore.add({ indexedProperty: 1234 });
     50        objStore.add({ indexedProperty: [1, 2, 1234] });
     51        objStore.add(1234);
     52 
     53        objStore.clear().onsuccess = t.step_func(function(e) {
     54            assert_equals(e.target.result, undefined);
     55        });
     56    };
     57 
     58    open_rq.onsuccess = function(e) {
     59        let rq = db.transaction("store", "readonly")
     60                   .objectStore("store")
     61                   .index("index")
     62                   .openCursor();
     63 
     64        rq.onsuccess = t.step_func(function(e) {
     65            assert_equals(e.target.result, null, 'cursor');
     66            t.done();
     67        });
     68    };
     69 }, "Clear removes all records from an index ");
     70 
     71 async_test(t => {
     72    let db, records = [{ pKey: "primaryKey_0"}, { pKey: "primaryKey_1"}];
     73 
     74    let open_rq = createdb(t);
     75    open_rq.onupgradeneeded = function (event) {
     76        db = event.target.result;
     77        let objStore = db.createObjectStore("store", {keyPath:"pKey"});
     78        for (let i = 0; i < records.length; i++) {
     79            objStore.add(records[i]);
     80        }
     81    }
     82 
     83    open_rq.onsuccess = function (event) {
     84        let txn = db.transaction("store", "readonly");
     85        let ostore = txn.objectStore("store");
     86        t.step(function(){
     87            assert_throws_dom("ReadOnlyError", function(){
     88                ostore.clear();
     89            });
     90        });
     91        t.done();
     92    }
     93 }, "If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError ");
     94 
     95 async_test(t => {
     96    let db, ostore;
     97 
     98    let open_rq = createdb(t);
     99    open_rq.onupgradeneeded = function (event) {
    100        db = event.target.result;
    101        ostore = db.createObjectStore("store", {keyPath:"pKey"});
    102        db.deleteObjectStore("store");
    103        assert_throws_dom("InvalidStateError", function(){
    104            ostore.clear();
    105        });
    106        t.done();
    107    }
    108 }, "If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError ");