<!
DOCTYPE html>
<
html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=428248
-->
<
head>
<
title>nsIHyper>TextAccessible chrome tests</
title>
<
link rel=
"stylesheet" type=
"text/css" href=
"chrome://mochikit/content/tests/SimpleTest/test.css" />
<
script src=
"chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></
script>
<
script src=
"chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></
script>
<
script type=
"application/javascript"
src=
"../common.js"></
script>
<
script type=
"application/javascript"
src=
"../events.js"></
script>
<
script type=
"application/javascript">
var gParagraphAcc;
function testLinkIndexAtOffset(aID, aOffset, aIndex) {
var htAcc = getAccessible(aID, [nsIAccessibleHyperText]);
is(htAcc.getLinkIndexAtOffset(aOffset), aIndex,
"Wrong link index at offset " + aOffset +
" for ID " + aID +
"!");
}
function testThis(aID, aCharIndex, aExpectedLinkIndex, aName) {
testLinkIndexAtOffset(gParagraphAcc, aCharIndex, aExpectedLinkIndex);
var linkAcc = gParagraphAcc.getLinkAt(aExpectedLinkIndex);
ok(linkAcc,
"No accessible for link " + aID +
"!");
var linkIndex = gParagraphAcc.getLinkIndex(linkAcc);
is(linkIndex, aExpectedLinkIndex,
"Wrong link index for " + aID +
"!");
// Just test the
link's name to make sure we get the right one.
is(linkAcc.getAnchor(0).name, aName,
"Wrong name for " + aID +
"!");
}
// gA11yEventDumpToConsole = true;
function doPreTest() {
waitForImageMap(
"imgmap", doTest);
}
function doTest() {
// Test
link count
gParagraphAcc = getAccessible(
"testParagraph", [nsIAccessibleHyperText]);
is(gParagraphAcc.linkCount, 7,
"Wrong link count for paragraph!");
// normal hyperlink
testThis(
"NormalHyperlink", 14, 0,
"Mozilla Foundation");
// ARIA hyperlink
testThis(
"AriaHyperlink", 27, 1,
"Mozilla Foundation Home");
// ARIA hyperlink with status invalid
testThis(
"InvalidAriaHyperlink", 63, 2,
"Invalid link");
// image
map, but not its
link children. They are not part of hypertext.
testThis(
"imgmap", 76, 3,
"b");
// empty hyperlink
testThis(
"emptyLink", 90, 4, null);
// normal hyperlink with embedded
span
testThis(
"LinkWithSpan", 116, 5,
"Heise Online");
// Named anchor
testThis(
"namedAnchor", 193, 6, null);
// Paragraph with
link
var p2 = getAccessible(
"p2", [nsIAccessibleHyperText]);
var link = p2.getLinkAt(0);
is(
link, p2.getChildAt(0),
"Wrong link for p2");
is(p2.linkCount, 1,
"Wrong link count for p2");
// getLinkIndexAtOffset, causes the offsets to be cached;
testLinkIndexAtOffset(
"p4", 0, 0); // 1st
'mozilla' link
testLinkIndexAtOffset(
"p4", 1, 1); // 2nd
'mozilla' link
testLinkIndexAtOffset(
"p4", 2, -1); //
' ' of
' te' text node
testLinkIndexAtOffset(
"p4", 3, -1); //
't' of
' te' text node
testLinkIndexAtOffset(
"p4", 5, -1); //
'x' of
'xt ' text node
testLinkIndexAtOffset(
"p4", 7, -1); //
' ' of
'xt ' text node
testLinkIndexAtOffset(
"p4", 8, 2); // 3d
'mozilla' link
testLinkIndexAtOffset(
"p4", 9, 2); // the end, latest
link
// the second pass to make sure
link indexes are calculated propertly from
// cached offsets.
testLinkIndexAtOffset(
"p4", 0, 0); // 1st
'mozilla' link
testLinkIndexAtOffset(
"p4", 1, 1); // 2nd
'mozilla' link
testLinkIndexAtOffset(
"p4", 2, -1); //
' ' of
' te' text node
testLinkIndexAtOffset(
"p4", 3, -1); //
't' of
' te' text node
testLinkIndexAtOffset(
"p4", 5, -1); //
'x' of
'xt ' text node
testLinkIndexAtOffset(
"p4", 7, -1); //
' ' of
'xt ' text node
testLinkIndexAtOffset(
"p4", 8, 2); // 3d
'mozilla' link
testLinkIndexAtOffset(
"p4", 9, 2); // the end, latest
link
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
addA11yLoadEvent(doPreTest);
</
script>
</
head>
<
body>
<a target=
"_blank"
title=
"Create tests for NSIAccessibleHyperlink interface"
href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=418368">
Mozilla Bug 418368
</a><
br>
<p id=
"display"></p>
<
div id=
"content" style=
"display: none"></
div>
<
pre id=
"test">
</
pre>
<p id=
"testParagraph"><
br
>Simple
link:<
br
><a id=
"NormalHyperlink" href=
"http://www.mozilla.org">Mozilla Foundation</a><
br
>ARIA
link:<
br
><
span id=
"AriaHyperlink" role=
"link"
onclick=
"window.open('http://www.mozilla.org/');"
tabindex=
"0">Mozilla Foundation Home</
span><
br
>Invalid, non-focusable hyperlink:<
br
><
span id=
"InvalidAriaHyperlink" role=
"link" aria-invalid=
"true"
onclick=
"window.open('http:/www.mozilla.org/');">Invalid
link</
span><
br
>Image
map:<
br
><
map name=
"atoz_map"><
area href=
"http://www.bbc.co.uk/radio4/atoz/index.shtml#b"
coords=
"17,0,30,14"
alt=
"b"
shape=
"rect"></
area
><
area href=
"http://www.bbc.co.uk/radio4/atoz/index.shtml#a"
coords=
"0,0,13,14"
alt=
"a"
shape=
"rect"></
area></
map
><
img width=
"447" id=
"imgmap"
height=
"15"
usemap=
"#atoz_map"
src=
"../letters.gif"></
img><
br
>Empty
link:<
br
><a id=
"emptyLink" href=
""><
img src=
""></
img></a><
br
>
Link with embedded
span<
br
><a id=
"LinkWithSpan" href=
"http://www.heise.de/"><
span lang=
"de">Heise Online</
span></a><
br
>Named anchor, must not have
"linked" state for it to be exposed correctly:<
br
><a id=
"namedAnchor" name=
"named_anchor">This should never be of state_linked</a>
</p>
<p id=
"p2"><a href=
"http://mozilla.org">mozilla.org</a></p>
<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>
</
body>
</
html>