| <html> |
| <head> |
| <script> |
| |
| function log(message) |
| { |
| document.body.innerHTML += message + "<br>"; |
| } |
| |
| function terminateTest() |
| { |
| if (window.layoutTestController) |
| layoutTestController.notifyDone(); |
| } |
| |
| function openTestDatabase() |
| { |
| return openDatabase("ReadTransactionsRunningConcurrentlyTest", |
| "1.0", |
| "Test to make sure that multiple read transactions on different DB handles to the same DB run concurrently.", |
| 32768); |
| } |
| |
| var readTransactionsInProgress = 0; |
| |
| function runReadTransaction(db) |
| { |
| db.readTransaction(function(tx) { |
| readTransactionsInProgress++; |
| }, function(error) { |
| log("Read transaction failed: " + error.message); |
| terminateTest(); |
| }, function() { |
| if (readTransactionsInProgress == 2) |
| log("Read transactions running concurrently."); |
| readTransactionsInProgress--; |
| if (readTransactionsInProgress == 0) |
| terminateTest(); |
| }); |
| } |
| |
| function runTest() { |
| if (window.layoutTestController) { |
| layoutTestController.dumpAsText(); |
| layoutTestController.waitUntilDone(); |
| } |
| |
| try { |
| var db1 = openTestDatabase(); |
| var db2 = openTestDatabase(); |
| db1.transaction(function(tx) { |
| tx.executeSql("CREATE TABLE IF NOT EXISTS Test (Foo int);"); |
| }, function(error) { |
| log("Cannot create the Test table: " + error.message); |
| terminateTest(); |
| }, function() { |
| runReadTransaction(db1); |
| runReadTransaction(db2); |
| }); |
| } catch(err) { log(err); } |
| } |
| </script> |
| </head> |
| <body onload="runTest();"> |
| This test tests that two read-only transactions on different handles to the same database run concurrently.<br> |
| </body> |
| </html> |