diff options
author | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-08 07:30:51 +0000 |
---|---|---|
committer | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-08 07:30:51 +0000 |
commit | 2b1fbb9ddee254ec1b427c993e1b5db54e7c5fa5 (patch) | |
tree | 5b5cb8a75e67c5f474a3bae04258d0aa1639ac1d /ash | |
parent | 1f9a6d1bbb415d8ebd7403ddb41534441a4a6b0d (diff) | |
download | chromium_src-2b1fbb9ddee254ec1b427c993e1b5db54e7c5fa5.zip chromium_src-2b1fbb9ddee254ec1b427c993e1b5db54e7c5fa5.tar.gz chromium_src-2b1fbb9ddee254ec1b427c993e1b5db54e7c5fa5.tar.bz2 |
Reland http://codereview.chromium.org/9121050/ with fix for aura_win
Add accessible names to the launcher buttons
BUG=104192
TEST=None
Review URL: https://chromiumcodereview.appspot.com/9307037
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120950 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/DEPS | 1 | ||||
-rw-r--r-- | ash/ash.gyp | 1 | ||||
-rw-r--r-- | ash/ash_strings.grd | 128 | ||||
-rw-r--r-- | ash/ash_strings.gyp | 32 | ||||
-rw-r--r-- | ash/launcher/app_launcher_button.cc | 6 | ||||
-rw-r--r-- | ash/launcher/app_launcher_button.h | 1 | ||||
-rw-r--r-- | ash/launcher/launcher_button_host.h | 5 | ||||
-rw-r--r-- | ash/launcher/launcher_view.cc | 25 | ||||
-rw-r--r-- | ash/launcher/launcher_view.h | 1 | ||||
-rw-r--r-- | ash/launcher/tabbed_launcher_button.cc | 6 | ||||
-rw-r--r-- | ash/launcher/tabbed_launcher_button.h | 1 |
11 files changed, 207 insertions, 0 deletions
@@ -1,4 +1,5 @@ include_rules = [ + "+grit/ash_strings.h", "+grit/ui_resources.h", "+grit/ui_resources_standard.h", "+grit/ui_resources_large.h", diff --git a/ash/ash.gyp b/ash/ash.gyp index bc3b70e..8862ce4 100644 --- a/ash/ash.gyp +++ b/ash/ash.gyp @@ -13,6 +13,7 @@ 'target_name': 'ash', 'type': '<(component)', 'dependencies': [ + 'ash_strings.gyp:ash_strings', '../base/base.gyp:base', '../base/base.gyp:base_i18n', '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd new file mode 100644 index 0000000..5b08178 --- /dev/null +++ b/ash/ash_strings.grd @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +This file contains the strings for ash. +--> + +<grit base_dir="." latest_public_release="0" current_release="1" + source_lang_id="en" enc_check="möl"> + <outputs> + <output filename="grit/ash_strings.h" type="rc_header"> + <emit emit_type='prepend'></emit> + </output> + <output filename="ash_strings_am.pak" type="data_package" lang="am" /> + <output filename="ash_strings_ar.pak" type="data_package" lang="ar" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_ast.pak" type="data_package" lang="ast" /> + </if> + <output filename="ash_strings_bg.pak" type="data_package" lang="bg" /> + <output filename="ash_strings_bn.pak" type="data_package" lang="bn" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_bs.pak" type="data_package" lang="bs" /> + </if> + <output filename="ash_strings_ca.pak" type="data_package" lang="ca" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_ca@valencia.pak" type="data_package" lang="ca@valencia" /> + </if> + <output filename="ash_strings_cs.pak" type="data_package" lang="cs" /> + <output filename="ash_strings_da.pak" type="data_package" lang="da" /> + <output filename="ash_strings_de.pak" type="data_package" lang="de" /> + <output filename="ash_strings_el.pak" type="data_package" lang="el" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_en-AU.pak" type="data_package" lang="en-AU" /> + </if> + <output filename="ash_strings_en-GB.pak" type="data_package" lang="en-GB" /> + <output filename="ash_strings_en-US.pak" type="data_package" lang="en" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_eo.pak" type="data_package" lang="eo" /> + </if> + <output filename="ash_strings_es.pak" type="data_package" lang="es" /> + <output filename="ash_strings_es-419.pak" type="data_package" lang="es-419" /> + <output filename="ash_strings_et.pak" type="data_package" lang="et" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_eu.pak" type="data_package" lang="eu" /> + </if> + <output filename="ash_strings_fa.pak" type="data_package" lang="fa" /> + <output filename="ash_strings_fake-bidi.pak" type="data_package" lang="fake-bidi" /> + <output filename="ash_strings_fi.pak" type="data_package" lang="fi" /> + <output filename="ash_strings_fil.pak" type="data_package" lang="fil" /> + <output filename="ash_strings_fr.pak" type="data_package" lang="fr" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_gl.pak" type="data_package" lang="gl" /> + </if> + <output filename="ash_strings_gu.pak" type="data_package" lang="gu" /> + <output filename="ash_strings_he.pak" type="data_package" lang="he" /> + <output filename="ash_strings_hi.pak" type="data_package" lang="hi" /> + <output filename="ash_strings_hr.pak" type="data_package" lang="hr" /> + <output filename="ash_strings_hu.pak" type="data_package" lang="hu" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_hy.pak" type="data_package" lang="hy" /> + <output filename="ash_strings_ia.pak" type="data_package" lang="ia" /> + </if> + <output filename="ash_strings_id.pak" type="data_package" lang="id" /> + <output filename="ash_strings_it.pak" type="data_package" lang="it" /> + <output filename="ash_strings_ja.pak" type="data_package" lang="ja" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_ka.pak" type="data_package" lang="ka" /> + </if> + <output filename="ash_strings_kn.pak" type="data_package" lang="kn" /> + <output filename="ash_strings_ko.pak" type="data_package" lang="ko" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_ku.pak" type="data_package" lang="ku" /> + <output filename="ash_strings_kw.pak" type="data_package" lang="kw" /> + </if> + <output filename="ash_strings_lt.pak" type="data_package" lang="lt" /> + <output filename="ash_strings_lv.pak" type="data_package" lang="lv" /> + <output filename="ash_strings_ml.pak" type="data_package" lang="ml" /> + <output filename="ash_strings_mr.pak" type="data_package" lang="mr" /> + <output filename="ash_strings_ms.pak" type="data_package" lang="ms" /> + <output filename="ash_strings_nl.pak" type="data_package" lang="nl" /> + <!-- The translation console uses 'no' for Norwegian Bokmål. It should + be 'nb'. --> + <output filename="ash_strings_nb.pak" type="data_package" lang="no" /> + <output filename="ash_strings_pl.pak" type="data_package" lang="pl" /> + <output filename="ash_strings_pt-BR.pak" type="data_package" lang="pt-BR" /> + <output filename="ash_strings_pt-PT.pak" type="data_package" lang="pt-PT" /> + <output filename="ash_strings_ro.pak" type="data_package" lang="ro" /> + <output filename="ash_strings_ru.pak" type="data_package" lang="ru" /> + <output filename="ash_strings_sk.pak" type="data_package" lang="sk" /> + <output filename="ash_strings_sl.pak" type="data_package" lang="sl" /> + <output filename="ash_strings_sr.pak" type="data_package" lang="sr" /> + <output filename="ash_strings_sv.pak" type="data_package" lang="sv" /> + <output filename="ash_strings_sw.pak" type="data_package" lang="sw" /> + <output filename="ash_strings_ta.pak" type="data_package" lang="ta" /> + <output filename="ash_strings_te.pak" type="data_package" lang="te" /> + <output filename="ash_strings_th.pak" type="data_package" lang="th" /> + <output filename="ash_strings_tr.pak" type="data_package" lang="tr" /> + <if expr="pp_ifdef('use_third_party_translations')"> + <output filename="ash_strings_ug.pak" type="data_package" lang="ug" /> + </if> + <output filename="ash_strings_uk.pak" type="data_package" lang="uk" /> + <output filename="ash_strings_vi.pak" type="data_package" lang="vi" /> + <output filename="ash_strings_zh-CN.pak" type="data_package" lang="zh-CN" /> + <output filename="ash_strings_zh-TW.pak" type="data_package" lang="zh-TW" /> + </outputs> + <translations> + <!-- TODO(zork): Add Placeholder translations. See: + http://crosbug.com/25682 --> + </translations> + <release seq="1" allow_pseudo="false"> + <messages fallback_to_english="true"> + <!-- TODO add all of your "string table" messages here. Remember to + change nontranslateable parts of the messages into placeholders (using the + <ph> element). You can also use the 'grit add' tool to help you identify + nontranslateable parts and create placeholders for them. --> + <!-- TODO(zork): Only include these in Aura builds --> + <message name="IDS_AURA_APP_LIST_TITLE" desc="The title used for the Aura app list in the launcher"> + Applications + </message> + <message name="IDS_AURA_CYCLER_TITLE" desc="The title used for the Aura window cycler in the launcher"> + Window Cycler + </message> + <message name="IDS_AURA_LAUNCHER_OVERFLOW_NAME" desc="The title used for the Aura overflow button in the launcher"> + Overflow Button + </message> + </messages> + </release> +</grit> + diff --git a/ash/ash_strings.gyp b/ash/ash_strings.gyp new file mode 100644 index 0000000..4b09ad2 --- /dev/null +++ b/ash/ash_strings.gyp @@ -0,0 +1,32 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome', + }, + + 'targets': [ + { + 'target_name': 'ash_strings', + 'type': 'none', + 'actions': [ + # Localizable resources. + { + 'action_name': 'ash_strings', + 'variables': { + 'grit_grd_file': 'ash_strings.grd', + 'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/ash_strings', + }, + 'includes': [ '../build/grit_action.gypi' ], + }, + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '<(SHARED_INTERMEDIATE_DIR)/ash_strings', + ], + }, + }, + ], +} diff --git a/ash/launcher/app_launcher_button.cc b/ash/launcher/app_launcher_button.cc index ae23d19..cc73255 100644 --- a/ash/launcher/app_launcher_button.cc +++ b/ash/launcher/app_launcher_button.cc @@ -7,6 +7,7 @@ #include <algorithm> #include "ash/launcher/launcher_button_host.h" +#include "ui/base/accessibility/accessible_view_state.h" #include "ui/gfx/canvas_skia.h" namespace ash { @@ -81,5 +82,10 @@ void AppLauncherButton::OnMouseExited(const views::MouseEvent& event) { host_->MouseExitedButton(this); } +void AppLauncherButton::GetAccessibleState(ui::AccessibleViewState* state) { + state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON; + state->name = host_->GetAccessibleName(this); +} + } // namespace internal } // namespace ash diff --git a/ash/launcher/app_launcher_button.h b/ash/launcher/app_launcher_button.h index 8084062..bcd4f8c 100644 --- a/ash/launcher/app_launcher_button.h +++ b/ash/launcher/app_launcher_button.h @@ -31,6 +31,7 @@ class AppLauncherButton : public views::ImageButton { virtual void OnMouseCaptureLost() OVERRIDE; virtual bool OnMouseDragged(const views::MouseEvent& event) OVERRIDE; virtual void OnMouseExited(const views::MouseEvent& event) OVERRIDE; + virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; private: LauncherButtonHost* host_; diff --git a/ash/launcher/launcher_button_host.h b/ash/launcher/launcher_button_host.h index 1cc9461..2c81385 100644 --- a/ash/launcher/launcher_button_host.h +++ b/ash/launcher/launcher_button_host.h @@ -6,6 +6,8 @@ #define ASH_LAUNCHER_LAUNCHER_BUTTON_HOST_H_ #pragma once +#include "base/string16.h" + namespace views { class MouseEvent; class View; @@ -33,6 +35,9 @@ class LauncherButtonHost { // Invoked when the mouse exits the item. virtual void MouseExitedButton(views::View* view) = 0; + // Invoked to get the accessible name of the item. + virtual string16 GetAccessibleName(views::View* view) = 0; + protected: virtual ~LauncherButtonHost() {} }; diff --git a/ash/launcher/launcher_view.cc b/ash/launcher/launcher_view.cc index d674bb3..ec93a28 100644 --- a/ash/launcher/launcher_view.cc +++ b/ash/launcher/launcher_view.cc @@ -13,10 +13,12 @@ #include "ash/shell.h" #include "ash/shell_delegate.h" #include "base/utf_string_conversions.h" +#include "grit/ash_strings.h" #include "grit/ui_resources.h" #include "ui/aura/window.h" #include "ui/base/animation/animation.h" #include "ui/base/animation/throb_animation.h" +#include "ui/base/l10n/l10n_util.h" #include "ui/base/models/simple_menu_model.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/compositor/layer.h" @@ -643,5 +645,28 @@ void LauncherView::ButtonPressed(views::Button* sender, } } +string16 LauncherView::GetAccessibleName(views::View* view) { + ShellDelegate* delegate = Shell::GetInstance()->delegate(); + if (!delegate) + return string16(); + int view_index = view_model_->GetIndexOfView(view); + // May be -1 while in the process of animating closed. + if (view_index == -1) + return string16(); + + switch (model_->items()[view_index].type) { + case TYPE_TABBED: + case TYPE_APP: + return delegate->GetLauncherItemTitle(model_->items()[view_index]); + + case TYPE_APP_LIST: + return l10n_util::GetStringUTF16(IDS_AURA_APP_LIST_TITLE); + + case TYPE_BROWSER_SHORTCUT: + return l10n_util::GetStringUTF16(IDS_AURA_CYCLER_TITLE); + } + return string16(); +} + } // namespace internal } // namespace ash diff --git a/ash/launcher/launcher_view.h b/ash/launcher/launcher_view.h index 4e41be5..f43e369 100644 --- a/ash/launcher/launcher_view.h +++ b/ash/launcher/launcher_view.h @@ -109,6 +109,7 @@ class LauncherView : public views::WidgetDelegateView, virtual void MouseReleasedOnButton(views::View* view, bool canceled) OVERRIDE; virtual void MouseExitedButton(views::View* view) OVERRIDE; + virtual string16 GetAccessibleName(views::View* view) OVERRIDE; // Overriden from views::ButtonListener: virtual void ButtonPressed(views::Button* sender, diff --git a/ash/launcher/tabbed_launcher_button.cc b/ash/launcher/tabbed_launcher_button.cc index 09da1a9..84d061e 100644 --- a/ash/launcher/tabbed_launcher_button.cc +++ b/ash/launcher/tabbed_launcher_button.cc @@ -8,6 +8,7 @@ #include "ash/launcher/launcher_button_host.h" #include "grit/ui_resources.h" +#include "ui/base/accessibility/accessible_view_state.h" #include "ui/base/animation/multi_animation.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/canvas.h" @@ -162,6 +163,11 @@ void TabbedLauncherButton::OnMouseExited(const views::MouseEvent& event) { hover_controller_.Hide(); } +void TabbedLauncherButton::GetAccessibleState(ui::AccessibleViewState* state) { + state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON; + state->name = host_->GetAccessibleName(this); +} + // static TabbedLauncherButton::ImageSet* TabbedLauncherButton::CreateImageSet( int normal_id, diff --git a/ash/launcher/tabbed_launcher_button.h b/ash/launcher/tabbed_launcher_button.h index c950a11..44917b7 100644 --- a/ash/launcher/tabbed_launcher_button.h +++ b/ash/launcher/tabbed_launcher_button.h @@ -44,6 +44,7 @@ class TabbedLauncherButton : public views::ImageButton { virtual void OnMouseEntered(const views::MouseEvent& event) OVERRIDE; virtual void OnMouseMoved(const views::MouseEvent& event) OVERRIDE; virtual void OnMouseExited(const views::MouseEvent& event) OVERRIDE; + virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; private: // Used as the delegate for |animation_|. TabbedLauncherButton doesn't |