| <html> |
| <head> |
| <script> |
| function log(message) |
| { |
| document.getElementById("console").innerHTML += message + "<br>"; |
| } |
| |
| function finishTest() |
| { |
| log("Test part 1 Complete"); |
| if (window.layoutTestController) |
| layoutTestController.notifyDone(); |
| } |
| |
| function errorFunction(error) |
| { |
| log("Test failed - " + error.message); |
| finishTest(); |
| } |
| |
| function addData(db) |
| { |
| db.transaction(function(tx) { |
| log("Inserting some data"); |
| // Load a new page while the transaction is still in progress, interrupting the transaction. |
| // This should not leave the database locked and on the next page we should be able to insert |
| // some more data. |
| tx.executeSql("INSERT INTO DataTest (testData) VALUES (ZEROBLOB(524200))", [], |
| function(tx, result) { location.href = "./resources/database-lock-after-reload-2.html"; }, |
| function(tx, error) { errorFunction(error); }); |
| tx.executeSql("INSERT INTO DataTest (testData) VALUES (ZEROBLOB(524200))"); |
| }, errorFunction, function() { finishTest(); }); |
| } |
| |
| function runTest() |
| { |
| if (window.layoutTestController) { |
| layoutTestController.clearAllDatabases(); |
| layoutTestController.dumpAsText(); |
| layoutTestController.waitUntilDone(); |
| } |
| |
| var database; |
| try { |
| database = openDatabase("DatabaseLockTest", "1.0", "Test for database locking", 5242880); |
| } catch (e) { |
| log("Error - could not open database"); |
| finishTest(); |
| } |
| |
| database.transaction(function(tx) { |
| log("Adding a table"); |
| tx.executeSql("CREATE TABLE DataTest (testData)", [], function(tx, result) { }, |
| function(tx, error) { errorFunction(error); }); |
| }, errorFunction, function() { addData(database); }); |
| } |
| |
| </script> |
| </head> |
| |
| <body onload="runTest()"> |
| <pre id="console"> |
| </pre> |
| </body> |
| |
| </html> |