summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorklink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-22 00:20:30 +0000
committerklink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-22 00:20:30 +0000
commit0b02866defff24397abdb969e189165ce0ec78b3 (patch)
tree72807f8830393bbd24e6444f740197d0a8d3445e /chrome/browser
parentb7091b93d3dffa52c990b79366e339c6be8558a7 (diff)
downloadchromium_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.cc6
-rw-r--r--chrome/browser/views/browser_views_accessibility_browsertest.cc26
-rw-r--r--chrome/browser/views/location_bar_view.cc14
-rw-r--r--chrome/browser/views/location_bar_view.h11
-rw-r--r--chrome/browser/views/toolbar_view.cc1
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_);