diff options
Diffstat (limited to 'LayoutTests/storage/multiple-databases-garbage-collection.html')
-rw-r--r-- | LayoutTests/storage/multiple-databases-garbage-collection.html | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/LayoutTests/storage/multiple-databases-garbage-collection.html b/LayoutTests/storage/multiple-databases-garbage-collection.html new file mode 100644 index 0000000..45246a9 --- /dev/null +++ b/LayoutTests/storage/multiple-databases-garbage-collection.html @@ -0,0 +1,77 @@ +<html> +<head> +<script> + +function log(message) +{ + document.body.innerHTML += message + "<br>"; +} + +function GC() +{ + // Force GC. + if (window.GCController) + GCController.collect(); + else { + for (var i = 0; i < 10000; ++i) { + ({ }); + } + } +} + +// Variable for the database that will never be forgotten +var persistentDB = 0; +// Variable for the forgotten database +var forgottenDB = 0; + +var completed = 0; +function checkCompletion() +{ + if (++completed == 2 && window.layoutTestController) + layoutTestController.notifyDone(); +} + +function runTest() +{ + if (window.layoutTestController) { + layoutTestController.dumpAsText(); + layoutTestController.waitUntilDone(); + } + + persistentDB = openDatabase("MultipleDatabasesTest1", "1.0", "Test one out of a set of databases being destroyed (1)", 32768); + forgottenDB = openDatabase("MultipleDatabasesTest2", "1.0", "Test one out of a set of databases being destroyed (2)", 32768); + + persistentDB.transaction(function(tx) { + tx.executeSql("CREATE TABLE IF NOT EXISTS DataTest (randomData)", [], function(tx, result) { + for (var i = 0; i < 25; ++i) + tx.executeSql("INSERT INTO DataTest (randomData) VALUES (1)", []); + }); + }, function(err) { + log("Persistent Database Transaction Errored - " + err); + checkCompletion(); + }, function() { + log("Persistent Database Transaction Complete"); + checkCompletion(); + }); + + forgottenDB.transaction(function(tx) { + tx.executeSql("CREATE TABLE IF NOT EXISTS EmptyTable (unimportantData)", []); + }, function(err) { + log("Forgotten Database Transaction Errored - " + err); + forgottenDB = 0; + GC(); + checkCompletion(); + }, function() { + log("Forgotten Database Transaction Complete"); + forgottenDB = 0; + GC(); + checkCompletion(); + }); +} + +</script> +<body onload="runTest();"> +This test opens two databases, queues up a series of operations on both, then "forgets" about one of them. +After forcing GC, resources associated with that database should be freed gracefully.<br> +</body> +</html> |