<!doctype html>
<html>
<body>
<iframe id="frame1" src="chrome-extension://ficgdghpakbhhkmdjamiedmcoobamkoo/public.html"></iframe>
<iframe id="frame2" src="chrome-extension://ficgdghpakbhhkmdjamiedmcoobamkoo/nonexistent.html"></iframe>
<script>

// We expect that chrome.runtime.id will not be set in this frame, and that
// either chrome.runtime.sendMessage is not defined or we're able to call it
// (but elsewhere in the browser_test that uses this page we check that the
// message was not actually sent, or at least didn't incorrectly seem to come
// from the extension ficgdghpakbhhkmdjamiedmcoobamkoo).
function testFrame(win) {
  var haveId = true;
  var didRun = false;
  try {
    haveId = win.eval('typeof chrome.runtime != "undefined" && ' +
                      'typeof chrome.runtime.id != "undefined"');
    win.eval('typeof chrome.runtime != "undefined" ' +
             '&& chrome.runtime.sendMessage(' +
             '"mlmdejkkkhmhchpmepehbcncoalclded", "evil")');
    didRun = true;
  } catch (e) {
    console.log('caught exception: ' + e);
  }
  return didRun && !haveId;
}

// Test the two frames (actual page and nonexistent page) that were included in
// the original html document.
var frame1Success = testFrame(document.getElementById('frame1').contentWindow);
var frame2Success = testFrame(document.getElementById('frame2').contentWindow);

// Now test two frames that get dynamically created and added to the DOM, again
// one actual page and one nonexistent.
var frame3 = document.createElement('iframe');
frame3.src = 'chrome-extension://ficgdghpakbhhkmdjamiedmcoobamkoo/public.html';
document.body.appendChild(frame3);
var frame3Success = testFrame(frame3.contentWindow);

var frame4 = document.createElement('iframe');
frame4.src =
    'chrome-extension://ficgdghpakbhhkmdjamiedmcoobamkoo/nonexistent.html';
document.body.appendChild(frame4);
var frame4Success = testFrame(frame4.contentWindow);

// Finally, test against two newly opened windows.
var newWin1 = window.open(
    'chrome-extension://ficgdghpakbhhkmdjamiedmcoobamkoo/public.html');
var newWindow1Success = testFrame(newWin1);

var newWin2 = window.open(
    'chrome-extension://ficgdghpakbhhkmdjamiedmcoobamkoo/nonexistent.html');
var newWindow2Success = testFrame(newWin2);

function getResult() {
  window.domAutomationController.send(
      frame1Success && frame2Success && frame3Success &&
      frame4Success && newWindow1Success && newWindow2Success);
}

</script>
</body>
</html>
