diff options
author | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-08 16:38:32 +0000 |
---|---|---|
committer | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-08 16:38:32 +0000 |
commit | 1a0f04beab1294fed417320fb53f27e9e8be1df5 (patch) | |
tree | 7b0c80696de85275f1cfb098a42119299ce334d1 /chrome/browser/accessibility | |
parent | 7b7ff92a4b17a862df314a24001f4a4c0006eba5 (diff) | |
download | chromium_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')
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(); |