<!DOCTYPE html> <html> <body> This test tests that the transaction error callback is called in the right world. <div id="console"></div> <script> var transactionErrorCallbacksInvoked = 0; function done() { if ((++transactionErrorCallbacksInvoked == 2) && (window.layoutTestController)) layoutTestController.notifyDone(); } function transactionErrorCallback1(tx) { alert("FAIL: Visible in isolated world."); done(); } function transactionErrorCallback2(tx) { alert(document.body.bar); done(); } document.body.foo = "FAIL: document.body.foo visible in isolated world."; document.body.bar = "PASS: document.body.bar visible in a callback created in this world."; if (window.layoutTestController) { layoutTestController.clearAllDatabases(); layoutTestController.dumpAsText(); layoutTestController.waitUntilDone(); layoutTestController.evaluateScriptInIsolatedWorld( 0, "function transactionErrorCallback1(tx)\n" + "{\n" + " alert(document.body.foo);\n" + " window.location='javascript:done()';\n" + "}\n" + "var db1 = openDatabase('TransactionErrorCallbackIsolatedWorld1', '1.0', '', 1);\n" + "db1.transaction(function(tx) {\n" + " tx.executeSql('BAD STATEMENT', [], function(tx, data) {}, function(tx, error) { return true; });\n" + "}, transactionErrorCallback1);"); var db2 = openDatabase('TransactionErrorCallbackIsolatedWorld2', '1.0', '', 1); db2.transaction(function(tx) { tx.executeSql('BAD STATEMENT', [], function(tx, data) {}, function(tx, error) { return true; }); }, transactionErrorCallback2); } </script> </body> </html>