<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body">

<header>header</header>
<footer>footer</footer>
<section>section</section>
<article>article</article>
<nav>nav</nav>
<aside>aside</aside>

<article>
<header>Should be IGNORED because it's inside an article, so it should not be a landmark</header>
<footer>Should be IGNORED because it's inside an article, so it should not be a landmark</footer>
</article>

<section>
<header>Should be IGNORED because it's inside a section, so it should not be a landmark</header>
<footer>Should be IGNORED because it's inside a section, so it should not be a landmark</footer>
</section>

<p id="description"></p>
<div id="console"></div>

<script>

    description("This tests that the HTML5 section elements map to the correct AX roles.");

    if (window.accessibilityController) {

          document.getElementById("body").focus();
          var body = accessibilityController.focusedElement;
          shouldBe("body.childAtIndex(0).subrole", "'AXSubrole: AXLandmarkBanner'");
          shouldBe("body.childAtIndex(1).subrole", "'AXSubrole: AXLandmarkContentInfo'");
          shouldBe("body.childAtIndex(2).subrole", "'AXSubrole: AXDocumentRegion'");
          shouldBe("body.childAtIndex(3).subrole", "'AXSubrole: AXDocumentArticle'");
          shouldBe("body.childAtIndex(4).subrole", "'AXSubrole: AXLandmarkNavigation'");
          shouldBe("body.childAtIndex(5).subrole", "'AXSubrole: AXLandmarkComplementary'");

          // When a header and footer are inside an article, they should not be landmarks.
          shouldBe("body.childAtIndex(6).childAtIndex(0).subrole", "'AXSubrole: '");

          // When a header and footer are inside a section, they should not be landmarks.
          shouldBe("body.childAtIndex(7).childAtIndex(0).subrole", "'AXSubrole: '");
    }

</script>

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