Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / storage / indexeddb / resources / intversion-open-in-upgradeneeded.js
1 if (this.importScripts) {
2     importScripts('../../../resources/js-test.js');
3     importScripts('shared.js');
4 }
5
6 description("Test calling db.open in upgradeneeded.");
7
8 function test()
9 {
10     removeVendorPrefixes();
11     setDBNameFromPath();
12
13     request = evalAndLog("indexedDB.deleteDatabase(dbname)");
14     request.onsuccess = deleteSuccess;
15     request.onerror = unexpectedErrorCallback;
16 }
17
18 function deleteSuccess(evt) {
19     evalAndLog("request = indexedDB.open(dbname, 1)");
20     evalAndLog("request.onupgradeneeded = upgradeNeeded1");
21     evalAndLog("request.onsuccess = openSuccess1");
22     request.onblocked = unexpectedBlockedCallback;
23     request.onerror = unexpectedErrorCallback;
24 }
25
26 var sawTransactionComplete = false;
27 function upgradeNeeded1(evt)
28 {
29     preamble(evt);
30     evalAndLog("db = event.target.result");
31     shouldBe("event.newVersion", "1");
32
33     evalAndLog("transaction = event.target.transaction");
34     evalAndLog("db.createObjectStore('os')");
35     transaction.onabort = unexpectedAbortCallback;
36     transaction.oncomplete = function transactionOnComplete() {
37         preamble();
38         evalAndLog("sawTransactionComplete = true");
39     };
40     evalAndLog("db.onversionchange = onVersionChange");
41     evalAndLog("request = indexedDB.open(dbname, 3)");
42     evalAndLog("request.onupgradeneeded = upgradeNeeded2");
43     evalAndLog("request.onsuccess = openSuccess2");
44     request.onblocked = unexpectedBlockedCallback;
45     request.onerror = unexpectedErrorCallback;
46 }
47
48 function openSuccess1(evt)
49 {
50     preamble(evt);
51     shouldBeTrue("sawTransactionComplete");
52     db = evalAndLog("db = event.target.result");
53     shouldBe('db.version', "1");
54     debug("Start a transaction to ensure the connection is still open.");
55     evalAndLog("transaction = db.transaction('os')");
56 }
57
58 function onVersionChange(evt)
59 {
60     preamble(evt);
61     evalAndLog("db.close()");
62 }
63
64 function upgradeNeeded2(evt)
65 {
66     preamble(evt);
67     evalAndLog("db = event.target.result");
68     shouldBe("event.newVersion", "3");
69 }
70
71 function openSuccess2(evt)
72 {
73     preamble(evt);
74     evalAndLog("db = event.target.result");
75     shouldBe("db.version", "3");
76     finishJSTest();
77 }
78
79 test();