tor-browser

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

idbdatabase_close.any.js (2154B)


      1 // META: global=window,worker
      2 // META: title=IDBDatabase.close()
      3 // META: script=resources/support.js
      4 
      5 // Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction
      6 
      7 'use strict';
      8 
      9 async_test(t => {
     10  let db;
     11  let versionchange_fired;
     12  let blocked_fired;
     13  let upgradeneeded_fired;
     14  const open_rq = createdb(t);
     15  let counter = 0;
     16 
     17  open_rq.onupgradeneeded = function() {};
     18  open_rq.onsuccess = function(e) {
     19    db = e.target.result;
     20    db.onversionchange = t.step_func((e) => {
     21      versionchange_fired = counter++;
     22    });
     23    const rq = indexedDB.open(db.name, db.version + 1);
     24    rq.onblocked = t.step_func((e) => {
     25      blocked_fired = counter++;
     26      db.close();
     27    });
     28    rq.onupgradeneeded = t.step_func((e) => {
     29      upgradeneeded_fired = counter++;
     30    });
     31    rq.onsuccess = t.step_func((e) => {
     32      assert_equals(versionchange_fired, 0, 'versionchange event fired #');
     33      assert_equals(blocked_fired, 1, 'block event fired #');
     34      assert_equals(
     35          upgradeneeded_fired, 2, 'second upgradeneeded event fired #');
     36 
     37      rq.result.close();
     38      t.done();
     39    });
     40    rq.onerror = t.step_func(e => {
     41      assert_unreached('Unexpected database deletion error: ' + e.target.error);
     42    });
     43  };
     44 }, 'Unblock the version change transaction created by an open database request');
     45 
     46 async_test(t => {
     47  let db;
     48  let blocked_fired = false;
     49  let versionchange_fired = false;
     50  const open_rq = createdb(t);
     51 
     52  open_rq.onupgradeneeded = t.step_func(e => {});
     53  open_rq.onsuccess = t.step_func(e => {
     54    db = e.target.result;
     55 
     56    db.onversionchange = t.step_func(e => {
     57      versionchange_fired = true;
     58    });
     59 
     60    const rq = indexedDB.deleteDatabase(db.name);
     61    rq.onblocked = t.step_func(e => {
     62      blocked_fired = true;
     63      db.close();
     64    });
     65    rq.onsuccess = t.step_func(e => {
     66      assert_true(versionchange_fired, 'versionchange event fired')
     67      assert_true(blocked_fired, 'block event fired')
     68      t.done();
     69    });
     70    rq.onerror = t.step_func(e => {
     71      assert_unreached('Unexpected database deletion error: ' + e.target.error);
     72    });
     73  });
     74 }, 'Unblock the delete database request.');