<html> <head> <script> function log(message) { document.getElementById("console").innerHTML += message + "<br>"; } function finishTest() { if (window.layoutTestController) layoutTestController.notifyDone(); } function runTest() { if (window.layoutTestController) { layoutTestController.clearAllDatabases(); layoutTestController.setDatabaseQuota(32768); layoutTestController.dumpDatabaseCallbacks(); layoutTestController.dumpAsText(); layoutTestController.waitUntilDone(); } var transactionsRun = 0; // Open a new database with a creation callback, and make sure the creation callback is queued var creationCallbackCalled1 = false; var db1Name = "OpenDatabaseCreationCallback1" + (new Date()).getTime(); var db1 = openDatabase(db1Name, "1.0", "", 1, function(db) { creationCallbackCalled1 = true; if (db.version != "") { log("Creation callback was called with a database with version " + db.version + "; empty string expected."); finishTest(); } }); // Putting this code inside a transaction on 'db1' makes sure that it is executed after // the creation callback is. db1.transaction(function(tx) { if (!creationCallbackCalled1) { log("Creation callback for db1 was not called."); finishTest(); } if (++transactionsRun == 2) finishTest(); }); // Try to open another handle to the same database. // Since the version of this database is "" (empty string), openDatabase() should return // a null handle and throw a INVALID_STATE_ERR exception. var db1Fail = null; try { db1Fail = openDatabase(db1Name, "1.0", "", 1); log("This statement should not have been executed; an INVALID_STATE_ERR exception should've been thrown."); finishTest(); } catch(err) { if (db1Fail) { log("db1Fail should have been null."); finishTest(); } } // Open a handle to another database, first without a creation callback, then with one. // Make sure the creation callback is not called. var creationCallbackCalled2 = false; var db2 = openDatabase("OpenDatabaseCreationCallback2", "1.0", "", 1); db2 = openDatabase("OpenDatabaseCreationCallback2", "1.0", "", 1, function(db) { creationCallbackCalled2 = true; }); db2.transaction(function(tx) { if (creationCallbackCalled2) { log("Creation callback for db2 should not have been called."); finishTest(); } if (++transactionsRun == 2) finishTest(); }); } </script> </head> <body onload="runTest()"> This test tests openDatabase()'s creation callback. <pre id="console"> </pre> </body> </html>