tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / storage / indexeddb / odd-strings.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../../fast/js/resources/js-test-pre.js"></script>
5 <script src="resources/shared.js"></script>
6 </head>
7 <body>
8 <p id="description"></p>
9 <div id="console"></div>
10 <script>
11
12 description("Test IndexedDB odd value datatypes");
13 if (window.layoutTestController)
14     layoutTestController.waitUntilDone();
15
16 function test()
17 {
18     indexedDB = evalAndLog("indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;");
19     shouldBeFalse("indexedDB == null");
20     IDBDatabaseException = evalAndLog("IDBDatabaseException = window.IDBDatabaseException || window.webkitIDBDatabaseException;");
21     shouldBeFalse("IDBDatabaseException == null");
22     IDBCursor = evalAndLog("IDBCursor = window.IDBCursor || window.webkitIDBCursor;");
23     shouldBeFalse("IDBCursor == null");
24     IDBKeyRange = evalAndLog("IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;");
25     shouldBeFalse("IDBKeyRange == null");
26
27     testData = [{ description: 'null',               name: '\u0000' },
28                 { description: 'faihu',              name: '\ud800\udf46' },
29                 { description: 'unpaired surrogate', name: '\ud800' },
30                 { description: 'fffe',               name: '\ufffe' },
31                 { description: 'ffff',               name: '\uffff' },
32                 { description: 'line separator',     name: '\u2028' }
33     ];
34     nextToOpen = 0;
35     openNextDatabase();
36 }
37
38 function openNextDatabase()
39 {
40     debug("opening a database named " + testData[nextToOpen].description);
41     request = evalAndLog("indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)");
42     request.onerror = unexpectedErrorCallback;
43     request.onsuccess = openSuccess;
44 }
45
46 function openSuccess()
47 {
48     db = evalAndLog("db = event.target.result");
49     request = evalAndLog("request = db.setVersion('1')");
50     request.onsuccess = addAKey;
51     request.onerror = unexpectedErrorCallback;
52 }
53
54 function addAKey()
55 {
56     deleteAllObjectStores(db);
57
58     objectStore = evalAndLog("objectStore = db.createObjectStore(testData[nextToOpen].name);");
59     key = evalAndLog("key = testData[nextToOpen].name");
60     request = evalAndLog("request = objectStore.add(key, key);");
61     request.onsuccess = closeDatabase;
62     request.onerror = unexpectedErrorCallback;
63 }
64
65 function closeDatabase()
66 {
67     evalAndLog("db.close()");
68     debug("");
69     if (++nextToOpen < testData.length) {
70         openNextDatabase();
71     } else {
72         nextToOpen = 0;
73         verifyNextDatabase();
74     }
75 }
76
77 function verifyNextDatabase()
78 {
79     debug("reopening a database named " + testData[nextToOpen].description);
80     request = evalAndLog("indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)");
81     request.onerror = unexpectedErrorCallback;
82     request.onsuccess = openSuccess2;
83 }
84
85 function openSuccess2()
86 {
87     db = evalAndLog("db = event.target.result");
88     request = evalAndLog("request = db.setVersion('1')");
89     request.onerror = unexpectedErrorCallback;
90     request.onsuccess = getAKey;
91 }
92
93 function getAKey()
94 {
95     trans = evalAndLog("trans = event.target.result");
96     objectStore = evalAndLog("objectStore = trans.objectStore(testData[nextToOpen].name);");
97     key = evalAndLog("key = testData[nextToOpen].name");
98     request = evalAndLog("request = objectStore.openCursor();");
99     request.onerror = unexpectedErrorCallback;
100     request.onsuccess = openCursorSuccess;
101 }
102
103 function openCursorSuccess()
104 {
105     cursor = evalAndLog("cursor = event.target.result;");
106     shouldBe("cursor.key", "testData[nextToOpen].name");
107     shouldBe("cursor.value", "testData[nextToOpen].name");
108     if (++nextToOpen < testData.length) {
109         debug("");
110         verifyNextDatabase();
111     } else {
112         done();
113     }
114 }
115
116
117 test();
118
119 </script>
120 </body>
121 </html>