<!DOCTYPE html>
<html>
<body>
This test tests that the openDatabase() creation callback is called in the right world.
<div id="console"></div>
<script>
var creationCallbacksExecuted = 0;
function done()
{
    if ((++creationCallbacksExecuted == 2) && (window.layoutTestController))
        layoutTestController.notifyDone();
}

function creationCallback1(db)
{
    alert("FAIL: Visible in isolated world.");
    done();
}

function creationCallback2(db)
{
    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 creationCallback1(db)\n" +
        "{\n" +
        "    alert(document.body.foo);\n" +
        "    window.location='javascript:done()';\n" +
        "}\n" +
        "var db1 = openDatabase('OpenDatabaseCreationCallbackIsolatedWorld', '1.0', '', 1, creationCallback1);");

    var db2 = openDatabase('OpenDatabaseCreationCallbackIsolatedWorld2', '1.0', '', 1, creationCallback2);
}
</script>
</body>
</html>
