tor-browser

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

idbfactory_deleteDatabase.any.js (3827B)


      1 // META: title=IDBFactory.deleteDatabase()
      2 // META: global=window,worker
      3 // META: script=resources/support.js
      4 
      5 'use strict';
      6 
      7 async_test(t => {
      8  const delete_rq = indexedDB.deleteDatabase('db-that-doesnt-exist');
      9  delete_rq.onerror = fail(t, 'delete_rq.error');
     10  delete_rq.onsuccess = t.step_func(e => {
     11    assert_equals(e.oldVersion, 0, 'event.oldVersion');
     12    assert_equals(e.target.source, null, 'event.target.source');
     13  });
     14 
     15  const open_rq = createdb(t, undefined, 9);
     16  open_rq.onupgradeneeded = t.step_func(e => {});
     17  open_rq.onsuccess = t.step_func(e => {
     18    const db = e.target.result;
     19    db.close();
     20 
     21    const delete_rq1 = indexedDB.deleteDatabase(db.name);
     22    delete_rq1.onerror = fail(t, 'delete_rq1.error');
     23    delete_rq1.onsuccess = t.step_func(e => {
     24      assert_equals(e.oldVersion, 9, 'event.oldVersion');
     25      assert_equals(e.target.source, null, 'event.target.source');
     26    });
     27 
     28    const delete_rq2 = indexedDB.deleteDatabase(db.name);
     29    delete_rq2.onerror = fail(t, 'delete_rq2.error');
     30 
     31    delete_rq2.onsuccess = t.step_func_done(e => {
     32      assert_equals(e.oldVersion, 0, 'event.oldVersion');
     33      assert_equals(e.target.source, null, 'event.target.source');
     34    });
     35  });
     36 }, 'deleteDatabase() request should have no source, and deleting a non-existent\
     37 database should succeed with oldVersion of 0.');
     38 
     39 async_test(t => {
     40  const open_rq = createdb(t, undefined, 9);
     41 
     42  open_rq.onupgradeneeded = t.step_func(e => {});
     43 
     44  open_rq.onsuccess = t.step_func(e => {
     45    const db = e.target.result;
     46    db.close();
     47 
     48    const delete_rq = indexedDB.deleteDatabase(db.name);
     49    delete_rq.onerror = t.step_func(e => {
     50      assert_unreached('Unexpected delete_rq.error event');
     51    });
     52 
     53    delete_rq.onsuccess = t.step_func(e => {
     54      assert_equals(e.target.result, undefined, 'result');
     55      t.done();
     56    });
     57  });
     58 }, 'Result of the deleteDatabase() request is set to undefined.');
     59 
     60 async_test(t => {
     61  let db;
     62  const open_rq = createdb(t, undefined, 9);
     63 
     64  open_rq.onupgradeneeded = t.step_func(e => {
     65    db = e.target.result;
     66    db.createObjectStore('os');
     67  });
     68 
     69  open_rq.onsuccess = t.step_func(e => {
     70    db.close();
     71 
     72    const delete_rq = indexedDB.deleteDatabase(db.name);
     73    delete_rq.onerror = t.step_func(e => {
     74      assert_unreached('Unexpected delete_rq.error event');
     75    });
     76 
     77    delete_rq.onsuccess = t.step_func(e => {
     78      assert_equals(e.oldVersion, 9, 'oldVersion');
     79      assert_equals(e.newVersion, null, 'newVersion');
     80      assert_equals(e.target.result, undefined, 'result');
     81      assert_true(
     82          e instanceof IDBVersionChangeEvent,
     83          'e instanceof IDBVersionChangeEvent');
     84      t.done();
     85    });
     86  });
     87 }, 'The deleteDatabase() request\'s success event is an IDBVersionChangeEvent.');
     88 
     89 async_test(t => {
     90  const dbname = location + '-' + t.name;
     91 
     92  indexedDB.deleteDatabase(dbname);
     93 
     94  let db;
     95  const openrq = indexedDB.open(dbname, 3);
     96 
     97  openrq.onupgradeneeded = t.step_func(e => {
     98    e.target.result.createObjectStore('store');
     99  });
    100 
    101  openrq.onsuccess = t.step_func(e => {
    102    db = e.target.result;
    103 
    104    // Errors
    105    db.onversionchange = fail(t, 'db.versionchange');
    106    db.onerror = fail(t, 'db.error');
    107    db.abort = fail(t, 'db.abort');
    108 
    109    step_timeout(t.step_func(() => Second(t, dbname)), 4);
    110    db.close();
    111  });
    112 
    113  // Errors
    114  openrq.onerror = fail(t, 'open.error');
    115  openrq.onblocked = fail(t, 'open.blocked');
    116 }, 'Delete an existing database - Test events opening a second \
    117 database when one connection is open already');
    118 
    119 function Second(t, dbname) {
    120  const deleterq = indexedDB.deleteDatabase(dbname);
    121 
    122  deleterq.onsuccess = e => {
    123    t.done();
    124  };
    125 
    126  deleterq.onerror = fail(t, 'delete.error');
    127  deleterq.onblocked = fail(t, 'delete.blocked');
    128  deleterq.onupgradeneeded = fail(t, 'delete.upgradeneeded');
    129 }