OSDN Git Service

am a5b8875c: (-s ours) am 1baa4609: Cherry-pick WebKit security fix (webkit.org r6470...
[android-x86/external-webkit.git] / LayoutTests / storage / indexeddb / database-basics.html
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
13 description("Test the basics of IndexedDB's IDBDatabase.");
14 if (window.layoutTestController) 
15     layoutTestController.waitUntilDone();
16
17 function test()
18 {
19     result = evalAndLog("webkitIndexedDB.open('name', 'description')");
20     verifyResult(result);
21     result.onsuccess = openSuccess;
22     result.onerror = unexpectedErrorCallback;
23 }
24
25 function openSuccess()
26 {
27     verifySuccessEvent(event);
28     window.db = evalAndLog("db = event.result");
29
30     result = evalAndLog("db.setVersion('new version')");
31     verifyResult(result);
32     result.onsuccess = setVersionSuccess;
33     result.onerror = unexpectedErrorCallback;
34 }
35
36 function setVersionSuccess()
37 {
38     debug("setVersionSuccess():");
39     verifySuccessEvent(event);
40     window.trans = evalAndLog("trans = event.result");
41     shouldBeTrue("trans !== null");
42     trans.onabort = unexpectedAbortCallback;
43
44     deleteAllObjectStores(db, testSetVersion);
45 }
46
47 function testSetVersion()
48 {
49     debug("Testing setVersion.");
50     result = evalAndLog('db.setVersion("version a")');
51     verifyResult(result);
52     result.onsuccess = setVersionAgain;
53     result.onerror = unexpectedErrorCallback;
54 }
55
56 function setVersionAgain()
57 {
58     verifySuccessEvent(event);
59
60     result = evalAndLog('db.setVersion("version b")');
61     verifyResult(result);
62     result.onsuccess = createObjectStore;
63     result.onerror = unexpectedErrorCallback;
64 }
65
66 function createObjectStore()
67 {
68     verifySuccessEvent(event);
69     shouldBeEqualToString("db.version", "version b");
70     shouldBeEqualToString("db.name", "name");
71     shouldBe("db.objectStores", "[]");
72     shouldBe("db.objectStores.length", "0");
73     shouldBe("db.objectStores.contains('')", "false");
74     shouldBeNull("db.objectStores[0]");
75     shouldBeNull("db.objectStores.item(0)");
76
77     objectStore = evalAndLog('db.createObjectStore("test123")');
78     checkObjectStore();
79     commitAndContinue();
80 }
81
82 function checkObjectStore()
83 {
84     shouldBe("db.objectStores", "['test123']");
85     shouldBe("db.objectStores.length", "1");
86     shouldBe("db.objectStores.contains('')", "false");
87     shouldBe("db.objectStores.contains('test456')", "false");
88     shouldBe("db.objectStores.contains('test123')", "true");
89 }
90
91 function commitAndContinue()
92 {
93     window.setTimeout(testSetVersionAbort, 0);
94 }
95
96 function testSetVersionAbort()
97 {
98     result = evalAndLog('db.setVersion("version c")');
99     verifyResult(result);
100     result.onsuccess = createAnotherObjectStore;
101     result.onerror = unexpectedErrorCallback;
102 }
103
104 function createAnotherObjectStore()
105 {
106     verifySuccessEvent(event);
107     shouldBeEqualToString("db.version", "version c");
108     shouldBeEqualToString("db.name", "name");
109     checkObjectStore();
110
111     objectStore = evalAndLog('db.createObjectStore("test456")');
112     var setVersionTrans = evalAndLog("setVersionTrans = event.result");
113     shouldBeTrue("setVersionTrans !== null");
114     setVersionTrans.oncomplete = unexpectedCompleteCallback;
115     setVersionTrans.onabort = checkMetadata;
116     setVersionTrans.abort();
117 }
118
119 function checkMetadata()
120 {
121     shouldBeEqualToString("db.version", "version b");
122     checkObjectStore();
123     done();
124 }
125
126 test();
127
128 var successfullyParsed = true;
129
130 </script>
131 </body>
132 </html>