• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<script>
4
5function log(message)
6{
7    document.body.innerHTML += message + "<br>";
8}
9
10function terminateTest()
11{
12    if (window.layoutTestController)
13        layoutTestController.notifyDone();
14}
15
16function openTestDatabase()
17{
18    return openDatabase("ReadTransactionsRunningConcurrentlyTest",
19                        "1.0",
20                        "Test to make sure that multiple read transactions on different DB handles to the same DB run concurrently.",
21                        32768);
22}
23
24var readTransactionsInProgress = 0;
25
26function runReadTransaction(db)
27{
28    db.readTransaction(function(tx) {
29            readTransactionsInProgress++;
30        }, function(error) {
31            log("Read transaction failed: " + error.message);
32            terminateTest();
33        }, function() {
34            if (readTransactionsInProgress == 2)
35                log("Read transactions running concurrently.");
36            readTransactionsInProgress--;
37            if (readTransactionsInProgress == 0)
38                terminateTest();
39        });
40}
41
42function runTest() {
43    if (window.layoutTestController) {
44        layoutTestController.dumpAsText();
45        layoutTestController.waitUntilDone();
46    }
47
48    try {
49        var db1 = openTestDatabase();
50        var db2 = openTestDatabase();
51        db1.transaction(function(tx) {
52                tx.executeSql("CREATE TABLE IF NOT EXISTS Test (Foo int);");
53            }, function(error) {
54                log("Cannot create the Test table: " + error.message);
55                terminateTest();
56            }, function() {
57                runReadTransaction(db1);
58                runReadTransaction(db2);
59            });
60     } catch(err) { log(err); }
61}
62</script>
63</head>
64<body onload="runTest();">
65This test tests that two read-only transactions on different handles to the same database run concurrently.<br>
66</body>
67</html>
68