| <!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> |