test_file_resurrection_transaction_abort.html (2460B)
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 event = yield undefined; 38 39 is(event.type, "success", "Got correct event type"); 40 41 let trans = db.transaction([objectStoreName], READ_WRITE); 42 objectStore = trans.objectStore(objectStoreName); 43 44 request = objectStore.add(fileData.file, fileData.key); 45 request.onsuccess = grabEventAndContinueHandler; 46 event = yield undefined; 47 48 request = objectStore.get(fileData.key); 49 request.onsuccess = grabEventAndContinueHandler; 50 event = yield undefined; 51 52 let result = event.target.result; 53 ok(result, "Got result"); 54 55 trans.onabort = grabEventAndContinueHandler; 56 trans.abort(); 57 event = yield undefined; 58 59 is(getFileDBRefCount(name, 1), 0, "Correct db ref count"); 60 61 trans = db.transaction([objectStoreName], READ_WRITE); 62 objectStore = trans.objectStore(objectStoreName); 63 64 request = objectStore.add(result, fileData.key); 65 request.onsuccess = grabEventAndContinueHandler; 66 event = yield undefined; 67 68 trans.oncomplete = grabEventAndContinueHandler; 69 event = yield undefined; 70 71 is(getFileDBRefCount(name, 1), 1, "Correct db ref count"); 72 73 fileData.file = null; 74 } 75 76 yield* assertEventuallyFileRefCount(name, 1, 0); 77 78 finishTest(); 79 } 80 </script> 81 <script type="text/javascript" src="file.js"></script> 82 <script type="text/javascript" src="helpers.js"></script> 83 84 </head> 85 86 <body onload="runTest();"></body> 87 88 </html>