summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-30 18:44:53 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-30 18:44:53 +0000
commit983592e0fa0fb36f842cd98da028b3e2a4029d1c (patch)
tree92c786bc873ef61ca3182a7131086038bceefe78 /chrome
parent21103034ad3f39ca1b24a254e97ff91776ea9a9e (diff)
downloadchromium_src-983592e0fa0fb36f842cd98da028b3e2a4029d1c.zip
chromium_src-983592e0fa0fb36f842cd98da028b3e2a4029d1c.tar.gz
chromium_src-983592e0fa0fb36f842cd98da028b3e2a4029d1c.tar.bz2
Make the first-run search engine choice dialog accessible to
Windows screenreaders. BUG=none TEST=manual testing with and without JAWS and NVDA screenreaders. Review URL: http://codereview.chromium.org/3598003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61090 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/views/first_run_search_engine_view.cc30
-rw-r--r--chrome/browser/views/first_run_search_engine_view.h1
2 files changed, 30 insertions, 1 deletions
diff --git a/chrome/browser/views/first_run_search_engine_view.cc b/chrome/browser/views/first_run_search_engine_view.cc
index 3b7b137..e4ba4a6 100644
--- a/chrome/browser/views/first_run_search_engine_view.cc
+++ b/chrome/browser/views/first_run_search_engine_view.cc
@@ -32,6 +32,7 @@
#include "views/controls/separator.h"
#include "views/standard_layout.h"
#include "views/view_text_utils.h"
+#include "views/widget/widget.h"
#include "views/window/window.h"
using base::Time;
@@ -70,7 +71,7 @@ SearchEngineChoice::SearchEngineChoice(views::ButtonListener* listener,
logo_image->SetImage(logo_bmp);
if (use_small_logos)
logo_image->SetImageSize(gfx::Size(kSmallLogoWidth, kSmallLogoHeight));
- // Tooltip text provides accessibility.
+ // Tooltip text provides accessibility for low-vision users.
logo_image->SetTooltipText(search_engine_->short_name());
choice_view_ = logo_image;
} else {
@@ -84,6 +85,12 @@ SearchEngineChoice::SearchEngineChoice(views::ButtonListener* listener,
logo_label->SizeToFit(kSmallLogoWidth);
choice_view_ = logo_label;
}
+
+ // The accessible name of the button provides accessibility for
+ // screenreaders. It uses the browser name rather than the text of the
+ // button "Choose", since it's not obvious to a screenreader user which
+ // browser each button corresponds to.
+ SetAccessibleName(search_engine_->short_name());
}
int SearchEngineChoice::GetChoiceViewWidth() {
@@ -241,6 +248,23 @@ void FirstRunSearchEngineView::OnTemplateURLModelChanged() {
SetVisible(true);
Layout();
SchedulePaint();
+
+ // If the widget has detected that a screenreader is running, change the
+ // button names from "Choose" to the name of the search engine. This works
+ // around a bug that JAWS ignores the accessible name of a native button.
+ if (GetWidget() && GetWidget()->IsAccessibleWidget()) {
+ std::vector<SearchEngineChoice*>::iterator it;
+ for (it = search_engine_choices_.begin();
+ it != search_engine_choices_.end();
+ it++) {
+ (*it)->SetLabel((*it)->GetSearchEngine()->short_name());
+ }
+ }
+
+ // This will tell screenreaders that they should read the full text
+ // of this dialog to the user now (rather than waiting for the user
+ // to explore it).
+ NotifyAccessibilityEvent(AccessibilityTypes::EVENT_ALERT);
}
gfx::Size FirstRunSearchEngineView::GetPreferredSize() {
@@ -398,6 +422,10 @@ void FirstRunSearchEngineView::Layout() {
} // if (search_engine_choices.size() > 0)
}
+AccessibilityTypes::Role FirstRunSearchEngineView::GetAccessibleRole() {
+ return AccessibilityTypes::ROLE_ALERT;
+}
+
std::wstring FirstRunSearchEngineView::GetWindowTitle() const {
return l10n_util::GetString(IDS_FIRSTRUN_DLG_TITLE);
}
diff --git a/chrome/browser/views/first_run_search_engine_view.h b/chrome/browser/views/first_run_search_engine_view.h
index 8ce3448..a29a7ba 100644
--- a/chrome/browser/views/first_run_search_engine_view.h
+++ b/chrome/browser/views/first_run_search_engine_view.h
@@ -91,6 +91,7 @@ class FirstRunSearchEngineView
// Overridden from views::View:
virtual gfx::Size GetPreferredSize();
virtual void Layout();
+ virtual AccessibilityTypes::Role GetAccessibleRole();
// Overridden from views::WindowDelegate:
virtual std::wstring GetWindowTitle() const;