<!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=0 height=0  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> an iframe with size 0.<br>
     <p>This is <a id="end" href="a">link_2</a>.</p>
    <div id="console"></div>
    <p>This test is to test that an iframe with size 0 does not get focus, and neither do its descendants.
  </body>
</html>
