tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / storage / indexeddb / readonly.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 description("Test IndexedDB readonly properties");
12 if (window.layoutTestController)
13     layoutTestController.waitUntilDone();
14
15 function setReadonlyProperty(property, value)
16 {
17     oldValue = eval(property);
18     debug("trying to set readonly property " + property);
19     evalAndLog(property + " = " + value);
20     newValue = eval(property);
21     if (oldValue == newValue) {
22         testPassed(property + " is still " + oldValue);
23     } else {
24         testFailed(property + " value was changed");
25     }
26 }
27
28 function test()
29 {
30     indexedDB = evalAndLog("indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;");
31     shouldBeFalse("indexedDB == null");
32     IDBDatabaseException = evalAndLog("IDBDatabaseException = window.IDBDatabaseException || window.webkitIDBDatabaseException;");
33     shouldBeFalse("IDBDatabaseException == null");
34     IDBCursor = evalAndLog("IDBCursor = window.IDBCursor || window.webkitIDBCursor;");
35     shouldBeFalse("IDBCursor == null");
36     IDBKeyRange = evalAndLog("IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;");
37     shouldBeFalse("IDBKeyRange == null");
38
39     name = "foo";
40     description = "My Test Database";
41     request = evalAndLog("indexedDB.open(name, description)");
42     request.onsuccess = openSuccess;
43     request.onerror = unexpectedErrorCallback;
44 }
45
46 function openSuccess()
47 {
48     setReadonlyProperty("request.result", "Infinity");
49     setReadonlyProperty("request.errorCode", "666");
50     setReadonlyProperty("request.source", "this");
51     setReadonlyProperty("request.transaction", "this");
52     setReadonlyProperty("request.readyState", "666");
53
54     db = evalAndLog("db = event.target.result");
55     setReadonlyProperty("db.name", "'bar'");
56
57     request = evalAndLog("request = db.setVersion('1')");
58     request.onsuccess = createAndPopulateObjectStore;
59     request.onerror = unexpectedErrorCallback;
60 }
61
62 function createAndPopulateObjectStore()
63 {
64     transaction = evalAndLog("transaction = event.target.result;");
65     setReadonlyProperty("transaction.mode", "666");
66     setReadonlyProperty("transaction.db", "this");
67
68     deleteAllObjectStores(db);
69
70     objectStore = evalAndLog("objectStore = db.createObjectStore('foo');");
71
72     setReadonlyProperty("objectStore.name", "'bar'");
73     setReadonlyProperty("objectStore.keyPath", "'bar'");
74 /* fails, split into separate test
75     setReadonlyProperty("objectStore.indexNames", "['bar']");
76 */
77 /* fails, split into separate test
78     setReadonlyProperty("objectStore.transaction", "this");
79 */
80
81     result = evalAndLog("result = objectStore.add({}, 'first');");
82     result.onerror = unexpectedErrorCallback;
83     result.onsuccess = addSuccess;
84 }
85
86 function addSuccess()
87 {
88     result = evalAndLog("result = objectStore.openCursor();");
89     result.onerror = unexpectedErrorCallback;
90     result.onsuccess = checkCursor;
91 }
92
93 function checkCursor()
94 {
95     cursor = evalAndLog("cursor = event.target.result;");
96     if (cursor) {
97         setReadonlyProperty("cursor.source", "this");
98         setReadonlyProperty("cursor.direction", "666");
99         setReadonlyProperty("cursor.key", "Infinity");
100         setReadonlyProperty("cursor.primaryKey", "Infinity");
101     } else {
102         testFailed("cursor is null");
103     }
104
105     index = evalAndLog("index = objectStore.createIndex('first', 'first');");
106     setReadonlyProperty("index.name", "'bar'");
107     setReadonlyProperty("index.objectStore", "this");
108     setReadonlyProperty("index.keyPath", "'bar'");
109     setReadonlyProperty("index.unique", "true");
110
111     keyRange = IDBKeyRange.only("first");
112     setReadonlyProperty("keyRange.lower", "Infinity");
113     setReadonlyProperty("keyRange.upper", "Infinity");
114     setReadonlyProperty("keyRange.lowerOpen", "true");
115     setReadonlyProperty("keyRange.upperOpen", "true");
116
117     done();
118 }
119
120
121 test();
122
123 </script>
124 </body>
125 </html>