dom/indexedDB/test/test_file_delete.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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 fileData1 = { key: 1, file: getRandomFile("random1.bin", 110000) };
    22     const fileData2 = { key: 2, file: getRandomFile("random2.bin", 120000) };
    23     const fileData3 = { key: 3, file: getRandomFile("random3.bin", 130000) };
    25     {
    26       let request = indexedDB.open(name, 1);
    27       request.onerror = errorHandler;
    28       request.onupgradeneeded = grabEventAndContinueHandler;
    29       request.onsuccess = grabEventAndContinueHandler;
    30       let event = yield undefined;
    32       is(event.type, "upgradeneeded", "Got correct event type");
    34       let db = event.target.result;
    35       db.onerror = errorHandler;
    37       let objectStore = db.createObjectStore(objectStoreName, { });
    39       objectStore.add(fileData1.file, fileData1.key);
    40       objectStore.add(fileData2.file, fileData2.key);
    41       objectStore.add(fileData3.file, fileData3.key);
    43       event = yield undefined;
    45       is(event.type, "success", "Got correct event type");
    47       let trans = db.transaction([objectStoreName], READ_WRITE);
    48       trans.objectStore(objectStoreName).delete(fileData1.key);
    49       trans.oncomplete = grabEventAndContinueHandler;
    50       event = yield undefined;
    52       is(event.type, "complete", "Got correct event type");
    54       is(getFileDBRefCount(name, 1), 0, "Correct db ref count");
    56       fileData1.file = null;
    57       fileData2.file = null;
    58       fileData3.file = null;
    59     }
    61     scheduleGC();
    62     yield undefined;
    64     ok(!hasFileInfo(name, 1), "Correct ref count");
    65     ok(hasFileInfo(name, 2), "Correct ref count");
    66     ok(hasFileInfo(name, 3), "Correct ref count");
    68     {
    69       let request = indexedDB.open(name, 1);
    70       request.onerror = errorHandler;
    71       request.onsuccess = grabEventAndContinueHandler;
    72       let event = yield undefined;
    74       is(event.type, "success", "Got correct event type");
    76       let db = event.target.result;
    77       db.onerror = errorHandler;
    79       trans = db.transaction([objectStoreName], READ_WRITE);
    80       objectStore = trans.objectStore(objectStoreName);
    82       request = objectStore.get(fileData2.key);
    83       request.onsuccess = grabEventAndContinueHandler;
    84       event = yield undefined;
    86       let result = event.target.result;
    87       ok(result, "Got result");
    89       objectStore.delete(fileData2.key);
    91       trans.oncomplete = grabEventAndContinueHandler;
    92       event = yield undefined;
    94       is(event.type, "complete", "Got correct event type");
    96       is(getFileDBRefCount(name, 2), 0, "Correct db ref count");
    99       trans = db.transaction([objectStoreName], READ_WRITE);
   100       objectStore = trans.objectStore(objectStoreName);
   102       objectStore.delete(fileData3.key);
   104       trans.oncomplete = grabEventAndContinueHandler;
   105       event = yield undefined;
   107       is(event.type, "complete", "Got correct event type");
   109       is(getFileDBRefCount(name, 3), -1, "Correct db ref count");
   111       event = null;
   112       result = null;
   113     }
   115     scheduleGC();
   116     yield undefined;
   118     ok(!hasFileInfo(name, 1), "Correct ref count");
   119     ok(!hasFileInfo(name, 2), "Correct ref count");
   120     ok(!hasFileInfo(name, 3), "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