summaryrefslogtreecommitdiffstats
path: root/chrome/browser/accessibility
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-08 16:38:32 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-08 16:38:32 +0000
commit1a0f04beab1294fed417320fb53f27e9e8be1df5 (patch)
tree7b0c80696de85275f1cfb098a42119299ce334d1 /chrome/browser/accessibility
parent7b7ff92a4b17a862df314a24001f4a4c0006eba5 (diff)
downloadchromium_src-1a0f04beab1294fed417320fb53f27e9e8be1df5.zip
chromium_src-1a0f04beab1294fed417320fb53f27e9e8be1df5.tar.gz
chromium_src-1a0f04beab1294fed417320fb53f27e9e8be1df5.tar.bz2
Report accessible static text content in the name rather than the value.
Fix the role for a list item, which WebKit categorizes as a GROUP. BUG=none TEST=updated existing test, plus manual testing with screen readers. Review URL: http://codereview.chromium.org/6250093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74124 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/accessibility')
-rw-r--r--chrome/browser/accessibility/accessibility_win_browsertest.cc6
-rw-r--r--chrome/browser/accessibility/browser_accessibility_win.cc28
-rw-r--r--chrome/browser/accessibility/browser_accessibility_win_unittest.cc14
3 files changed, 29 insertions, 19 deletions
diff --git a/chrome/browser/accessibility/accessibility_win_browsertest.cc b/chrome/browser/accessibility/accessibility_win_browsertest.cc
index e19d8db..ab12925 100644
--- a/chrome/browser/accessibility/accessibility_win_browsertest.cc
+++ b/chrome/browser/accessibility/accessibility_win_browsertest.cc
@@ -388,7 +388,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
// Check the browser's copy of the renderer accessibility tree.
AccessibleChecker list_marker_checker(L"", ROLE_SYSTEM_LISTITEM, L"\x2022");
- AccessibleChecker static_text_checker(L"", ROLE_SYSTEM_TEXT, L"li");
+ AccessibleChecker static_text_checker(L"li", ROLE_SYSTEM_TEXT, L"");
AccessibleChecker list_item_checker(L"", ROLE_SYSTEM_LISTITEM, L"");
list_item_checker.SetExpectedState(
STATE_SYSTEM_READONLY);
@@ -477,7 +477,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
// Check that the accessibility tree of the browser has been updated.
- AccessibleChecker text_checker(L"", ROLE_SYSTEM_TEXT, L"new text");
+ AccessibleChecker text_checker(L"new text", ROLE_SYSTEM_TEXT, L"");
body_checker.AppendExpectedChild(&text_checker);
document_checker.CheckAccessible(GetRendererAccessible());
}
@@ -503,7 +503,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
// Check that the accessibility tree of the browser has been updated.
- AccessibleChecker static_text_checker(L"", ROLE_SYSTEM_TEXT, L"text");
+ AccessibleChecker static_text_checker(L"text", ROLE_SYSTEM_TEXT, L"");
AccessibleChecker div_checker(L"", L"div", L"");
document_checker.AppendExpectedChild(&div_checker);
div_checker.AppendExpectedChild(&static_text_checker);
diff --git a/chrome/browser/accessibility/browser_accessibility_win.cc b/chrome/browser/accessibility/browser_accessibility_win.cc
index 97b4bc9..fcd01a5 100644
--- a/chrome/browser/accessibility/browser_accessibility_win.cc
+++ b/chrome/browser/accessibility/browser_accessibility_win.cc
@@ -1137,12 +1137,15 @@ void BrowserAccessibilityWin::Initialize() {
if (GetAttribute(WebAccessibility::ATTR_DISPLAY, &display))
html_attributes_.push_back(std::make_pair(L"display", display));
+ // If this is static text, put the text in the name rather than the value.
+ if (role_ == WebAccessibility::ROLE_STATIC_TEXT && name_.empty())
+ name_.swap(value_);
+
// If this object doesn't have a name but it does have a description,
// use the description as its name - because some screen readers only
// announce the name.
- if (name_.empty() && HasAttribute(WebAccessibility::ATTR_DESCRIPTION)) {
+ if (name_.empty() && HasAttribute(WebAccessibility::ATTR_DESCRIPTION))
GetAttribute(WebAccessibility::ATTR_DESCRIPTION, &name_);
- }
instance_active_ = true;
}
@@ -1320,6 +1323,8 @@ void BrowserAccessibilityWin::InitRoleAndState() {
if ((state_ >> WebAccessibility::STATE_UNAVAILABLE) & 1)
ia_state_|= STATE_SYSTEM_UNAVAILABLE;
+ string16 html_tag;
+ GetAttribute(WebAccessibility::ATTR_HTML_TAG, &html_tag);
ia_role_ = 0;
ia2_role_ = 0;
switch (role_) {
@@ -1360,7 +1365,7 @@ void BrowserAccessibilityWin::InitRoleAndState() {
ia_role_ = ROLE_SYSTEM_COMBOBOX;
break;
case WebAccessibility::ROLE_DEFINITION_LIST_DEFINITION:
- GetAttribute(WebAccessibility::ATTR_HTML_TAG, &role_name_);
+ role_name_ = html_tag;
ia2_role_ = IA2_ROLE_PARAGRAPH;
break;
case WebAccessibility::ROLE_DEFINITION_LIST_TERM:
@@ -1387,23 +1392,28 @@ void BrowserAccessibilityWin::InitRoleAndState() {
ia_role_ = ROLE_SYSTEM_TABLE;
break;
case WebAccessibility::ROLE_GROUP:
- GetAttribute(WebAccessibility::ATTR_HTML_TAG, &role_name_);
- if (role_name_.empty())
- role_name_ = L"div";
- ia2_role_ = IA2_ROLE_SECTION;
+ if (html_tag == L"li") {
+ ia_role_ = ROLE_SYSTEM_LISTITEM;
+ } else {
+ if (html_tag.empty())
+ role_name_ = L"div";
+ else
+ role_name_ = html_tag;
+ ia2_role_ = IA2_ROLE_SECTION;
+ }
break;
case WebAccessibility::ROLE_GROW_AREA:
ia_role_ = ROLE_SYSTEM_GRIP;
break;
case WebAccessibility::ROLE_HEADING:
- GetAttribute(WebAccessibility::ATTR_HTML_TAG, &role_name_);
+ role_name_ = html_tag;
ia2_role_ = IA2_ROLE_HEADING;
break;
case WebAccessibility::ROLE_IMAGE:
ia_role_ = ROLE_SYSTEM_GRAPHIC;
break;
case WebAccessibility::ROLE_IMAGE_MAP:
- GetAttribute(WebAccessibility::ATTR_HTML_TAG, &role_name_);
+ role_name_ = html_tag;
ia2_role_ = IA2_ROLE_IMAGE_MAP;
break;
case WebAccessibility::ROLE_IMAGE_MAP_LINK:
diff --git a/chrome/browser/accessibility/browser_accessibility_win_unittest.cc b/chrome/browser/accessibility/browser_accessibility_win_unittest.cc
index 45b7f30..fe5fa04 100644
--- a/chrome/browser/accessibility/browser_accessibility_win_unittest.cc
+++ b/chrome/browser/accessibility/browser_accessibility_win_unittest.cc
@@ -146,7 +146,7 @@ TEST_F(BrowserAccessibilityTest, TestChildrenChange) {
WebAccessibility text;
text.id = 2;
text.role = WebAccessibility::ROLE_STATIC_TEXT;
- text.value = L"old text";
+ text.name = L"old text";
text.state = 0;
WebAccessibility root;
@@ -177,16 +177,16 @@ TEST_F(BrowserAccessibilityTest, TestChildrenChange) {
hr = text_dispatch.QueryInterface(text_accessible.Receive());
ASSERT_EQ(S_OK, hr);
- CComBSTR value;
- hr = text_accessible->get_accValue(CreateI4Variant(CHILDID_SELF), &value);
+ CComBSTR name;
+ hr = text_accessible->get_accName(CreateI4Variant(CHILDID_SELF), &name);
ASSERT_EQ(S_OK, hr);
- EXPECT_STREQ(L"old text", value.m_str);
+ EXPECT_STREQ(L"old text", name.m_str);
text_dispatch.Release();
text_accessible.Release();
// Notify the BrowserAccessibilityManager that the text child has changed.
- text.value = L"new text";
+ text.name = L"new text";
ViewHostMsg_AccessibilityNotification_Params param;
param.notification_type =
ViewHostMsg_AccessibilityNotification_Params::
@@ -206,9 +206,9 @@ TEST_F(BrowserAccessibilityTest, TestChildrenChange) {
hr = text_dispatch.QueryInterface(text_accessible.Receive());
ASSERT_EQ(S_OK, hr);
- hr = text_accessible->get_accValue(CreateI4Variant(CHILDID_SELF), &value);
+ hr = text_accessible->get_accName(CreateI4Variant(CHILDID_SELF), &name);
ASSERT_EQ(S_OK, hr);
- EXPECT_STREQ(L"new text", value.m_str);
+ EXPECT_STREQ(L"new text", name.m_str);
text_dispatch.Release();
text_accessible.Release();