1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 var testDate = new Date("February 24, 1955 12:00:00"); 6 7 function getByDateSuccess() 8 { 9 debug('Data retrieved by date key'); 10 11 shouldBe("event.target.result", "'foo'"); 12 done(); 13 } 14 15 function recordNotFound() 16 { 17 debug('Removed data can no longer be found'); 18 shouldBe("event.target.result", "undefined"); 19 20 debug('Retrieving an index'); 21 shouldBe("objectStore.index('fname_index').name", "'fname_index'"); 22 23 debug('Removing an index'); 24 try { 25 objectStore.deleteIndex('fname_index'); 26 } catch(e) { 27 fail(e); 28 } 29 30 var request = transaction.objectStore('stuff').get(testDate); 31 request.onsuccess = getByDateSuccess; 32 request.onerror = unexpectedErrorCallback; 33 } 34 35 function removeSuccess() 36 { 37 debug('Data removed'); 38 39 var request = objectStore.get(1); 40 request.onsuccess = recordNotFound; 41 request.onerror = unexpectedSuccessCallback; 42 } 43 44 function getSuccess() 45 { 46 debug('Data retrieved'); 47 48 shouldBe("event.target.result.fname", "'John'"); 49 shouldBe("event.target.result.lname", "'Doe'"); 50 shouldBe("event.target.result.id", "1"); 51 52 var request = objectStore.delete(1); 53 request.onsuccess = removeSuccess; 54 request.onerror = unexpectedErrorCallback; 55 } 56 57 function moreDataAddedSuccess() 58 { 59 debug('More data added'); 60 61 var request = objectStore.get(1); 62 request.onsuccess = getSuccess; 63 request.onerror = unexpectedErrorCallback; 64 } 65 66 function addWithSameKeyFailed() 67 { 68 debug('Adding a record with same key failed'); 69 shouldBe("event.target.error.name", "'ConstraintError'"); 70 event.preventDefault(); 71 72 var request = transaction.objectStore('stuff').add('foo', testDate); 73 request.onsuccess = moreDataAddedSuccess; 74 request.onerror = unexpectedErrorCallback; 75 } 76 77 function dataAddedSuccess() 78 { 79 debug('Data added'); 80 81 debug('Try to add employee with same id'); 82 var request = objectStore.add({fname: "Tom", lname: "Jones", id: 1}); 83 request.onsuccess = unexpectedSuccessCallback; 84 request.onerror = addWithSameKeyFailed; 85 } 86 87 function populateObjectStore() 88 { 89 window.transaction = event.target.transaction; 90 db = event.target.result; 91 transaction.onabort = unexpectedAbortCallback; 92 debug('Populating object store'); 93 deleteAllObjectStores(db); 94 db.createObjectStore('stuff'); 95 window.objectStore = db.createObjectStore('employees', {keyPath: 'id'}); 96 shouldBe("objectStore.name", "'employees'"); 97 shouldBe("objectStore.keyPath", "'id'"); 98 99 objectStore.createIndex('fname_index', 'fname'); 100 objectStore.createIndex('lname_index', 'fname'); 101 debug('Created indexes'); 102 shouldBe("objectStore.indexNames[0]", "'fname_index'"); 103 shouldBe("objectStore.indexNames[1]", "'lname_index'"); 104 105 var request = objectStore.add({fname: "John", lname: "Doe", id: 1}); 106 request.onsuccess = dataAddedSuccess; 107 request.onerror = unexpectedErrorCallback; 108 } 109 110 function test() { 111 indexedDBTest(populateObjectStore); 112 } 113