<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>