• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
4<script src="../../fast/js/resources/js-test-pre.js"></script>
5<script src="../../fast/js/resources/js-test-post-function.js"></script>
6<script src="resources/shared.js"></script>
7</head>
8<body>
9<p id="description"></p>
10<div id="console"></div>
11<script>
12
13description("Test the basics of IndexedDB's IDBDatabase.");
14if (window.layoutTestController)
15    layoutTestController.waitUntilDone();
16
17function test()
18{
19    request = evalAndLog("webkitIndexedDB.open('database-basics')");
20    request.onsuccess = openSuccess;
21    request.onerror = unexpectedErrorCallback;
22}
23
24function openSuccess()
25{
26    window.db = evalAndLog("db = event.target.result");
27
28    request = evalAndLog("db.setVersion('new version')");
29    request.onsuccess = setVersionSuccess;
30    request.onerror = unexpectedErrorCallback;
31}
32
33function setVersionSuccess()
34{
35    debug("setVersionSuccess():");
36    window.trans = evalAndLog("trans = event.target.result");
37    shouldBeTrue("trans !== null");
38    trans.onabort = unexpectedAbortCallback;
39
40    deleteAllObjectStores(db);
41
42    debug("Testing setVersion.");
43    request = evalAndLog('db.setVersion("version a")');
44    request.onsuccess = setVersionAgain;
45    request.onerror = unexpectedErrorCallback;
46}
47
48function setVersionAgain()
49{
50    request = evalAndLog('db.setVersion("version b")');
51    request.onsuccess = createObjectStore;
52    request.onerror = unexpectedErrorCallback;
53}
54
55function createObjectStore()
56{
57    shouldBeEqualToString("db.version", "version b");
58    shouldBeEqualToString("db.name", "database-basics");
59    shouldBe("db.objectStoreNames", "[]");
60    shouldBe("db.objectStoreNames.length", "0");
61    shouldBe("db.objectStoreNames.contains('')", "false");
62    shouldBeNull("db.objectStoreNames[0]");
63    shouldBeNull("db.objectStoreNames.item(0)");
64
65    objectStore = evalAndLog('db.createObjectStore("test123")');
66    checkObjectStore();
67    commitAndContinue();
68}
69
70function checkObjectStore()
71{
72    shouldBe("db.objectStoreNames", "['test123']");
73    shouldBe("db.objectStoreNames.length", "1");
74    shouldBe("db.objectStoreNames.contains('')", "false");
75    shouldBe("db.objectStoreNames.contains('test456')", "false");
76    shouldBe("db.objectStoreNames.contains('test123')", "true");
77}
78
79function commitAndContinue()
80{
81    window.setTimeout(testSetVersionAbort, 0);
82}
83
84function testSetVersionAbort()
85{
86    request = evalAndLog('db.setVersion("version c")');
87    request.onsuccess = createAnotherObjectStore;
88    request.onerror = unexpectedErrorCallback;
89}
90
91function createAnotherObjectStore()
92{
93    shouldBeEqualToString("db.version", "version c");
94    shouldBeEqualToString("db.name", "database-basics");
95    checkObjectStore();
96
97    objectStore = evalAndLog('db.createObjectStore("test456")');
98    var setVersionTrans = evalAndLog("setVersionTrans = event.target.result");
99    shouldBeTrue("setVersionTrans !== null");
100    setVersionTrans.oncomplete = unexpectedCompleteCallback;
101    setVersionTrans.onabort = checkMetadata;
102    setVersionTrans.abort();
103}
104
105function checkMetadata()
106{
107    shouldBeEqualToString("db.version", "version b");
108    checkObjectStore();
109    done();
110}
111
112test();
113
114var successfullyParsed = true;
115
116</script>
117</body>
118</html>
119