Index: ash/system/tray_accessibility.cc |
diff --git a/ash/system/tray_accessibility.cc b/ash/system/tray_accessibility.cc |
index b4f182376b798efe9390e06d36143242ac0a2fc1..933a5675544bb71c90437a3047a11e4b5924c614 100644 |
--- a/ash/system/tray_accessibility.cc |
+++ b/ash/system/tray_accessibility.cc |
@@ -36,6 +36,7 @@ enum AccessibilityState { |
A11Y_SPOKEN_FEEDBACK = 1 << 0, |
A11Y_HIGH_CONTRAST = 1 << 1, |
A11Y_SCREEN_MAGNIFIER = 1 << 2, |
+ A11Y_LARGE_CURSOR = 1 << 3, |
}; |
uint32 GetAccessibilityState() { |
@@ -47,6 +48,8 @@ uint32 GetAccessibilityState() { |
state |= A11Y_HIGH_CONTRAST; |
if (shell_delegate->IsMagnifierEnabled()) |
state |= A11Y_SCREEN_MAGNIFIER; |
+ if (shell_delegate->IsLargeCursorEnabled()) |
+ state |= A11Y_LARGE_CURSOR; |
return state; |
} |
@@ -107,11 +110,13 @@ AccessibilityDetailedView::AccessibilityDetailedView( |
spoken_feedback_view_(NULL), |
high_contrast_view_(NULL), |
screen_magnifier_view_(NULL), |
+ large_cursor_view_(NULL), |
help_view_(NULL), |
settings_view_(NULL), |
spoken_feedback_enabled_(false), |
high_contrast_enabled_(false), |
screen_magnifier_enabled_(false), |
+ large_cursor_enabled_(false), |
login_(login) { |
Reset(); |
@@ -134,6 +139,17 @@ void AccessibilityDetailedView::AppendAccessibilityList() { |
IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SPOKEN_FEEDBACK), |
spoken_feedback_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL, |
spoken_feedback_enabled_); |
+ |
+ // Large Cursor item is shown only in Login screen. |
+ if (login_ == user::LOGGED_IN_NONE) { |
+ large_cursor_enabled_ = shell_delegate->IsLargeCursorEnabled(); |
+ large_cursor_view_ = AddScrollListItem( |
+ bundle.GetLocalizedString( |
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LARGE_CURSOR), |
+ large_cursor_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL, |
+ large_cursor_enabled_); |
+ } |
+ |
high_contrast_enabled_ = shell_delegate->IsHighContrastEnabled(); |
high_contrast_view_ = AddScrollListItem( |
bundle.GetLocalizedString( |
@@ -203,6 +219,9 @@ void AccessibilityDetailedView::OnViewClicked(views::View* sender) { |
shell_delegate->ToggleHighContrast(); |
} else if (sender == screen_magnifier_view_) { |
shell_delegate->SetMagnifierEnabled(!shell_delegate->IsMagnifierEnabled()); |
+ } else if (large_cursor_view_ && sender == large_cursor_view_) { |
+ shell_delegate-> |
+ SetLargeCursorEnabled(!shell_delegate->IsLargeCursorEnabled()); |
} |
} |
@@ -260,8 +279,6 @@ bool TrayAccessibility::GetInitialVisibility() { |
views::View* TrayAccessibility::CreateDefaultView(user::LoginStatus status) { |
CHECK(default_ == NULL); |
- login_ = status; |
- |
// Shows accessibility menu if: |
// - on login screen (not logged in); |
// - "Enable accessibility menu" on chrome://settings is checked; |
@@ -285,8 +302,6 @@ views::View* TrayAccessibility::CreateDetailedView(user::LoginStatus status) { |
CHECK(detailed_popup_ == NULL); |
CHECK(detailed_menu_ == NULL); |
- login_ = status; |
- |
if (request_popup_view_) { |
detailed_popup_ = new tray::AccessibilityPopupView(this); |
request_popup_view_ = false; |