1 var databaseName = "database";
2 var databaseVersion = 1;
6 if (window.msIndexedDB)
8 window.indexedDB = window.msIndexedDB;
10 else if (window.mozIndexedDB)
12 window.indexedDB = window.mozIndexedDB;
14 else if (window.webkitIndexedDB)
16 window.indexedDB = webkitIndexedDB;
17 IDBCursor = webkitIDBCursor;
18 IDBDatabaseException = webkitIDBDatabaseException;
19 IDBIndex = webkitIDBIndex;
20 IDBObjectStore = webkitIDBObjectStore;
21 IDBRequest = webkitIDBRequest;
22 IDBKeyRange = webkitIDBKeyRange;
23 IDBTransaction = webkitIDBTransaction;
27 /* Delete created databases
29 * Go through each finished test, see if it has an associated database. Close
30 * that and delete the database. */
31 add_completion_callback(function(tests)
38 window.indexedDB.deleteDatabase(tests[i].db.name);
43 function fail(test, desc) {
44 return test.step_func(function(e) {
45 if (e && e.message && e.target.error)
46 assert_unreached(desc + " (" + e.target.error.name + ": " + e.message + ")");
47 else if (e && e.message)
48 assert_unreached(desc + " (" + e.message + ")");
49 else if (e && e.target.readyState === 'done' && e.target.error)
50 assert_unreached(desc + " (" + e.target.error.name + ")");
52 assert_unreached(desc);
56 function createdb(test, dbname, version)
58 var rq_open = createdb_for_multiple_tests(dbname, version);
59 return rq_open.setTest(test);
62 function createdb_for_multiple_tests(dbname, version) {
66 dbname = (dbname ? dbname : "testdb-" + new Date().getTime() + Math.random() );
69 rq_open = window.indexedDB.open(dbname, version);
71 rq_open = window.indexedDB.open(dbname);
73 function auto_fail(evt, current_test) {
74 /* Fail handlers, if we haven't set on/whatever/, don't
75 * expect to get event whatever. */
76 rq_open.manually_handled = {}
78 rq_open.addEventListener(evt, function(e) {
79 if (current_test !== test) {
83 test.step(function() {
84 if (!rq_open.manually_handled[evt]) {
85 assert_unreached("unexpected open." + evt + " event");
88 if (e.target.result + "" == "[object IDBDatabase]" && !this.db) {
89 this.db = e.target.result;
91 this.db.onerror = fail(test, "unexpected db.error");
92 this.db.onabort = fail(test, "unexpected db.abort");
93 this.db.onversionchange = fail(test, "unexpected db.versionchange");
97 rq_open.__defineSetter__("on" + evt, function(h) {
98 rq_open.manually_handled[evt] = true;
100 rq_open.addEventListener(evt, function() {});
102 rq_open.addEventListener(evt, test.step_func(h));
106 // add a .setTest method to the DB object
107 Object.defineProperty(rq_open, 'setTest', {
112 auto_fail("upgradeneeded", test);
113 auto_fail("success", test);
114 auto_fail("blocked", test);
115 auto_fail("error", test);