1 Upgrade a database, open a second connection at the same version, ensure specifying a lower version causes an error
3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
8 dbname = "intversion-upgrades.html"
9 indexedDB.deleteDatabase(dbname)
10 PASS String(request) is "[object IDBOpenDBRequest]"
12 Call open with no version parameter:
13 indexedDB.open(dbname)
15 initialUpgradeNeeded():
18 connection1 = event.target.result
19 PASS connection1.version is 1
20 connection1.onversionchange = connection1VersionChangeCallback
21 request = indexedDB.open(dbname, 2)
23 connection1VersionChangeCallback():
26 connection2UpgradeNeeded():
27 connection2 = event.target.result
28 PASS String(connection2) is "[object IDBDatabase]"
29 PASS String(request.transaction) is "[object IDBTransaction]"
30 PASS event.oldVersion is 1
31 PASS event.newVersion is 2
32 request.transaction.oncomplete = transactionCompleted
34 transactionCompleted():
35 didTransactionComplete = true
38 PASS didTransactionComplete is true
39 PASS event.target.result is connection2
40 The next connection opens the database at the same version so connection2 shouldn't get a versionchange event.
41 connection2.onversionchange = unexpectedVersionChangeCallback
42 PASS String(connection2) is "[object IDBDatabase]"
43 PASS request.transaction is null
44 PASS connection2.version is 2
45 request = indexedDB.open(dbname, 2)
46 request.onsuccess = connection3Success
47 request.onblocked = unexpectedBlockedCallback
50 event.target.result.close()
52 connection3 = event.target.result
53 PASS connection3.version is 2
54 request = indexedDB.open(dbname, 1)
55 request.onerror = errorWhenTryingLowVersion
57 errorWhenTryingLowVersion():
58 request.error.message = The requested version (1) is less than the existing version (2).
59 request = indexedDB.open(dbname, 4)
60 request.onupgradeneeded = connection4UpgradeNeeded
61 request.onsuccess = connection4Success
63 connection4UpgradeNeeded():
64 gotConnection4UpgradeNeeded = true
65 PASS event.oldVersion is 2
66 PASS event.newVersion is 4
69 PASS gotConnection4UpgradeNeeded is true
70 connection4 = event.target.result
71 PASS connection4.version is 4
73 request = indexedDB.open(dbname)
74 request.onsuccess = connection5Success
77 db = event.target.result
79 PASS successfullyParsed is true