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>