test_file_resurrection_delete.html (3537B)
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 name = window.location.pathname; 18 19 const objectStoreName = "Blobs"; 20 21 const fileData = { key: 1, file: getRandomFile("random.bin", 100000) }; 22 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; 29 30 is(event.type, "upgradeneeded", "Got correct event type"); 31 32 let db = event.target.result; 33 db.onerror = errorHandler; 34 35 let objectStore = db.createObjectStore(objectStoreName, { }); 36 37 objectStore.add(fileData.file, fileData.key); 38 39 event = yield undefined; 40 41 is(event.type, "success", "Got correct event type"); 42 43 let trans = db.transaction([objectStoreName], READ_WRITE); 44 objectStore = trans.objectStore(objectStoreName); 45 46 objectStore.delete(fileData.key); 47 48 trans.oncomplete = grabEventAndContinueHandler; 49 event = yield undefined; 50 51 is(getFileDBRefCount(name, 1), 0, "Correct db ref count"); 52 53 trans = db.transaction([objectStoreName], READ_WRITE); 54 objectStore = trans.objectStore(objectStoreName); 55 56 request = objectStore.add(fileData.file, fileData.key); 57 request.onsuccess = grabEventAndContinueHandler; 58 event = yield undefined; 59 60 trans.oncomplete = grabEventAndContinueHandler; 61 event = yield undefined; 62 63 is(getFileDBRefCount(name, 1), 1, "Correct db ref count"); 64 65 fileData.file = null; 66 } 67 68 yield* assertEventuallyFileRefCount(name, 1, 0); 69 70 { 71 let request = indexedDB.open(name, 1); 72 request.onerror = errorHandler; 73 request.onsuccess = grabEventAndContinueHandler; 74 let event = yield undefined; 75 76 is(event.type, "success", "Got correct event type"); 77 78 let db = event.target.result; 79 db.onerror = errorHandler; 80 81 let trans = db.transaction([objectStoreName], READ_WRITE); 82 let objectStore = trans.objectStore(objectStoreName); 83 84 request = objectStore.get(fileData.key); 85 request.onsuccess = grabEventAndContinueHandler; 86 event = yield undefined; 87 88 let result = event.target.result; 89 ok(result, "Got result"); 90 91 objectStore.delete(fileData.key); 92 93 trans.oncomplete = grabEventAndContinueHandler; 94 event = yield undefined; 95 96 is(getFileDBRefCount(name, 1), 0, "Correct db ref count"); 97 98 trans = db.transaction([objectStoreName], READ_WRITE); 99 objectStore = trans.objectStore(objectStoreName); 100 101 request = objectStore.add(result, fileData.key); 102 request.onsuccess = grabEventAndContinueHandler; 103 event = yield undefined; 104 105 trans.oncomplete = grabEventAndContinueHandler; 106 event = yield undefined; 107 108 is(getFileDBRefCount(name, 1), 1, "Correct db ref count"); 109 110 event = null; 111 result = null; 112 } 113 114 yield* assertEventuallyFileRefCount(name, 1, 0); 115 116 finishTest(); 117 } 118 </script> 119 <script type="text/javascript" src="file.js"></script> 120 <script type="text/javascript" src="helpers.js"></script> 121 122 </head> 123 124 <body onload="runTest();"></body> 125 126 </html>