tor-browser

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

test_file_cross_database_copying.html (3002B)


      1 <!--
      2  Any copyright is dedicated to the Public Domain.
      3  http://creativecommons.org/publicdomain/zero/1.0/
      4 -->
      5 <html>
      6 <head>
      7  <title>Indexed Database Property Test</title>
      8 
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11 
     12  <script type="text/javascript">
     13  function* testSteps()
     14  {
     15    const READ_WRITE = "readwrite";
     16 
     17    const databaseInfo = [
     18      { name: window.location.pathname + "1" },
     19      { name: window.location.pathname + "2" },
     20    ];
     21 
     22    const objectStoreName = "Blobs";
     23 
     24    const fileData = { key: 1, file: getRandomFile("random.bin", 100000) };
     25 
     26    SpecialPowers.pushPrefEnv({ set: [["dom.indexedDB.dataThreshold", -1]] },
     27                              continueToNextStep);
     28    yield undefined;
     29 
     30    let databases = [];
     31    for (let info of databaseInfo) {
     32      let request = indexedDB.open(info.name, 1);
     33      request.onerror = errorHandler;
     34      request.onupgradeneeded = grabEventAndContinueHandler;
     35      request.onsuccess = grabEventAndContinueHandler;
     36      let event = yield undefined;
     37 
     38      is(event.type, "upgradeneeded", "Got correct event type");
     39 
     40      let db = event.target.result;
     41      db.onerror = errorHandler;
     42 
     43      let objectStore = db.createObjectStore(objectStoreName, { });
     44      objectStore.add(fileData.file, fileData.key);
     45 
     46      event = yield undefined;
     47 
     48      is(event.type, "success", "Got correct event type");
     49 
     50      databases.push(db);
     51    }
     52 
     53    let refResult;
     54    for (let db of databases) {
     55      let request = db.transaction([objectStoreName])
     56                      .objectStore(objectStoreName).get(fileData.key);
     57      request.onsuccess = grabEventAndContinueHandler;
     58      let event = yield undefined;
     59 
     60      let result = event.target.result;
     61      verifyBlob(result, fileData.file, 1);
     62      yield undefined;
     63 
     64      if (!refResult) {
     65        refResult = result;
     66        continue;
     67      }
     68 
     69      isnot(getFilePath(result), getFilePath(refResult), "Different os files");
     70    }
     71 
     72    for (let i = 1; i < databases.length; i++) {
     73      let db = databases[i];
     74 
     75      let objectStore = db.transaction([objectStoreName], READ_WRITE)
     76                          .objectStore(objectStoreName);
     77 
     78      let request = objectStore.add(refResult, 2);
     79      request.onsuccess = grabEventAndContinueHandler;
     80      let event = yield undefined;
     81 
     82      is(event.target.result, 2, "Got correct key");
     83 
     84      request = objectStore.get(2);
     85      request.onsuccess = grabEventAndContinueHandler;
     86      event = yield undefined;
     87 
     88      let result = event.target.result;
     89      verifyBlob(result, refResult, 2);
     90      yield undefined;
     91 
     92      isnot(getFilePath(result), getFilePath(refResult), "Different os files");
     93    }
     94 
     95    is(bufferCache.length, 2, "Correct length");
     96 
     97    finishTest();
     98  }
     99  </script>
    100  <script type="text/javascript" src="file.js"></script>
    101  <script type="text/javascript" src="helpers.js"></script>
    102 
    103 </head>
    104 
    105 <body onload="runTest();"></body>
    106 
    107 </html>