| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/system/tray_accessibility.h" | 5 #include "ash/system/tray_accessibility.h" |
| 6 | 6 |
| 7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
| 8 #include "ash/shell_delegate.h" | 8 #include "ash/shell_delegate.h" |
| 9 #include "ash/system/tray/system_tray.h" | 9 #include "ash/system/tray/system_tray.h" |
| 10 #include "ash/system/tray/system_tray_delegate.h" | 10 #include "ash/system/tray/system_tray_delegate.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 SetAccessibleName(label); | 70 SetAccessibleName(label); |
| 71 } | 71 } |
| 72 | 72 |
| 73 virtual ~DefaultAccessibilityView() { | 73 virtual ~DefaultAccessibilityView() { |
| 74 } | 74 } |
| 75 | 75 |
| 76 private: | 76 private: |
| 77 DISALLOW_COPY_AND_ASSIGN(DefaultAccessibilityView); | 77 DISALLOW_COPY_AND_ASSIGN(DefaultAccessibilityView); |
| 78 }; | 78 }; |
| 79 | 79 |
| 80 class AccessibilityDetailedView : public TrayDetailsView, | |
| 81 public ViewClickListener, | |
| 82 public views::ButtonListener, | |
| 83 public ShellObserver { | |
| 84 public: | |
| 85 explicit AccessibilityDetailedView(SystemTrayItem* owner, | |
| 86 user::LoginStatus login) : | |
| 87 TrayDetailsView(owner), | |
| 88 spoken_feedback_view_(NULL), | |
| 89 high_contrast_view_(NULL), | |
| 90 screen_magnifier_view_(NULL), | |
| 91 help_view_(NULL), | |
| 92 login_(login) { | |
| 93 | |
| 94 Reset(); | |
| 95 | |
| 96 AppendAccessibilityList(); | |
| 97 AppendHelpEntries(); | |
| 98 CreateSpecialRow(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TITLE, this); | |
| 99 | |
| 100 Layout(); | |
| 101 } | |
| 102 | |
| 103 virtual ~AccessibilityDetailedView() { | |
| 104 } | |
| 105 | |
| 106 private: | |
| 107 // Add the accessibility feature list. | |
| 108 void AppendAccessibilityList() { | |
| 109 CreateScrollableList(); | |
| 110 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | |
| 111 | |
| 112 ShellDelegate* shell_delegate = Shell::GetInstance()->delegate(); | |
| 113 bool spoken_feedback_enabled = shell_delegate->IsSpokenFeedbackEnabled(); | |
| 114 spoken_feedback_view_ = AddScrollListItem( | |
| 115 bundle.GetLocalizedString( | |
| 116 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SPOKEN_FEEDBACK), | |
| 117 spoken_feedback_enabled ? gfx::Font::BOLD : gfx::Font::NORMAL, | |
| 118 spoken_feedback_enabled); | |
| 119 bool high_contrast_mode_enabled = shell_delegate->IsHighContrastEnabled(); | |
| 120 high_contrast_view_ = AddScrollListItem( | |
| 121 bundle.GetLocalizedString( | |
| 122 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGH_CONTRAST_MODE), | |
| 123 high_contrast_mode_enabled ? gfx::Font::BOLD : gfx::Font::NORMAL, | |
| 124 high_contrast_mode_enabled); | |
| 125 bool screen_magnifier_enabled = | |
| 126 shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL; | |
| 127 screen_magnifier_view_ = AddScrollListItem( | |
| 128 bundle.GetLocalizedString( | |
| 129 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SCREEN_MAGNIFIER), | |
| 130 screen_magnifier_enabled ? gfx::Font::BOLD : gfx::Font::NORMAL, | |
| 131 screen_magnifier_enabled); | |
| 132 } | |
| 133 | |
| 134 // Add help entries. | |
| 135 void AppendHelpEntries() { | |
| 136 // Currently the help page requires a browser window. | |
| 137 // TODO(yoshiki): show this even on login/lock screen. crbug.com/158286 | |
| 138 if (login_ == user::LOGGED_IN_NONE || | |
| 139 login_ == user::LOGGED_IN_LOCKED) | |
| 140 return; | |
| 141 | |
| 142 views::View* bottom_row = new View(); | |
| 143 views::BoxLayout* layout = new | |
| 144 views::BoxLayout(views::BoxLayout::kHorizontal, | |
| 145 kTrayMenuBottomRowPadding, | |
| 146 kTrayMenuBottomRowPadding, | |
| 147 kTrayMenuBottomRowPaddingBetweenItems); | |
| 148 layout->set_spread_blank_space(true); | |
| 149 bottom_row->SetLayoutManager(layout); | |
| 150 | |
| 151 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | |
| 152 | |
| 153 TrayPopupLabelButton* help = new TrayPopupLabelButton( | |
| 154 this, | |
| 155 bundle.GetLocalizedString( | |
| 156 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LEARN_MORE)); | |
| 157 bottom_row->AddChildView(help); | |
| 158 help_view_ = help; | |
| 159 | |
| 160 // TODO(yoshiki): Add "Customize accessibility" button when the customize is | |
| 161 // available. crbug.com/158281 | |
| 162 | |
| 163 AddChildView(bottom_row); | |
| 164 } | |
| 165 | |
| 166 HoverHighlightView* AddScrollListItem(const string16& text, | |
| 167 gfx::Font::FontStyle style, | |
| 168 bool checked) { | |
| 169 HoverHighlightView* container = new HoverHighlightView(this); | |
| 170 container->set_fixed_height(kTrayPopupItemHeight); | |
| 171 container->AddCheckableLabel(text, style, checked); | |
| 172 scroll_content()->AddChildView(container); | |
| 173 return container; | |
| 174 } | |
| 175 | |
| 176 // Overridden from ViewClickListener. | |
| 177 virtual void ClickedOn(views::View* sender) OVERRIDE { | |
| 178 ShellDelegate* shell_delegate = Shell::GetInstance()->delegate(); | |
| 179 if (sender == footer()->content()) { | |
| 180 owner()->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING); | |
| 181 } else if (sender == spoken_feedback_view_) { | |
| 182 shell_delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | |
| 183 } else if (sender == high_contrast_view_) { | |
| 184 shell_delegate->ToggleHighContrast(); | |
| 185 } else if (sender == screen_magnifier_view_) { | |
| 186 bool screen_magnifier_enabled = | |
| 187 shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL; | |
| 188 shell_delegate->SetMagnifier( | |
| 189 screen_magnifier_enabled ? ash::MAGNIFIER_OFF : ash::MAGNIFIER_FULL); | |
| 190 } | |
| 191 } | |
| 192 | |
| 193 // Overridden from ButtonListener. | |
| 194 virtual void ButtonPressed(views::Button* sender, | |
| 195 const ui::Event& event) OVERRIDE { | |
| 196 SystemTrayDelegate* tray_delegate = | |
| 197 Shell::GetInstance()->system_tray_delegate(); | |
| 198 if (sender == help_view_) | |
| 199 tray_delegate->ShowAccessibilityHelp(); | |
| 200 } | |
| 201 | |
| 202 views::View* spoken_feedback_view_; | |
| 203 views::View* high_contrast_view_; | |
| 204 views::View* screen_magnifier_view_;; | |
| 205 views::View* help_view_; | |
| 206 user::LoginStatus login_; | |
| 207 | |
| 208 DISALLOW_COPY_AND_ASSIGN(AccessibilityDetailedView); | |
| 209 }; | |
| 210 | |
| 211 class AccessibilityPopupView : public TrayNotificationView { | 80 class AccessibilityPopupView : public TrayNotificationView { |
| 212 public: | 81 public: |
| 213 AccessibilityPopupView(SystemTrayItem* owner) | 82 AccessibilityPopupView(SystemTrayItem* owner) |
| 214 : TrayNotificationView(owner, IDR_AURA_UBER_TRAY_ACCESSIBILITY_DARK) { | 83 : TrayNotificationView(owner, IDR_AURA_UBER_TRAY_ACCESSIBILITY_DARK) { |
| 215 InitView(GetLabel()); | 84 InitView(GetLabel()); |
| 216 } | 85 } |
| 217 | 86 |
| 218 private: | 87 private: |
| 219 views::Label* GetLabel() { | 88 views::Label* GetLabel() { |
| 220 views::Label* label = new views::Label( | 89 views::Label* label = new views::Label( |
| 221 l10n_util::GetStringUTF16( | 90 l10n_util::GetStringUTF16( |
| 222 IDS_ASH_STATUS_TRAY_SPOKEN_FEEDBACK_ENABLED_BUBBLE)); | 91 IDS_ASH_STATUS_TRAY_SPOKEN_FEEDBACK_ENABLED_BUBBLE)); |
| 223 label->SetMultiLine(true); | 92 label->SetMultiLine(true); |
| 224 label->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 93 label->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| 225 return label; | 94 return label; |
| 226 } | 95 } |
| 227 | 96 |
| 228 DISALLOW_COPY_AND_ASSIGN(AccessibilityPopupView); | 97 DISALLOW_COPY_AND_ASSIGN(AccessibilityPopupView); |
| 229 }; | 98 }; |
| 230 | 99 |
| 100 //////////////////////////////////////////////////////////////////////////////// |
| 101 // ash::internal::tray::AccessibilityDetailedView |
| 102 |
| 103 AccessibilityDetailedView::AccessibilityDetailedView( |
| 104 SystemTrayItem* owner, user::LoginStatus login) : |
| 105 TrayDetailsView(owner), |
| 106 spoken_feedback_view_(NULL), |
| 107 high_contrast_view_(NULL), |
| 108 screen_magnifier_view_(NULL), |
| 109 help_view_(NULL), |
| 110 spoken_feedback_enabled_(false), |
| 111 high_contrast_enabled_(false), |
| 112 screen_magnifier_enabled_(false), |
| 113 login_(login) { |
| 114 |
| 115 Reset(); |
| 116 |
| 117 AppendAccessibilityList(); |
| 118 AppendHelpEntries(); |
| 119 CreateSpecialRow(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TITLE, this); |
| 120 |
| 121 Layout(); |
| 122 } |
| 123 |
| 124 void AccessibilityDetailedView::AppendAccessibilityList() { |
| 125 CreateScrollableList(); |
| 126 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
| 127 |
| 128 ShellDelegate* shell_delegate = Shell::GetInstance()->delegate(); |
| 129 spoken_feedback_enabled_ = shell_delegate->IsSpokenFeedbackEnabled(); |
| 130 spoken_feedback_view_ = AddScrollListItem( |
| 131 bundle.GetLocalizedString( |
| 132 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SPOKEN_FEEDBACK), |
| 133 spoken_feedback_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL, |
| 134 spoken_feedback_enabled_); |
| 135 high_contrast_enabled_ = shell_delegate->IsHighContrastEnabled(); |
| 136 high_contrast_view_ = AddScrollListItem( |
| 137 bundle.GetLocalizedString( |
| 138 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGH_CONTRAST_MODE), |
| 139 high_contrast_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL, |
| 140 high_contrast_enabled_); |
| 141 screen_magnifier_enabled_ = |
| 142 shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL; |
| 143 screen_magnifier_view_ = AddScrollListItem( |
| 144 bundle.GetLocalizedString( |
| 145 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SCREEN_MAGNIFIER), |
| 146 screen_magnifier_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL, |
| 147 screen_magnifier_enabled_); |
| 148 } |
| 149 |
| 150 void AccessibilityDetailedView::AppendHelpEntries() { |
| 151 // Currently the help page requires a browser window. |
| 152 // TODO(yoshiki): show this even on login/lock screen. crbug.com/158286 |
| 153 if (login_ == user::LOGGED_IN_NONE || |
| 154 login_ == user::LOGGED_IN_LOCKED) |
| 155 return; |
| 156 |
| 157 views::View* bottom_row = new View(); |
| 158 views::BoxLayout* layout = new |
| 159 views::BoxLayout(views::BoxLayout::kHorizontal, |
| 160 kTrayMenuBottomRowPadding, |
| 161 kTrayMenuBottomRowPadding, |
| 162 kTrayMenuBottomRowPaddingBetweenItems); |
| 163 layout->set_spread_blank_space(true); |
| 164 bottom_row->SetLayoutManager(layout); |
| 165 |
| 166 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
| 167 |
| 168 TrayPopupLabelButton* help = new TrayPopupLabelButton( |
| 169 this, |
| 170 bundle.GetLocalizedString( |
| 171 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LEARN_MORE)); |
| 172 bottom_row->AddChildView(help); |
| 173 help_view_ = help; |
| 174 |
| 175 // TODO(yoshiki): Add "Customize accessibility" button when the customize is |
| 176 // available. crbug.com/158281 |
| 177 |
| 178 AddChildView(bottom_row); |
| 179 } |
| 180 |
| 181 HoverHighlightView* AccessibilityDetailedView::AddScrollListItem( |
| 182 const string16& text, |
| 183 gfx::Font::FontStyle style, |
| 184 bool checked) { |
| 185 HoverHighlightView* container = new HoverHighlightView(this); |
| 186 container->set_fixed_height(kTrayPopupItemHeight); |
| 187 container->AddCheckableLabel(text, style, checked); |
| 188 scroll_content()->AddChildView(container); |
| 189 return container; |
| 190 } |
| 191 |
| 192 void AccessibilityDetailedView::ClickedOn(views::View* sender) { |
| 193 ShellDelegate* shell_delegate = Shell::GetInstance()->delegate(); |
| 194 if (sender == footer()->content()) { |
| 195 owner()->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING); |
| 196 } else if (sender == spoken_feedback_view_) { |
| 197 shell_delegate->ToggleSpokenFeedback(ash::A11Y_NOTIFICATION_NONE); |
| 198 } else if (sender == high_contrast_view_) { |
| 199 shell_delegate->ToggleHighContrast(); |
| 200 } else if (sender == screen_magnifier_view_) { |
| 201 bool screen_magnifier_enabled = |
| 202 shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL; |
| 203 shell_delegate->SetMagnifier( |
| 204 screen_magnifier_enabled ? ash::MAGNIFIER_OFF : ash::MAGNIFIER_FULL); |
| 205 } |
| 206 } |
| 207 |
| 208 void AccessibilityDetailedView::ButtonPressed(views::Button* sender, |
| 209 const ui::Event& event) { |
| 210 SystemTrayDelegate* tray_delegate = |
| 211 Shell::GetInstance()->system_tray_delegate(); |
| 212 if (sender == help_view_) |
| 213 tray_delegate->ShowAccessibilityHelp(); |
| 214 } |
| 215 |
| 231 } // namespace tray | 216 } // namespace tray |
| 232 | 217 |
| 218 //////////////////////////////////////////////////////////////////////////////// |
| 219 // ash::internal::TrayAccessibility |
| 233 | 220 |
| 234 TrayAccessibility::TrayAccessibility(SystemTray* system_tray) | 221 TrayAccessibility::TrayAccessibility(SystemTray* system_tray) |
| 235 : TrayImageItem(system_tray, IDR_AURA_UBER_TRAY_ACCESSIBILITY), | 222 : TrayImageItem(system_tray, IDR_AURA_UBER_TRAY_ACCESSIBILITY), |
| 236 default_(NULL), | 223 default_(NULL), |
| 237 detailed_(NULL), | 224 detailed_popup_(NULL), |
| 225 detailed_menu_(NULL), |
| 238 request_popup_view_(false), | 226 request_popup_view_(false), |
| 227 tray_icon_visible_(false), |
| 239 login_(GetCurrentLoginStatus()), | 228 login_(GetCurrentLoginStatus()), |
| 240 previous_accessibility_state_(GetAccessibilityState()) { | 229 previous_accessibility_state_(GetAccessibilityState()) { |
| 241 DCHECK(Shell::GetInstance()->delegate()); | 230 DCHECK(Shell::GetInstance()->delegate()); |
| 242 DCHECK(system_tray); | 231 DCHECK(system_tray); |
| 243 Shell::GetInstance()->system_tray_notifier()->AddAccessibilityObserver(this); | 232 Shell::GetInstance()->system_tray_notifier()->AddAccessibilityObserver(this); |
| 244 } | 233 } |
| 245 | 234 |
| 246 TrayAccessibility::~TrayAccessibility() { | 235 TrayAccessibility::~TrayAccessibility() { |
| 247 Shell::GetInstance()->system_tray_notifier()-> | 236 Shell::GetInstance()->system_tray_notifier()-> |
| 248 RemoveAccessibilityObserver(this); | 237 RemoveAccessibilityObserver(this); |
| 249 } | 238 } |
| 250 | 239 |
| 240 void TrayAccessibility::SetTrayIconVisible(bool visible) { |
| 241 if (tray_view()) |
| 242 tray_view()->SetVisible(visible); |
| 243 tray_icon_visible_ = visible; |
| 244 } |
| 245 |
| 246 tray::AccessibilityDetailedView* TrayAccessibility::CreateDetailedMenu() { |
| 247 return new tray::AccessibilityDetailedView(this, login_); |
| 248 } |
| 249 |
| 251 bool TrayAccessibility::GetInitialVisibility() { | 250 bool TrayAccessibility::GetInitialVisibility() { |
| 252 // Shows accessibility icon if any accessibility feature is enabled. | 251 // Shows accessibility icon if any accessibility feature is enabled. |
| 253 // Otherwise, doen't show it. | 252 // Otherwise, doen't show it. |
| 254 return GetAccessibilityState() != A11Y_NONE; | 253 return GetAccessibilityState() != A11Y_NONE; |
| 255 } | 254 } |
| 256 | 255 |
| 257 views::View* TrayAccessibility::CreateDefaultView(user::LoginStatus status) { | 256 views::View* TrayAccessibility::CreateDefaultView(user::LoginStatus status) { |
| 258 CHECK(default_ == NULL); | 257 CHECK(default_ == NULL); |
| 259 | 258 |
| 260 login_ = status; | 259 login_ = status; |
| 261 | 260 |
| 262 // Shows accessibility menu if: | 261 // Shows accessibility menu if: |
| 263 // - on login screen (not logged in); | 262 // - on login screen (not logged in); |
| 264 // - "Enable accessibility menu" on chrome://settings is checked; | 263 // - "Enable accessibility menu" on chrome://settings is checked; |
| 265 // - or any of accessibility features is enabled | 264 // - or any of accessibility features is enabled |
| 266 // Otherwise, not shows it. | 265 // Otherwise, not shows it. |
| 267 ShellDelegate* delegate = Shell::GetInstance()->delegate(); | 266 ShellDelegate* delegate = Shell::GetInstance()->delegate(); |
| 268 if (login_ != user::LOGGED_IN_NONE && | 267 if (login_ != user::LOGGED_IN_NONE && |
| 269 !delegate->ShouldAlwaysShowAccessibilityMenu() && | 268 !delegate->ShouldAlwaysShowAccessibilityMenu() && |
| 270 GetAccessibilityState() == A11Y_NONE) | 269 GetAccessibilityState() == A11Y_NONE) |
| 271 return NULL; | 270 return NULL; |
| 272 | 271 |
| 273 CHECK(default_ == NULL); | 272 CHECK(default_ == NULL); |
| 274 default_ = new tray::DefaultAccessibilityView(this); | 273 default_ = new tray::DefaultAccessibilityView(this); |
| 275 | 274 |
| 276 return default_; | 275 return default_; |
| 277 } | 276 } |
| 278 | 277 |
| 279 views::View* TrayAccessibility::CreateDetailedView(user::LoginStatus status) { | 278 views::View* TrayAccessibility::CreateDetailedView(user::LoginStatus status) { |
| 280 CHECK(detailed_ == NULL); | 279 CHECK(detailed_popup_ == NULL); |
| 280 CHECK(detailed_menu_ == NULL); |
| 281 | 281 |
| 282 login_ = status; | 282 login_ = status; |
| 283 | 283 |
| 284 if (request_popup_view_) { | 284 if (request_popup_view_) { |
| 285 detailed_ = new tray::AccessibilityPopupView(this); | 285 detailed_popup_ = new tray::AccessibilityPopupView(this); |
| 286 request_popup_view_ = false; | 286 request_popup_view_ = false; |
| 287 return detailed_popup_; |
| 287 } else { | 288 } else { |
| 288 detailed_ = new tray::AccessibilityDetailedView(this, status); | 289 detailed_menu_ = CreateDetailedMenu(); |
| 290 return detailed_menu_; |
| 289 } | 291 } |
| 290 | |
| 291 return detailed_; | |
| 292 } | 292 } |
| 293 | 293 |
| 294 void TrayAccessibility::DestroyDefaultView() { | 294 void TrayAccessibility::DestroyDefaultView() { |
| 295 default_ = NULL; | 295 default_ = NULL; |
| 296 } | 296 } |
| 297 | 297 |
| 298 void TrayAccessibility::DestroyDetailedView() { | 298 void TrayAccessibility::DestroyDetailedView() { |
| 299 detailed_ = NULL; | 299 detailed_popup_ = NULL; |
| 300 detailed_menu_ = NULL; |
| 300 } | 301 } |
| 301 | 302 |
| 302 void TrayAccessibility::UpdateAfterLoginStatusChange(user::LoginStatus status) { | 303 void TrayAccessibility::UpdateAfterLoginStatusChange(user::LoginStatus status) { |
| 303 login_ = status; | 304 login_ = status; |
| 304 | 305 SetTrayIconVisible(GetInitialVisibility()); |
| 305 if (tray_view()) | |
| 306 tray_view()->SetVisible(GetInitialVisibility()); | |
| 307 } | 306 } |
| 308 | 307 |
| 309 void TrayAccessibility::OnAccessibilityModeChanged( | 308 void TrayAccessibility::OnAccessibilityModeChanged( |
| 310 AccessibilityNotificationVisibility notify) { | 309 AccessibilityNotificationVisibility notify) { |
| 311 if (tray_view()) | 310 SetTrayIconVisible(GetInitialVisibility()); |
| 312 tray_view()->SetVisible(GetInitialVisibility()); | |
| 313 | 311 |
| 314 uint32 accessibility_state = GetAccessibilityState(); | 312 uint32 accessibility_state = GetAccessibilityState(); |
| 315 if ((notify == ash::A11Y_NOTIFICATION_SHOW)&& | 313 if ((notify == ash::A11Y_NOTIFICATION_SHOW)&& |
| 316 !(previous_accessibility_state_ & A11Y_SPOKEN_FEEDBACK) && | 314 !(previous_accessibility_state_ & A11Y_SPOKEN_FEEDBACK) && |
| 317 (accessibility_state & A11Y_SPOKEN_FEEDBACK)) { | 315 (accessibility_state & A11Y_SPOKEN_FEEDBACK)) { |
| 318 // Shows popup if |notify| is true and the spoken feedback is being enabled. | 316 // Shows popup if |notify| is true and the spoken feedback is being enabled. |
| 319 request_popup_view_ = true; | 317 request_popup_view_ = true; |
| 320 PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false); | 318 PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false); |
| 321 } else if (detailed_) { | 319 } else { |
| 322 detailed_->GetWidget()->Close(); | 320 if (detailed_popup_) |
| 321 detailed_popup_->GetWidget()->Close(); |
| 322 if (detailed_menu_) |
| 323 detailed_menu_->GetWidget()->Close(); |
| 323 } | 324 } |
| 324 | 325 |
| 325 previous_accessibility_state_ = accessibility_state; | 326 previous_accessibility_state_ = accessibility_state; |
| 326 } | 327 } |
| 327 | 328 |
| 328 } // namespace internal | 329 } // namespace internal |
| 329 } // namespace ash | 330 } // namespace ash |
| OLD | NEW |