<!DOCTYPE html><!-- webkit-test-runner [ TabsToLinks=true SpatialNavigationEnabled=true ] -->
<html>
  <head>
    <script src="../../resources/js-test-pre.js"></script>
    <script src="resources/spatial-navigation-utils.js"></script>
    <script type="application/javascript">

    var resultMap = [
      ["Down", "end"],
      ["DONE", "DONE"]
    ];

    if (window.testRunner) {
      testRunner.dumpAsText();
      testRunner.waitUntilDone();
    }

    function runTest()
    {
      // starting the test itself: get to a known place.
      document.getElementById("start").focus();

      initTest(resultMap, testCompleted);
    }

    function testCompleted()
    {
      if (window.testRunner)
        testRunner.notifyDone();
    }

    window.onload = runTest;

    </script>
    <script src="../resources/js-test-post.js"></script>
  </head>

  <body id="some-content" xmlns="http://www.w3.org/1999/xhtml">
      <p>This is <a id="start" href="a">link_1</a>.</p>
      <br>This is <iframe id="1" width=100 height=100 style="display:none"  src="data:text/html,
        <body>
          <a id='11' href='http://a'>b</a>
          <a id='12' href='http://a'>c</a>
          <a id='13' href='http://a'>d</a>
        </body>
        "></iframe><br> hidden iframe.<br>
      <p>This is <a id="end" href="a">link_2</a>.</p>
    <div id="console"></div>
    <p>This test is to test that iframe with display:none does not get focus, and neither do its descendants</p>
  </body>
</html>
