• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<script>
4function log(message)
5{
6    document.getElementById("console").innerHTML += message + "<br>";
7}
8
9function finishTest()
10{
11    log("Test part 1 Complete");
12    if (window.layoutTestController)
13        layoutTestController.notifyDone();
14}
15
16function errorFunction(error)
17{
18    log("Test failed - " + error.message);
19    finishTest();
20}
21
22function addData(db)
23{
24    db.transaction(function(tx) {
25        log("Inserting some data");
26        // Load a new page while the transaction is still in progress, interrupting the transaction.
27        // This should not leave the database locked and on the next page we should be able to insert
28        // some more data.
29        tx.executeSql("INSERT INTO DataTest (testData) VALUES (ZEROBLOB(524200))", [],
30            function(tx, result) { location.href = "./resources/database-lock-after-reload-2.html"; },
31            function(tx, error) { errorFunction(error); });
32        tx.executeSql("INSERT INTO DataTest (testData) VALUES (ZEROBLOB(524200))");
33    }, errorFunction, function() { finishTest(); });
34}
35
36function runTest()
37{
38    if (window.layoutTestController) {
39        layoutTestController.clearAllDatabases();
40        layoutTestController.dumpAsText();
41        layoutTestController.waitUntilDone();
42    }
43
44    var database;
45    try {
46        database = openDatabase("DatabaseLockTest", "1.0", "Test for database locking", 5242880);
47    } catch (e) {
48        log("Error - could not open database");
49        finishTest();
50    }
51
52    database.transaction(function(tx) {
53        log("Adding a table");
54        tx.executeSql("CREATE TABLE DataTest (testData)", [], function(tx, result) { },
55            function(tx, error) { errorFunction(error); });
56    }, errorFunction, function() { addData(database); });
57}
58
59</script>
60</head>
61
62<body onload="runTest()">
63<pre id="console">
64</pre>
65</body>
66
67</html>
68