Index: content/test/data/simple_database.html |
=================================================================== |
--- content/test/data/simple_database.html (revision 152782) |
+++ content/test/data/simple_database.html (working copy) |
@@ -42,6 +42,52 @@ |
}); |
} |
+ |
+// Updates a record at the given index with the given text. The indices are |
+// 0-based and are ordered from oldest record, to newest record. |
+function updateRecord(index, text) { |
+ var didUpdate = false; |
+ findId(index, function(rowId) { |
+ g_db.transaction( |
+ function(tx) { |
+ tx.executeSql( |
+ "UPDATE table1 SET data=? WHERE ROWID=?", |
+ [text, rowId], |
+ function(tx, result) { |
+ if (result.rowsAffected == 1) |
+ didUpdate = true; |
+ else if (result.rowsAffected == 0) |
+ sendValueToTest("could not update index: " + index); |
+ else |
+ sendValueToTest("multiple rows with index: " + index); |
+ }); |
+ }, |
+ function(error) { |
+ sendValueToTest("update error: " + error); |
+ }, |
+ function() { |
+ if (didUpdate) |
+ sendValueToTest("done"); |
+ }); |
+ }); |
+} |
+ |
+// Deletes a record at the given index. |
+function deleteRecord(index) { |
+ findId(index, function(rowId) { |
+ g_db.transaction( |
+ function(tx) { |
+ tx.executeSql("DELETE FROM table1 WHERE ROWID=?", [rowId]); |
+ }, |
+ function(error) { |
+ sendValueToTest("delete error: " + error); |
+ }, |
+ function() { |
+ sendValueToTest("done"); |
+ }); |
+ }); |
+} |
+ |
// Gets all the records in the database, ordered by their age. |
function getRecords() { |
g_db.readTransaction(function(tx) { |
@@ -58,11 +104,34 @@ |
sendValueToTest(items); |
}, |
function(tx, error) { |
- sendValueToTest(error); |
+ sendValueToTest("getRecords error: " + error); |
}); |
}); |
} |
+// Helper function that finds the ID for a record based on a given index. |
+function findId(index, callback) { |
+ g_db.readTransaction(function(tx) { |
+ // |ROWID| is a special sqlite column. It is unique and is incremented |
+ // automatically when a new record is created. |
+ // |LIMIT| is a nonstandard clause supported by sqlite that lets us pick |
+ // rows from the database by index. E.g., LIMIT 2,10 will give us 10 records |
+ // starting at offset 2. |
+ tx.executeSql( |
+ "SELECT ROWID AS id FROM table1 ORDER BY ROWID LIMIT ?,1", |
+ [index], |
+ function(tx, result) { |
+ if (result.rows.length >= 1) |
+ callback(result.rows.item(0).id); |
+ else |
+ sendValueToTest("could not find row with index: " + index); |
+ }, |
+ function(tx, error) { |
+ sendValueToTest("findId error: " + error); |
+ }); |
+ }); |
+} |
+ |
function sendValueToTest(value) { |
//alert(value); |
window.domAutomationController.setAutomationId(0); |