<html>
<head>
<script>
var logWin = window.parent.opener;
logWin.log('Initializing Iframe');

var notificationCenter = null;
function test() {
  notificationCenter = window.webkitNotifications;
  logWin.log("Before transfer: checkPermission returned (should be 1): " + notificationCenter.checkPermission());
  setTimeout("window.parent.transferIframe();", 5000); // Wait long enough for Chrome popup blocker to release the window so it can actually close.
}

function testAfterClose()
{
  logWin.log("After transfer: checkPermission returned (should be 2): " + notificationCenter.checkPermission());
}
window.finish = function() {
  logWin.log("After transfer, the checkPermission call is accessing a destroyed object and can return invalid value or crash, depending on circumstances.");
  setInterval(testAfterClose, 1000); // Do it several times in a row, it'll crash after 1-3 times
}
</script>
</head>
<body onload=test()>
</body>
</html>