diff options
author | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-30 18:44:53 +0000 |
---|---|---|
committer | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-30 18:44:53 +0000 |
commit | 983592e0fa0fb36f842cd98da028b3e2a4029d1c (patch) | |
tree | 92c786bc873ef61ca3182a7131086038bceefe78 /chrome | |
parent | 21103034ad3f39ca1b24a254e97ff91776ea9a9e (diff) | |
download | chromium_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.cc | 30 | ||||
-rw-r--r-- | chrome/browser/views/first_run_search_engine_view.h | 1 |
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; |