Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1371)

Unified Diff: ash/common/system/tray_accessibility.cc

Issue 2771963002: List all a11y featuers in ash system menu (Closed)
Patch Set: Update the text of additional settings of a11y Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/common/system/tray_accessibility.cc
diff --git a/ash/common/system/tray_accessibility.cc b/ash/common/system/tray_accessibility.cc
index 7523dfe21cebb871ab5d7fd12d0a83bfee5c7c90..cd915aca8c56a1113fce2fdc5e0a8cc94020b101 100644
--- a/ash/common/system/tray_accessibility.cc
+++ b/ash/common/system/tray_accessibility.cc
@@ -32,6 +32,7 @@
#include "ui/views/controls/button/custom_button.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
+#include "ui/views/controls/separator.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/widget/widget.h"
@@ -47,6 +48,10 @@ enum AccessibilityState {
A11Y_AUTOCLICK = 1 << 4,
A11Y_VIRTUAL_KEYBOARD = 1 << 5,
A11Y_BRAILLE_DISPLAY_CONNECTED = 1 << 6,
+ A11Y_MONO_AUDIO = 1 << 7,
+ A11Y_CARET_HIGHLIGHT = 1 << 8,
+ A11Y_HIGHLIGHT_MOUSE_CURSOR = 1 << 9,
+ A11Y_HIGHLIGHT_KEYBOARD_FOCUS = 1 << 10,
};
uint32_t GetAccessibilityState() {
@@ -67,6 +72,14 @@ uint32_t GetAccessibilityState() {
state |= A11Y_VIRTUAL_KEYBOARD;
if (delegate->IsBrailleDisplayConnected())
state |= A11Y_BRAILLE_DISPLAY_CONNECTED;
+ if (delegate->IsMonoAudioEnabled())
+ state |= A11Y_MONO_AUDIO;
+ if (delegate->IsCaretHighlightEnabled())
+ state |= A11Y_CARET_HIGHLIGHT;
+ if (delegate->IsCursorHighlightEnabled())
+ state |= A11Y_HIGHLIGHT_MOUSE_CURSOR;
+ if (delegate->IsFocusHighlightEnabled())
+ state |= A11Y_HIGHLIGHT_KEYBOARD_FOCUS;
return state;
}
@@ -147,12 +160,20 @@ AccessibilityDetailedView::AccessibilityDetailedView(SystemTrayItem* owner,
settings_view_(nullptr),
autoclick_view_(nullptr),
virtual_keyboard_view_(nullptr),
+ mono_audio_view_(nullptr),
+ caret_highlight_view_(nullptr),
+ highlight_mouse_cursor_view_(nullptr),
+ highlight_keyboard_focus_view_(nullptr),
spoken_feedback_enabled_(false),
high_contrast_enabled_(false),
screen_magnifier_enabled_(false),
large_cursor_enabled_(false),
autoclick_enabled_(false),
virtual_keyboard_enabled_(false),
+ mono_audio_enabled_(false),
+ caret_highlight_enabled_(false),
+ highlight_mouse_cursor_enabled_(false),
+ highlight_keyboard_focus_enabled_(false),
xiyuan 2017/03/28 20:11:25 nit: Since you are here, could you move all member
minch1 2017/03/29 01:15:11 Done.
login_(login) {
Reset();
AppendAccessibilityList();
@@ -173,16 +194,6 @@ void AccessibilityDetailedView::AppendAccessibilityList() {
spoken_feedback_enabled_, spoken_feedback_enabled_,
kSystemMenuAccessibilityChromevoxIcon);
- // Large Cursor item is shown only in Login screen.
- if (login_ == LoginStatus::NOT_LOGGED_IN) {
xiyuan 2017/03/28 20:11:25 Just double check that removing login status check
minch1 2017/03/29 01:15:11 hi, tdanderson@, can you help confirm this?
tdanderson 2017/03/29 18:57:02 Yes, I spoke with the a11y PM (lpalmaro@) a while
- large_cursor_enabled_ = delegate->IsLargeCursorEnabled();
- large_cursor_view_ =
- AddScrollListItem(bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LARGE_CURSOR),
- large_cursor_enabled_, large_cursor_enabled_,
- kSystemMenuAccessibilityLargeCursorIcon);
- }
-
high_contrast_enabled_ = delegate->IsHighContrastEnabled();
high_contrast_view_ = AddScrollListItem(
bundle.GetLocalizedString(
@@ -196,14 +207,11 @@ void AccessibilityDetailedView::AppendAccessibilityList() {
screen_magnifier_enabled_, screen_magnifier_enabled_,
kSystemMenuAccessibilityScreenMagnifierIcon);
- // Don't show autoclick option at login screen.
- if (login_ != LoginStatus::NOT_LOGGED_IN) {
- autoclick_enabled_ = delegate->IsAutoclickEnabled();
- autoclick_view_ = AddScrollListItem(
- bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_AUTOCLICK),
- autoclick_enabled_, autoclick_enabled_,
- kSystemMenuAccessibilityAutoClickIcon);
- }
+ autoclick_enabled_ = delegate->IsAutoclickEnabled();
+ autoclick_view_ = AddScrollListItem(
+ bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_AUTOCLICK),
+ autoclick_enabled_, autoclick_enabled_,
+ kSystemMenuAccessibilityAutoClickIcon);
virtual_keyboard_enabled_ = delegate->IsVirtualKeyboardEnabled();
virtual_keyboard_view_ =
@@ -211,6 +219,38 @@ void AccessibilityDetailedView::AppendAccessibilityList() {
IDS_ASH_STATUS_TRAY_ACCESSIBILITY_VIRTUAL_KEYBOARD),
virtual_keyboard_enabled_, virtual_keyboard_enabled_,
kSystemMenuKeyboardIcon);
+
+ AddSubHeader(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_ADDITIONAL_SETTINGS);
+
+ large_cursor_enabled_ = delegate->IsLargeCursorEnabled();
+ large_cursor_view_ = AddScrollListItemWithoutIcon(
+ bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LARGE_CURSOR),
+ large_cursor_enabled_);
+
+ mono_audio_enabled_ = delegate->IsMonoAudioEnabled();
+ mono_audio_view_ = AddScrollListItemWithoutIcon(
+ bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_MONO_AUDIO),
+ mono_audio_enabled_);
+
+ caret_highlight_enabled_ = delegate->IsCaretHighlightEnabled();
+ caret_highlight_view_ = AddScrollListItemWithoutIcon(
+ bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_CARET_HIGHLIGHT),
+ caret_highlight_enabled_);
+
+ highlight_mouse_cursor_enabled_ = delegate->IsCursorHighlightEnabled();
+ highlight_mouse_cursor_view_ = AddScrollListItemWithoutIcon(
+ bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_MOUSE_CURSOR),
+ highlight_mouse_cursor_enabled_);
+
+ if (!spoken_feedback_enabled_) {
xiyuan 2017/03/28 20:11:25 nit: brief comment to document that "Focus highlig
minch1 2017/03/29 01:15:11 Done.
+ highlight_keyboard_focus_enabled_ = delegate->IsFocusHighlightEnabled();
+ highlight_keyboard_focus_view_ = AddScrollListItemWithoutIcon(
+ bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_KEYBOARD_FOCUS),
+ highlight_keyboard_focus_enabled_);
+ }
}
HoverHighlightView* AccessibilityDetailedView::AddScrollListItem(
@@ -225,20 +265,54 @@ HoverHighlightView* AccessibilityDetailedView::AddScrollListItem(
image, text, highlight, image.width() + kMenuSeparatorVerticalPadding * 2,
padding, padding);
+ CheckOrUncheckMark(&container, checked);
+
+ scroll_content()->AddChildView(container);
+ return container;
+}
+
+HoverHighlightView* AccessibilityDetailedView::AddScrollListItemWithoutIcon(
+ const base::string16& text,
+ bool checked) {
+ HoverHighlightView* container = new HoverHighlightView(this);
+ container->AddLabelRowMd(text);
+
+ CheckOrUncheckMark(&container, checked);
+
+ scroll_content()->AddChildView(container);
+ return container;
+}
+
+void AccessibilityDetailedView::CheckOrUncheckMark(
+ HoverHighlightView** container,
+ bool checked) {
if (checked) {
gfx::ImageSkia check_mark =
CreateVectorIcon(kCheckCircleIcon, gfx::kGoogleGreen700);
- container->AddRightIcon(check_mark, check_mark.width());
- container->SetRightViewVisible(true);
- container->SetAccessiblityState(
- HoverHighlightView::AccessibilityState::CHECKED_CHECKBOX);
+ (*container)->AddRightIcon(check_mark, check_mark.width());
+ (*container)->SetRightViewVisible(true);
+ (*container)
+ ->SetAccessiblityState(
+ HoverHighlightView::AccessibilityState::CHECKED_CHECKBOX);
} else {
- container->SetAccessiblityState(
- HoverHighlightView::AccessibilityState::UNCHECKED_CHECKBOX);
+ (*container)
+ ->SetAccessiblityState(
+ HoverHighlightView::AccessibilityState::UNCHECKED_CHECKBOX);
}
+}
- scroll_content()->AddChildView(container);
- return container;
+void AccessibilityDetailedView::AddSubHeader(int message_id) {
+ TriView* header = TrayPopupUtils::CreateSubHeaderRowView();
+ TrayPopupUtils::ConfigureAsStickyHeader(header);
+
+ views::Label* label = TrayPopupUtils::CreateDefaultLabel();
+ label->SetText(l10n_util::GetStringUTF16(message_id));
+ TrayPopupItemStyle style(TrayPopupItemStyle::FontStyle::SUB_HEADER);
+ style.SetupLabel(label);
+ header->AddView(TriView::Container::CENTER, label);
+
+ scroll_content()->AddChildView(new views::Separator());
+ scroll_content()->AddChildView(header);
}
void AccessibilityDetailedView::HandleViewClicked(views::View* view) {
@@ -275,6 +349,28 @@ void AccessibilityDetailedView::HandleViewClicked(views::View* view) {
? ash::UMA_STATUS_AREA_DISABLE_VIRTUAL_KEYBOARD
: ash::UMA_STATUS_AREA_ENABLE_VIRTUAL_KEYBOARD;
delegate->SetVirtualKeyboardEnabled(!delegate->IsVirtualKeyboardEnabled());
+ } else if (caret_highlight_view_ && view == caret_highlight_view_) {
+ user_action = delegate->IsCaretHighlightEnabled()
+ ? ash::UMA_STATUS_AREA_DISABLE_CARET_HIGHLIGHT
+ : ash::UMA_STATUS_AREA_ENABLE_CARET_HIGHLIGHT;
+ delegate->SetCaretHighlightEnabled(!delegate->IsCaretHighlightEnabled());
+ } else if (mono_audio_view_ && view == mono_audio_view_) {
+ user_action = delegate->IsMonoAudioEnabled()
+ ? ash::UMA_STATUS_AREA_DISABLE_MONO_AUDIO
+ : ash::UMA_STATUS_AREA_ENABLE_MONO_AUDIO;
+ delegate->SetMonoAudioEnabled(!delegate->IsMonoAudioEnabled());
+ } else if (highlight_mouse_cursor_view_ &&
+ view == highlight_mouse_cursor_view_) {
+ user_action = delegate->IsCursorHighlightEnabled()
+ ? ash::UMA_STATUS_AREA_DISABLE_HIGHLIGHT_MOUSE_CURSOR
+ : ash::UMA_STATUS_AREA_ENABLE_HIGHLIGHT_MOUSE_CURSOR;
+ delegate->SetCursorHighlightEnabled(!delegate->IsCursorHighlightEnabled());
+ } else if (highlight_keyboard_focus_view_ &&
+ view == highlight_keyboard_focus_view_) {
+ user_action = delegate->IsFocusHighlightEnabled()
+ ? ash::UMA_STATUS_AREA_DISABLE_HIGHLIGHT_KEYBOARD_FOCUS
+ : ash::UMA_STATUS_AREA_ENABLE_HIGHLIGHT_KEYBOARD_FOCUS;
+ delegate->SetFocusHighlightEnabled(!delegate->IsFocusHighlightEnabled());
} else {
return;
}

Powered by Google App Engine
This is Rietveld 408576698