blob: 90b7d81a5019de536bcafa2bfb14107e163928b8 [file] [log] [blame]
<html>
<head>
<script>
var frame = 1;
function printReferrer()
{
var req = new XMLHttpRequest();
req.open("GET", "callbacks-are-called-in-correct-context.cgi", false);
req.send(null);
top.frames[0].document.getElementById("console").innerText += "Referrer: " + req.responseText + "\n";
}
function logCallback(callbackType)
{
top.frames[0].document.getElementById("console").innerText += "PASS: The " + callbackType + " callback was called in the correct context.\n"
printReferrer();
}
function failingTransactionCallback(tx)
{
logCallback("transaction");
tx.executeSql("CREATE TABLE IF NOT EXISTS Test (Foo INT)", [], successStatementCallback, null);
tx.executeSql("BAD SQL STATEMENT", [], null, errorStatementCallback);
}
function errorStatementCallback(tx, error)
{
logCallback("statement error");
return true; // fail the transaction
}
function successStatementCallback(tx, data)
{
logCallback("statement success");
}
function errorTransactionCallback(error)
{
logCallback("transaction error");
}
function successTransactionCallback()
{
logCallback("transaction success");
frame++;
switch (frame) {
case 2:
runTestInSecondFrame();
return;
case 3:
top.frames[3].runTestInThirdFrame();
return;
case 4:
if (window.testRunner)
testRunner.notifyDone();
return;
default:
throw "Bad 'frame' value: " + frame;
}
}
function runTestInSecondFrame()
{
// test that all callbacks are executed in this context, even though 'db' is defined in another context
top.frames[1].db.transaction(failingTransactionCallback, errorTransactionCallback);
top.frames[1].db.transaction(function(tx) { }, null, successTransactionCallback);
}
</script>
</head>
<body>
</body>
</html>