accessible/tests/mochitest/hypertext/test_general.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <!DOCTYPE html>
     2 <html>
     3 <!--
     4 https://bugzilla.mozilla.org/show_bug.cgi?id=428248
     5 -->
     6 <head>
     7   <title>nsIHyper>TextAccessible chrome tests</title>
     8   <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
    10   <script type="application/javascript"
    11           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    12   <script type="application/javascript"
    13           src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
    15   <script type="application/javascript"
    16           src="../common.js"></script>
    17   <script type="application/javascript"
    18           src="../events.js"></script>
    20   <script type="application/javascript">
    21     var gParagraphAcc;
    23     function testLinkIndexAtOffset(aID, aOffset, aIndex)
    24     {
    25       var htAcc = getAccessible(aID, [nsIAccessibleHyperText]);
    26       is(htAcc.getLinkIndexAtOffset(aOffset), aIndex,
    27          "Wrong link index at offset " + aOffset + " for ID " + aID + "!");
    28     }
    30     function testThis(aID, aCharIndex, aExpectedLinkIndex, aName)
    31     {
    32       testLinkIndexAtOffset(gParagraphAcc, aCharIndex, aExpectedLinkIndex);
    34       var linkAcc = gParagraphAcc.getLinkAt(aExpectedLinkIndex);
    35       ok(linkAcc, "No accessible for link " + aID + "!");
    37       var linkIndex = gParagraphAcc.getLinkIndex(linkAcc);
    38       is(linkIndex, aExpectedLinkIndex, "Wrong link index for " + aID + "!");
    40       // Just test the link's name to make sure we get the right one.
    41       is(linkAcc.getAnchor(0).name, aName, "Wrong name for " + aID + "!");
    42     }
    44     //gA11yEventDumpToConsole = true;
    45     function doPreTest()
    46     {
    47       waitForImageMap("imgmap", doTest);
    48     }
    50     function doTest()
    51     {
    52       // Test link count
    53       gParagraphAcc = getAccessible("testParagraph", [nsIAccessibleHyperText]);
    54       is(gParagraphAcc.linkCount, 7, "Wrong link count for paragraph!");
    56       // normal hyperlink
    57       testThis("NormalHyperlink", 14, 0, "Mozilla Foundation");
    59       // ARIA hyperlink
    60       testThis("AriaHyperlink", 27, 1, "Mozilla Foundation Home");
    62       // ARIA hyperlink with status invalid
    63       testThis("InvalidAriaHyperlink", 63, 2, "Invalid link");
    65       // image map, but not its link children. They are not part of hypertext.
    66       testThis("imgmap", 76, 3, "b");
    68       // empty hyperlink
    69       testThis("emptyLink", 90, 4, null);
    71       // normal hyperlink with embedded span
    72       testThis("LinkWithSpan", 116, 5, "Heise Online");
    74       // Named anchor
    75       testThis("namedAnchor", 193, 6, "This should never be of state_linked");
    77       // Paragraph with link
    78       var p2 = getAccessible("p2", [nsIAccessibleHyperText]);
    79       var link = p2.getLinkAt(0);
    80       is(link, p2.getChildAt(0), "Wrong link for p2");
    81       is(p2.linkCount, 1, "Wrong link count for p2");
    83       // getLinkIndexAtOffset, causes the offsets to be cached;
    84       testLinkIndexAtOffset("p4", 0, 0); // 1st 'mozilla' link
    85       testLinkIndexAtOffset("p4", 1, 1); // 2nd 'mozilla' link
    86       testLinkIndexAtOffset("p4", 2, -1); // ' ' of ' te' text node
    87       testLinkIndexAtOffset("p4", 3, -1); // 't' of ' te' text node
    88       testLinkIndexAtOffset("p4", 5, -1); // 'x' of 'xt ' text node
    89       testLinkIndexAtOffset("p4", 7, -1); // ' ' of 'xt ' text node
    90       testLinkIndexAtOffset("p4", 8, 2); // 3d 'mozilla' link
    91       testLinkIndexAtOffset("p4", 9, 2); // the end, latest link
    93       // the second pass to make sure link indexes are calculated propertly from
    94       // cached offsets.
    95       testLinkIndexAtOffset("p4", 0, 0); // 1st 'mozilla' link
    96       testLinkIndexAtOffset("p4", 1, 1); // 2nd 'mozilla' link
    97       testLinkIndexAtOffset("p4", 2, -1); // ' ' of ' te' text node
    98       testLinkIndexAtOffset("p4", 3, -1); // 't' of ' te' text node
    99       testLinkIndexAtOffset("p4", 5, -1); // 'x' of 'xt ' text node
   100       testLinkIndexAtOffset("p4", 7, -1); // ' ' of 'xt ' text node
   101       testLinkIndexAtOffset("p4", 8, 2); // 3d 'mozilla' link
   102       testLinkIndexAtOffset("p4", 9, 2); // the end, latest link
   104       SimpleTest.finish();
   105     }
   107     SimpleTest.waitForExplicitFinish();
   108     addA11yLoadEvent(doPreTest);
   109   </script>
   111 </head>
   112 <body>
   114   <a target="_blank"
   115      title="Create tests for NSIAccessibleHyperlink interface"
   116      href="https://bugzilla.mozilla.org/show_bug.cgi?id=418368">
   117     Mozilla Bug 418368
   118   </a><br>
   119   <p id="display"></p>
   120   <div id="content" style="display: none"></div>
   121   <pre id="test">
   122   </pre>
   123   <p id="testParagraph"><br
   124   >Simple link:<br
   125   ><a id="NormalHyperlink" href="http://www.mozilla.org">Mozilla Foundation</a><br
   126   >ARIA link:<br
   127   ><span id="AriaHyperlink" role="link"
   128           onclick="window.open('http://www.mozilla.org/');"
   129           tabindex="0">Mozilla Foundation Home</span><br
   130   >Invalid, non-focusable hyperlink:<br
   131   ><span id="InvalidAriaHyperlink" role="link" aria-invalid="true"
   132          onclick="window.open('http:/www.mozilla.org/');">Invalid link</span><br
   133   >Image map:<br
   134   ><map name="atoz_map"><area href="http://www.bbc.co.uk/radio4/atoz/index.shtml#b"
   135                               coords="17,0,30,14"
   136                               alt="b"
   137                               shape="rect"></area
   138    ><area href="http://www.bbc.co.uk/radio4/atoz/index.shtml#a"
   139           coords="0,0,13,14"
   140           alt="a"
   141           shape="rect"></area></map
   142    ><img width="447" id="imgmap"
   143          height="15"
   144          usemap="#atoz_map"
   145          src="../letters.gif"></img><br
   146   >Empty link:<br
   147   ><a id="emptyLink" href=""><img src=""></img></a><br
   148   >Link with embedded span<br
   149   ><a id="LinkWithSpan" href="http://www.heise.de/"><span lang="de">Heise Online</span></a><br
   150   >Named anchor, must not have "linked" state for it to be exposed correctly:<br
   151   ><a id="namedAnchor" name="named_anchor">This should never be of state_linked</a>
   152   </p>
   153   <p id="p2"><a href="http://mozilla.org">mozilla.org</a></p>
   154   <p id="p4"><a href="www">mozilla</a><a href="www">mozilla</a><span> te</span><span>xt </span><a href="www">mozilla</a></p>
   155 </body>
   156 </html>

mercurial