| Index: chrome/test/data/extensions/api_test/bindings/frames_before_navigation.html
 | 
| diff --git a/chrome/test/data/extensions/api_test/bindings/frames_before_navigation.html b/chrome/test/data/extensions/api_test/bindings/frames_before_navigation.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..f4140e66725982c4fe786b97cf2c3f862ef1571f
 | 
| --- /dev/null
 | 
| +++ b/chrome/test/data/extensions/api_test/bindings/frames_before_navigation.html
 | 
| @@ -0,0 +1,64 @@
 | 
| +<!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>
 | 
| 
 |