<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body" onload="startTest();">
<form>
<label for="foo">Full Name:</label>
<input type="text" id="foo" />
</form>
<p id="description"></p>
<div id="console"></div>
<script>
  var webArea;
  var form;

  function checkResults() {
    // Actually check the results
    entry = form.childAtIndex(1);
    shouldBe("entry.role", "'AXRole: AXTextField'");
    shouldBe("entry.title", "'AXTitle: Full Name:'");
    finishJSTest();
  }

  function startTest() {
    description("This tests that AtkObjects derive their names from associated labels.");

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

    document.getElementById("body").focus();
    webArea = accessibilityController.focusedElement;
    form = webArea.childAtIndex(0);

    // Check results on idle to ensure layout() is done
    window.setTimeout("checkResults()", 0);
  }

  window.jsTestIsAsync = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
