tor-browser

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

test_blob_file_backed.js (2062B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 /* exported testGenerator, disableWorkerTest */
      7 var disableWorkerTest = "This test uses SpecialPowers";
      8 
      9 var testGenerator = testSteps();
     10 
     11 function* testSteps() {
     12  const fileData = "abcdefghijklmnopqrstuvwxyz";
     13  const fileType = "text/plain";
     14 
     15  const databaseName = "window" in this ? window.location.pathname : "Test";
     16  const objectStoreName = "foo";
     17  const objectStoreKey = "10";
     18 
     19  info("Creating temp file");
     20 
     21  SpecialPowers.createFiles(
     22    [{ data: fileData, options: { type: fileType } }],
     23    function (files) {
     24      testGenerator.next(files[0]);
     25    }
     26  );
     27 
     28  let file = yield undefined;
     29 
     30  ok(file instanceof File, "Got a File object");
     31  is(file.size, fileData.length, "Correct size");
     32  is(file.type, fileType, "Correct type");
     33 
     34  let fileReader = new FileReader();
     35  fileReader.onload = grabEventAndContinueHandler;
     36  fileReader.readAsText(file);
     37 
     38  let event = yield undefined;
     39 
     40  is(fileReader.result, fileData, "Correct data");
     41 
     42  let request = indexedDB.open(databaseName, 1);
     43  request.onerror = errorHandler;
     44  request.onupgradeneeded = grabEventAndContinueHandler;
     45  request.onsuccess = grabEventAndContinueHandler;
     46 
     47  event = yield undefined;
     48 
     49  let db = event.target.result;
     50  let objectStore = db.createObjectStore(objectStoreName);
     51  objectStore.put(file, objectStoreKey);
     52 
     53  event = yield undefined;
     54 
     55  db = event.target.result;
     56 
     57  file = null;
     58 
     59  objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
     60  objectStore.get(objectStoreKey).onsuccess = grabEventAndContinueHandler;
     61 
     62  event = yield undefined;
     63 
     64  file = event.target.result;
     65 
     66  ok(file instanceof File, "Got a File object");
     67  is(file.size, fileData.length, "Correct size");
     68  is(file.type, fileType, "Correct type");
     69 
     70  fileReader = new FileReader();
     71  fileReader.onload = grabEventAndContinueHandler;
     72  fileReader.readAsText(file);
     73 
     74  event = yield undefined;
     75 
     76  is(fileReader.result, fileData, "Correct data");
     77 
     78  finishTest();
     79 }