tor-browser

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

test_mutableFileUpgrade.js (3217B)


      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 dbNames = ["No files", "Blobs and mutable files"];
     11  const version = 1;
     12  const objectStoreName = "test";
     13 
     14  clearAllDatabases(continueToNextStepSync);
     15  yield undefined;
     16 
     17  installPackagedProfile("mutableFileUpgrade_profile");
     18 
     19  let request = indexedDB.open(dbNames[0], version);
     20  request.onerror = errorHandler;
     21  request.onupgradeneeded = unexpectedSuccessHandler;
     22  request.onsuccess = grabEventAndContinueHandler;
     23  let event = yield undefined;
     24 
     25  is(event.type, "success", "Correct event type");
     26 
     27  let db = event.target.result;
     28  db.onerror = errorHandler;
     29 
     30  request = db
     31    .transaction([objectStoreName])
     32    .objectStore(objectStoreName)
     33    .get(1);
     34  request.onsuccess = grabEventAndContinueHandler;
     35  event = yield undefined;
     36 
     37  is(event.target.result, "text", "Correct result");
     38 
     39  request = indexedDB.open(dbNames[1], version);
     40  request.onerror = errorHandler;
     41  request.onupgradeneeded = unexpectedSuccessHandler;
     42  request.onsuccess = grabEventAndContinueHandler;
     43  event = yield undefined;
     44 
     45  is(event.type, "success", "Correct event type");
     46 
     47  db = event.target.result;
     48  db.onerror = errorHandler;
     49 
     50  request = db
     51    .transaction([objectStoreName])
     52    .objectStore(objectStoreName)
     53    .get(1);
     54  request.onsuccess = grabEventAndContinueHandler;
     55  event = yield undefined;
     56 
     57  is(event.target.result, "text", "Correct result");
     58 
     59  request = db
     60    .transaction([objectStoreName])
     61    .objectStore(objectStoreName)
     62    .get(2);
     63  request.onsuccess = grabEventAndContinueHandler;
     64  event = yield undefined;
     65 
     66  verifyBlob(event.target.result, getBlob("blob0"));
     67  yield undefined;
     68 
     69  request = db
     70    .transaction([objectStoreName])
     71    .objectStore(objectStoreName)
     72    .get(3);
     73  request.onsuccess = grabEventAndContinueHandler;
     74  event = yield undefined;
     75 
     76  let result = event.target.result;
     77 
     78  verifyBlob(result[0], getBlob("blob1"));
     79  yield undefined;
     80 
     81  verifyBlob(result[1], getBlob("blob2"));
     82  yield undefined;
     83 
     84  request = db
     85    .transaction([objectStoreName])
     86    .objectStore(objectStoreName)
     87    .get(4);
     88  request.onsuccess = grabEventAndContinueHandler;
     89  event = yield undefined;
     90 
     91  try {
     92    event.target.result;
     93    ok(false, "IDBMutableFile must not be read");
     94  } catch (err) {
     95    is(err.name, "InvalidStateError", "Wrong error type");
     96  }
     97 
     98  request = db
     99    .transaction([objectStoreName])
    100    .objectStore(objectStoreName)
    101    .get(5);
    102  request.onsuccess = grabEventAndContinueHandler;
    103  event = yield undefined;
    104 
    105  try {
    106    event.target.result;
    107    ok(false, "IDBMutableFile must not be read");
    108  } catch (err) {
    109    is(err.name, "InvalidStateError", "Wrong error type");
    110  }
    111 
    112  request = db
    113    .transaction([objectStoreName])
    114    .objectStore(objectStoreName)
    115    .get(6);
    116  request.onsuccess = grabEventAndContinueHandler;
    117  event = yield undefined;
    118 
    119  try {
    120    event.target.result;
    121    ok(false, "IDBMutableFile must not be read");
    122  } catch (err) {
    123    is(err.name, "InvalidStateError", "Wrong error type");
    124  }
    125 
    126  finishTest();
    127  yield undefined;
    128 }