tor-browser

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

test_clear.js (2489B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 /* exported testGenerator */
      7 var testGenerator = testSteps();
      8 
      9 function* testSteps() {
     10  const name = this.window ? window.location.pathname : "Splendid Test";
     11  const entryCount = 1000;
     12 
     13  let request = indexedDB.open(name, 1);
     14  request.onerror = errorHandler;
     15  request.onupgradeneeded = grabEventAndContinueHandler;
     16  let event = yield undefined;
     17 
     18  let db = request.result;
     19 
     20  event.target.onsuccess = continueToNextStep;
     21 
     22  let objectStore = db.createObjectStore("foo", { autoIncrement: true });
     23 
     24  let firstKey;
     25  for (let i = 0; i < entryCount; i++) {
     26    request = objectStore.add({});
     27    request.onerror = errorHandler;
     28    if (!i) {
     29      request.onsuccess = function (event) {
     30        firstKey = event.target.result;
     31      };
     32    }
     33  }
     34  yield undefined;
     35 
     36  isnot(firstKey, undefined, "got first key");
     37 
     38  let seenEntryCount = 0;
     39 
     40  request = db.transaction("foo").objectStore("foo").openCursor();
     41  request.onerror = errorHandler;
     42  request.onsuccess = function (event) {
     43    let cursor = event.target.result;
     44    if (cursor) {
     45      seenEntryCount++;
     46      cursor.continue();
     47    } else {
     48      continueToNextStep();
     49    }
     50  };
     51  yield undefined;
     52 
     53  is(seenEntryCount, entryCount, "Correct entry count");
     54 
     55  try {
     56    db.transaction("foo").objectStore("foo").clear();
     57    ok(false, "clear should throw on READ_ONLY transactions");
     58  } catch (e) {
     59    ok(true, "clear should throw on READ_ONLY transactions");
     60  }
     61 
     62  request = db.transaction("foo", "readwriteflush").objectStore("foo").clear();
     63  request.onerror = errorHandler;
     64  request.onsuccess = grabEventAndContinueHandler;
     65  event = yield undefined;
     66 
     67  ok(event.target.result === undefined, "Correct event.target.result");
     68  ok(request.result === undefined, "Correct request.result");
     69  ok(request === event.target, "Correct event.target");
     70 
     71  request = db.transaction("foo").objectStore("foo").openCursor();
     72  request.onerror = errorHandler;
     73  request.onsuccess = function () {
     74    let cursor = request.result;
     75    if (cursor) {
     76      ok(false, "Shouldn't have any entries");
     77    }
     78    continueToNextStep();
     79  };
     80  yield undefined;
     81 
     82  request = db.transaction("foo", "readwrite").objectStore("foo").add({});
     83  request.onerror = errorHandler;
     84  request.onsuccess = grabEventAndContinueHandler;
     85  event = yield undefined;
     86 
     87  isnot(event.target.result, firstKey, "Got a different key");
     88 
     89  finishTest();
     90 }