- add sources.
[platform/framework/web/crosswalk.git] / src / content / test / data / simple_database.html
1 <html>
2 <script>
3
4 // Open a Web SQL database.
5 var g_db = null;
6 if (typeof window.openDatabase == "undefined") {
7   document.write("Error: Web SQL databases are not supported.");
8 }
9 try {
10   g_db = openDatabase("test", "1.0", "test database", 1024 * 1024);
11 } catch(err) {
12   document.write("Error: cannot open database.");
13 }
14
15 // Creates a table named "table1" with one text column named "data".
16 function createTable() {
17   if (!g_db)
18     return;
19   g_db.transaction(
20       function(tx) {
21         tx.executeSql("CREATE TABLE table1 (data TEXT)");
22       },
23       function(error) {
24         sendValueToTest(error);
25       },
26       function() {
27         sendValueToTest("done");
28       });
29 }
30
31 // Inserts a record into the database.
32 function insertRecord(text) {
33   g_db.transaction(
34       function(tx) {
35         tx.executeSql("INSERT INTO table1 VALUES (?)", [text]);
36       },
37       function(error) {
38         sendValueToTest(error);
39       },
40       function() {
41         sendValueToTest("done");
42       });
43 }
44
45
46 // Updates a record at the given index with the given text. The indices are
47 // 0-based and are ordered from oldest record, to newest record.
48 function updateRecord(index, text) {
49   var didUpdate = false;
50   findId(index, function(rowId) {
51     g_db.transaction(
52         function(tx) {
53           tx.executeSql(
54               "UPDATE table1 SET data=? WHERE ROWID=?",
55               [text, rowId],
56               function(tx, result) {
57                 if (result.rowsAffected == 1)
58                   didUpdate = true;
59                 else if (result.rowsAffected == 0)
60                   sendValueToTest("could not update index: " + index);
61                 else
62                   sendValueToTest("multiple rows with index: " + index);
63               });
64         },
65         function(error) {
66           sendValueToTest("update error: " + error);
67         },
68         function() {
69           if (didUpdate)
70             sendValueToTest("done");
71         });
72   });
73 }
74
75 // Deletes a record at the given index.
76 function deleteRecord(index) {
77   findId(index, function(rowId) {
78     g_db.transaction(
79         function(tx) {
80           tx.executeSql("DELETE FROM table1 WHERE ROWID=?", [rowId]);
81         },
82         function(error) {
83           sendValueToTest("delete error: " + error);
84         },
85         function() {
86           sendValueToTest("done");
87         });
88   });
89 }
90
91 // Gets all the records in the database, ordered by their age.
92 function getRecords() {
93   g_db.readTransaction(function(tx) {
94     tx.executeSql(
95         "SELECT data FROM table1 ORDER BY ROWID",
96         [],
97         function(tx, result) {
98           items = "";
99           for (var i = 0; i < result.rows.length; i++) {
100             if (items != "")
101               items += ", ";
102             items += result.rows.item(i).data;
103           }
104           sendValueToTest(items);
105         },
106         function(tx, error) {
107           sendValueToTest("getRecords error: " + error);
108         });
109   });
110 }
111
112 // Helper function that finds the ID for a record based on a given index.
113 function findId(index, callback) {
114   g_db.readTransaction(function(tx) {
115     // |ROWID| is a special sqlite column. It is unique and is incremented
116     // automatically when a new record is created.
117     // |LIMIT| is a nonstandard clause supported by sqlite that lets us pick
118     // rows from the database by index. E.g., LIMIT 2,10 will give us 10 records
119     // starting at offset 2.
120     tx.executeSql(
121         "SELECT ROWID AS id FROM table1 ORDER BY ROWID LIMIT ?,1",
122         [index],
123         function(tx, result) {
124           if (result.rows.length >= 1)
125             callback(result.rows.item(0).id);
126           else
127             sendValueToTest("could not find row with index: " + index);
128         },
129         function(tx, error) {
130         sendValueToTest("findId error: " + error);
131         });
132   });
133 }
134
135 function sendValueToTest(value) {
136   //alert(value);
137   window.domAutomationController.setAutomationId(0);
138   window.domAutomationController.send(value);
139 }
140
141 </script>
142
143 <body>
144 This page is used for testing Web SQL databases.
145 </body>
146 </html>