Bug 1216478 - prefer tooltiptext on a XUL element over title attribute on a containing toolbaritem when determining accessible name, r=surkov

MozReview-Commit-ID: Cv0Kl5U02jy

--HG--
extra : rebase_source : 40ff881eabb42579a25e22c6c290ce3c5d0e7634
This commit is contained in:
Gijs Kruitbosch 2016-01-20 13:47:42 +00:00
parent 8657691921
commit af8ae4ede1
3 changed files with 94 additions and 1 deletions

View File

@ -821,9 +821,17 @@ Accessible::XULElmName(DocAccessible* aDocument,
nsIContent *bindingParent = aElm->GetBindingParent();
nsIContent* parent =
bindingParent? bindingParent->GetParent() : aElm->GetParent();
nsAutoString ancestorTitle;
while (parent) {
if (parent->IsXULElement(nsGkAtoms::toolbaritem) &&
parent->GetAttr(kNameSpaceID_None, nsGkAtoms::title, aName)) {
parent->GetAttr(kNameSpaceID_None, nsGkAtoms::title, ancestorTitle)) {
// Before returning this, check if the element itself has a tooltip:
if (aElm->GetAttr(kNameSpaceID_None, nsGkAtoms::tooltiptext, aName)) {
aName.CompressWhitespace();
return;
}
aName.Assign(ancestorTitle);
aName.CompressWhitespace();
return;
}

View File

@ -13,4 +13,5 @@ support-files =
[test_list.html]
[test_markup.html]
[test_svg.html]
[test_toolbaritem.xul]
[test_tree.xul]

View File

@ -0,0 +1,84 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<?xml-stylesheet href="general.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
title="Accessibility Name Calculating Test.">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
<script type="application/javascript"
src="../common.js"></script>
<script type="application/javascript"
src="../role.js"></script>
<script type="application/javascript"
src="../name.js"></script>
<script type="application/javascript">
<![CDATA[
var gQueue = null;
function doTest() {
let ids = [];
for (let item of ["button", "textbox"]) {
ids.push(item + "withtooltip");
ids.push(item + "withouttooltip");
ids.push("nested" + item + "withtooltip");
ids.push("nested" + item + "withouttooltip");
}
for (let id of ids) {
if (id.endsWith("withtooltip")) {
testName(id, id, id + " should have individual name from its tooltip - ");
} else {
testName(id, "Toolbaritem title", id + " should have toolbaritem's title for a name - ");
}
}
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
addA11yLoadEvent(doTest);
]]>
</script>
<hbox flex="1" style="overflow: auto;">
<body xmlns="http://www.w3.org/1999/xhtml">
<a target="_blank"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1216478"
title="Items with tooltips inside items with a label should use their own tooltip as an accessible name, not the ancestor's label">
Mozilla Bug 1216478
</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
</body>
<vbox flex="1">
<toolbox>
<toolbar>
<toolbaritem title="Toolbaritem title">
<toolbarbutton id="buttonwithtooltip" tooltiptext="buttonwithtooltip"/>
<toolbarbutton id="buttonwithouttooltip"/>
<textbox id="textboxwithtooltip" tooltiptext="textboxwithtooltip"/>
<textbox id="textboxwithouttooltip"/>
<vbox>
<toolbarbutton id="nestedbuttonwithtooltip" tooltiptext="nestedbuttonwithtooltip"/>
<toolbarbutton id="nestedbuttonwithouttooltip"/>
<textbox id="nestedtextboxwithtooltip" tooltiptext="nestedtextboxwithtooltip"/>
<textbox id="nestedtextboxwithouttooltip"/>
</vbox>
</toolbaritem>
</toolbar>
</toolbox>
</vbox> <!-- close tests area -->
</hbox> <!-- close main area -->
</window>