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.
5 function finalTransactionCompleted()
7 debug('The final transaction completed.');
11 function finalTransactionAborted()
13 fail('The final transaction should not abort.');
16 function employeeNotFound()
18 debug('Employee not found.');
19 shouldBe("event.target.result", "undefined");
22 function newTransactionAborted()
24 debug('The transaction was aborted.');
26 var finalTransaction = db.transaction(['employees'],
28 finalTransaction.oncomplete = finalTransactionCompleted;
29 finalTransaction.onabort = finalTransactionAborted;
31 var request = finalTransaction.objectStore('employees').get(0);
32 request.onsuccess = employeeNotFound;
33 request.onerror = unexpectedErrorCallback;
36 function newTransactionCompleted()
38 fail('The new transaction should not complete.');
41 function employeeAdded()
43 debug('Added an employee inside the transaction.');
44 newTransaction.abort();
47 function onSetVersionComplete()
49 debug('Creating new transaction.');
50 window.newTransaction = db.transaction(['employees'],
52 newTransaction.oncomplete = newTransactionCompleted;
53 newTransaction.onabort = newTransactionAborted;
55 var request = newTransaction.objectStore('employees').put(
56 {id: 0, name: 'John Doe', desk: 'LON-BEL-123'});
57 request.onsuccess = employeeAdded;
58 request.onerror = unexpectedErrorCallback;
61 function onSetVersion()
63 // We are now in a set version transaction.
64 window.db = event.target.result;
65 debug('Creating object store.');
66 deleteAllObjectStores(db);
67 db.createObjectStore('employees', {keyPath: 'id'});
72 if ('webkitIndexedDB' in window) {
73 indexedDB = webkitIndexedDB;
74 IDBCursor = webkitIDBCursor;
75 IDBKeyRange = webkitIDBKeyRange;
76 IDBTransaction = webkitIDBTransaction;
78 indexedDBTest(onSetVersion, onSetVersionComplete);