diff options
author | klink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-22 00:20:30 +0000 |
---|---|---|
committer | klink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-22 00:20:30 +0000 |
commit | 0b02866defff24397abdb969e189165ce0ec78b3 (patch) | |
tree | 72807f8830393bbd24e6444f740197d0a8d3445e /chrome/browser | |
parent | b7091b93d3dffa52c990b79366e339c6be8558a7 (diff) | |
download | chromium_src-0b02866defff24397abdb969e189165ce0ec78b3.zip chromium_src-0b02866defff24397abdb969e189165ce0ec78b3.tar.gz chromium_src-0b02866defff24397abdb969e189165ce0ec78b3.tar.bz2 |
Adds support and exposure of additional accessibility roles. Includes naming of the LocationBar, and correctly exposing MSAA/ARIA roles for Documents, Graphics, Menubars and Toolbars.
BUG=13291,19982
TEST=Assign @role menubar or toolbar to any dom element, and use Inspect32 (or similar tool) to see it exposed correctly. In the same way, <html> tag is exposed as role document.
Review URL: http://codereview.chromium.org/174252
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24049 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/browser_accessibility.cc | 6 | ||||
-rw-r--r-- | chrome/browser/views/browser_views_accessibility_browsertest.cc | 26 | ||||
-rw-r--r-- | chrome/browser/views/location_bar_view.cc | 14 | ||||
-rw-r--r-- | chrome/browser/views/location_bar_view.h | 11 | ||||
-rw-r--r-- | chrome/browser/views/toolbar_view.cc | 1 |
5 files changed, 55 insertions, 3 deletions
diff --git a/chrome/browser/browser_accessibility.cc b/chrome/browser/browser_accessibility.cc index ae5b903..83534bf 100644 --- a/chrome/browser/browser_accessibility.cc +++ b/chrome/browser/browser_accessibility.cc @@ -567,6 +567,8 @@ long BrowserAccessibility::MSAARole(long browser_accessibility_role) { return ROLE_SYSTEM_COLUMN; case WebAccessibility::ROLE_COLUMNHEADER: return ROLE_SYSTEM_COLUMNHEADER; + case WebAccessibility::ROLE_DOCUMENT: + return ROLE_SYSTEM_DOCUMENT; case WebAccessibility::ROLE_GRAPHIC: return ROLE_SYSTEM_GRAPHIC; case WebAccessibility::ROLE_GROUPING: @@ -576,6 +578,8 @@ long BrowserAccessibility::MSAARole(long browser_accessibility_role) { case WebAccessibility::ROLE_LIST: case WebAccessibility::ROLE_LISTBOX: return ROLE_SYSTEM_LIST; + case WebAccessibility::ROLE_MENUBAR: + return ROLE_SYSTEM_MENUBAR; case WebAccessibility::ROLE_MENUITEM: return ROLE_SYSTEM_MENUITEM; case WebAccessibility::ROLE_MENUPOPUP: @@ -602,6 +606,8 @@ long BrowserAccessibility::MSAARole(long browser_accessibility_role) { return ROLE_SYSTEM_TABLE; case WebAccessibility::ROLE_TEXT: return ROLE_SYSTEM_TEXT; + case WebAccessibility::ROLE_TOOLBAR: + return ROLE_SYSTEM_TOOLBAR; case WebAccessibility::ROLE_CLIENT: default: // This is the default role for MSAA. diff --git a/chrome/browser/views/browser_views_accessibility_browsertest.cc b/chrome/browser/views/browser_views_accessibility_browsertest.cc index 886d261..86c9b3d 100644 --- a/chrome/browser/views/browser_views_accessibility_browsertest.cc +++ b/chrome/browser/views/browser_views_accessibility_browsertest.cc @@ -35,6 +35,22 @@ class BrowserViewsAccessibilityTest : public InProcessBrowserTest { ::CoUninitialize(); } + // Retrieves and initializes an instance of LocationBarView. + LocationBarView* GetLocationBarView() { + BrowserWindow* browser_window = browser()->window(); + + if (!browser_window) + return NULL; + + BrowserWindowTesting* browser_window_testing = + browser_window->GetBrowserWindowTesting(); + + if (!browser_window_testing) + return NULL; + + return browser_window_testing->GetLocationBarView(); + } + // Retrieves and initializes an instance of ToolbarView. ToolbarView* GetToolbarView() { BrowserWindow* browser_window = browser()->window(); @@ -173,6 +189,16 @@ IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestStarButtonAccObj) { l10n_util::GetString(IDS_ACCNAME_STAR), ROLE_SYSTEM_PUSHBUTTON); } +// Retrieve accessibility object for location bar view and verify accessibility +// info. +IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, + TestLocationBarViewAccObj) { + // Verify location bar MSAA name and role. + TestViewAccessibilityObject(GetLocationBarView(), + l10n_util::GetString(IDS_ACCNAME_LOCATION), + ROLE_SYSTEM_GROUPING); +} + // Retrieve accessibility object for Go button and verify accessibility info. IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestGoButtonAccObj) { // Verify Go button MSAA name and role. diff --git a/chrome/browser/views/location_bar_view.cc b/chrome/browser/views/location_bar_view.cc index bed40dc..eeef5b9 100644 --- a/chrome/browser/views/location_bar_view.cc +++ b/chrome/browser/views/location_bar_view.cc @@ -699,6 +699,16 @@ void LocationBarView::OnMouseEvent(const views::MouseEvent& event, UINT msg) { } #endif +bool LocationBarView::GetAccessibleName(std::wstring* name) { + DCHECK(name); + + if (!accessible_name_.empty()) { + name->assign(accessible_name_); + return true; + } + return false; +} + bool LocationBarView::GetAccessibleRole(AccessibilityTypes::Role* role) { DCHECK(role); @@ -706,6 +716,10 @@ bool LocationBarView::GetAccessibleRole(AccessibilityTypes::Role* role) { return true; } +void LocationBarView::SetAccessibleName(const std::wstring& name) { + accessible_name_.assign(name); +} + // SelectedKeywordView ------------------------------------------------------- // The background is drawn using ImagePainter3. This is the left/center/right diff --git a/chrome/browser/views/location_bar_view.h b/chrome/browser/views/location_bar_view.h index 3be0266..a127ab9 100644 --- a/chrome/browser/views/location_bar_view.h +++ b/chrome/browser/views/location_bar_view.h @@ -112,11 +112,11 @@ class LocationBarView : public LocationBar, virtual SkBitmap GetFavIcon() const; virtual std::wstring GetTitle() const; - // Returns the accessibility role. - bool GetAccessibleRole(AccessibilityTypes::Role* role); - // Overridden from views::View: virtual bool SkipDefaultKeyEventProcessing(const views::KeyEvent& e); + virtual bool GetAccessibleName(std::wstring* name); + virtual bool GetAccessibleRole(AccessibilityTypes::Role* role); + virtual void SetAccessibleName(const std::wstring& name); // Overridden from LocationBar: virtual void ShowFirstRunBubble(bool use_OEM_bubble); @@ -510,6 +510,11 @@ class LocationBarView : public LocationBar, // The positioner that places the autocomplete popup. AutocompletePopupPositioner* popup_positioner_; + + // Storage of string needed for accessibility. + std::wstring accessible_name_; + + DISALLOW_COPY_AND_ASSIGN(LocationBarView); }; #endif // CHROME_BROWSER_VIEWS_LOCATION_BAR_VIEW_H_ diff --git a/chrome/browser/views/toolbar_view.cc b/chrome/browser/views/toolbar_view.cc index 64ebc25..8a10c0f2 100644 --- a/chrome/browser/views/toolbar_view.cc +++ b/chrome/browser/views/toolbar_view.cc @@ -868,6 +868,7 @@ void ToolbarView::CreateCenterStack(Profile *profile) { LoadCenterStackImages(); + location_bar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_LOCATION)); AddChildView(location_bar_); location_bar_->Init(); AddChildView(go_); |