dom/indexedDB/test/test_file_resurrection_delete.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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>
     9   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    10   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
    12   <script type="text/javascript;version=1.7">
    13   function testSteps()
    14   {
    15     const READ_WRITE = "readwrite";
    17     const name = window.location.pathname;
    19     const objectStoreName = "Blobs";
    21     const fileData = { key: 1, file: getRandomFile("random.bin", 100000) };
    23     {
    24       let request = indexedDB.open(name, 1);
    25       request.onerror = errorHandler;
    26       request.onupgradeneeded = grabEventAndContinueHandler;
    27       request.onsuccess = grabEventAndContinueHandler;
    28       let event = yield undefined;
    30       is(event.type, "upgradeneeded", "Got correct event type");
    32       let db = event.target.result;
    33       db.onerror = errorHandler;
    35       let objectStore = db.createObjectStore(objectStoreName, { });
    37       objectStore.add(fileData.file, fileData.key);
    39       event = yield undefined;
    41       is(event.type, "success", "Got correct event type");
    43       let trans = db.transaction([objectStoreName], READ_WRITE);
    44       objectStore = trans.objectStore(objectStoreName);
    46       objectStore.delete(fileData.key);
    48       trans.oncomplete = grabEventAndContinueHandler;
    49       event = yield undefined;
    51       is(getFileDBRefCount(name, 1), 0, "Correct db ref count");
    53       trans = db.transaction([objectStoreName], READ_WRITE);
    54       objectStore = trans.objectStore(objectStoreName);
    56       request = objectStore.add(fileData.file, fileData.key);
    57       request.onsuccess = grabEventAndContinueHandler;
    58       event = yield undefined;
    60       trans.oncomplete = grabEventAndContinueHandler;
    61       event = yield undefined;
    63       is(getFileDBRefCount(name, 1), 1, "Correct db ref count");
    65       fileData.file = null;
    66     }
    68     scheduleGC();
    69     yield undefined;
    71     is(getFileRefCount(name, 1), 0, "Correct ref count");
    73     {
    74       let request = indexedDB.open(name, 1);
    75       request.onerror = errorHandler;
    76       request.onsuccess = grabEventAndContinueHandler;
    77       let event = yield undefined;
    79       is(event.type, "success", "Got correct event type");
    81       let db = event.target.result;
    82       db.onerror = errorHandler;
    84       let trans = db.transaction([objectStoreName], READ_WRITE);
    85       objectStore = trans.objectStore(objectStoreName);
    87       request = objectStore.get(fileData.key);
    88       request.onsuccess = grabEventAndContinueHandler;
    89       event = yield undefined;
    91       let result = event.target.result;
    92       ok(result, "Got result");
    94       objectStore.delete(fileData.key);
    96       trans.oncomplete = grabEventAndContinueHandler;
    97       event = yield undefined;
    99       is(getFileDBRefCount(name, 1), 0, "Correct db ref count");
   101       trans = db.transaction([objectStoreName], READ_WRITE);
   102       objectStore = trans.objectStore(objectStoreName);
   104       request = objectStore.add(result, fileData.key);
   105       request.onsuccess = grabEventAndContinueHandler;
   106       event = yield undefined;
   108       trans.oncomplete = grabEventAndContinueHandler;
   109       event = yield undefined;
   111       is(getFileDBRefCount(name, 1), 1, "Correct db ref count");
   113       event = null;
   114       result = null;
   115     }
   117     scheduleGC();
   118     yield undefined;
   120     is(getFileRefCount(name, 1), 0, "Correct ref count");
   122     finishTest();
   123     yield undefined;
   124   }
   125   </script>
   126   <script type="text/javascript;version=1.7" src="file.js"></script>
   127   <script type="text/javascript;version=1.7" src="helpers.js"></script>
   129 </head>
   131 <body onload="runTest();"></body>
   133 </html>

mercurial