author | James Kitchener <jkitch.bug@gmail.com> |
Thu, 08 Nov 2012 08:58:22 +0900 | |
changeset 112636 | b029a90619f5d7eab88e7e1b0aef3a9d7296a18f |
parent 112635 | ed74314b44d5fcc1f86970237fd43250e6ebef13 |
child 112637 | 222f4185ecb56970684e04adcb3237f0065b4b3c |
push id | 23833 |
push user | emorley@mozilla.com |
push date | Thu, 08 Nov 2012 10:20:57 +0000 |
treeherder | mozilla-central@e0d7b394462b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | tbsaunde |
bugs | 786566 |
milestone | 19.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/accessible/src/generic/Accessible.cpp +++ b/accessible/src/generic/Accessible.cpp @@ -1729,16 +1729,23 @@ Accessible::ARIATransformRole(role aRole while ((targetAcc = rel.Next())) if (targetAcc->Role() == roles::COMBOBOX) return roles::COMBOBOX_LIST; } } else if (aRole == roles::OPTION) { if (mParent && mParent->Role() == roles::COMBOBOX_LIST) return roles::COMBOBOX_OPTION; + + } else if (aRole == roles::MENUITEM) { + // Menuitem has a submenu. + if (mContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::aria_haspopup, + nsGkAtoms::_true, eCaseMatters)) { + return roles::PARENT_MENUITEM; + } } return aRole; } role Accessible::NativeRole() {
--- a/accessible/tests/mochitest/tree/Makefile.in +++ b/accessible/tests/mochitest/tree/Makefile.in @@ -11,16 +11,17 @@ relativesrcdir = accessible/tree include $(DEPTH)/config/autoconf.mk MOCHITEST_A11Y_FILES =\ dockids.html \ $(warning test_applicationacc.xul temporarily disabled, see bug 561508) \ test_aria_globals.html \ test_aria_imgmap.html \ + test_aria_menu.html \ test_aria_presentation.html \ test_brokencontext.html \ test_button.xul \ test_canvas.html \ test_combobox.xul \ test_cssoverflow.html \ test_dochierarchy.html \ test_dockids.html \
new file mode 100644 --- /dev/null +++ b/accessible/tests/mochitest/tree/test_aria_menu.html @@ -0,0 +1,93 @@ +<!DOCTYPE html> +<html> +<head> + <title>Test accessible tree when ARIA role menuitem is used</title> + <link rel="stylesheet" type="text/css" + href="chrome://mochikit/content/tests/SimpleTest/test.css" /> + + <script type="application/javascript" + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + + <script type="application/javascript" + src="../common.js"></script> + <script type="application/javascript" + src="../role.js"></script> + + <script type="application/javascript"> + function doTest() + { + // Menuitem with no popup. + tree = + { SECTION: [ // container + { MENUPOPUP: [ // menu + { MENUITEM: [ + { STATICTEXT: [] }, // bullet + { TEXT_LEAF: [] } + ] } + ] } + ] } + testAccessibleTree("menu", tree); + + // Menuitem with explicit no popup. + tree = + { SECTION: [ // container + { MENUPOPUP: [ // menu + { MENUITEM: [ + { STATICTEXT: [] }, // bullet + { TEXT_LEAF: [] } + ] } + ] } + ] } + testAccessibleTree("menu_nopopup", tree); + + // Menuitem with popup. + tree = + { SECTION: [ // container + { MENUPOPUP: [ // menu + { PARENT_MENUITEM: [ // menuitem with aria-haspopup="true" + { STATICTEXT: [] }, // bullet + { TEXT_LEAF: [] } + ] } + ] } + ] } + testAccessibleTree("menu_popup", tree); + + SimpleTest.finish(); + } + + SimpleTest.waitForExplicitFinish(); + addA11yLoadEvent(doTest); + </script> +</head> +<body> + + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=786566" + title="ARIA menuitem acting as submenu should have PARENT_MENUITEM role"> + Mozilla Bug 786566 + </a> + <p id="display"></p> + <div id="content" style="display: none"></div> + <pre id="test"> + </pre> + + <div id="menu"> + <ul role="menu"> + <li role="menuitem">Normal Menu</li> + </ul> + </div> + + <div id="menu_nopopup"> + <ul role="menu"> + <li role="menuitem" aria-haspopup="false">Menu with explicit no popup</li> + </ul> + </div> + + <div id="menu_popup"> + <ul role="menu"> + <li role="menuitem" aria-haspopup="true">Menu with popup</li> + </ul> + </div> + +</body> +</html>