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

Side by Side Diff: chrome/browser/chromeos/accessibility/accessibility_manager.cc

Issue 682943002: Make chrome/browser/chromeos/accessibility compile on Athena with use_ash=0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@athena_do_not_use_ash41_scroll_end_effect
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "chrome/browser/chromeos/accessibility/accessibility_manager.h" 5 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
6 6
7 #include "ash/audio/sounds.h"
8 #include "ash/autoclick/autoclick_controller.h"
9 #include "ash/high_contrast/high_contrast_controller.h"
10 #include "ash/metrics/user_metrics_recorder.h"
11 #include "ash/session/session_state_delegate.h"
12 #include "ash/shell.h"
13 #include "ash/sticky_keys/sticky_keys_controller.h"
14 #include "ash/system/tray/system_tray_notifier.h"
15 #include "base/callback.h" 7 #include "base/callback.h"
16 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
17 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
18 #include "base/memory/singleton.h" 10 #include "base/memory/singleton.h"
19 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
20 #include "base/path_service.h" 12 #include "base/path_service.h"
21 #include "base/prefs/pref_member.h" 13 #include "base/prefs/pref_member.h"
22 #include "base/prefs/pref_service.h" 14 #include "base/prefs/pref_service.h"
23 #include "base/strings/string_split.h" 15 #include "base/strings/string_split.h"
24 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
25 #include "base/time/time.h" 17 #include "base/time/time.h"
26 #include "base/values.h" 18 #include "base/values.h"
27 #include "chrome/browser/accessibility/accessibility_extension_api.h" 19 #include "chrome/browser/accessibility/accessibility_extension_api.h"
28 #include "chrome/browser/browser_process.h" 20 #include "chrome/browser/browser_process.h"
29 #include "chrome/browser/chrome_notification_types.h" 21 #include "chrome/browser/chrome_notification_types.h"
30 #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
31 #include "chrome/browser/chromeos/login/lock/screen_locker.h" 22 #include "chrome/browser/chromeos/login/lock/screen_locker.h"
32 #include "chrome/browser/chromeos/login/ui/login_display_host.h" 23 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
33 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" 24 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
34 #include "chrome/browser/chromeos/login/ui/webui_login_view.h" 25 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
35 #include "chrome/browser/chromeos/profiles/profile_helper.h" 26 #include "chrome/browser/chromeos/profiles/profile_helper.h"
36 #include "chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h" 27 #include "chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h"
37 #include "chrome/browser/extensions/component_loader.h" 28 #include "chrome/browser/extensions/component_loader.h"
38 #include "chrome/browser/extensions/extension_service.h" 29 #include "chrome/browser/extensions/extension_service.h"
39 #include "chrome/browser/profiles/profile.h" 30 #include "chrome/browser/profiles/profile.h"
40 #include "chrome/browser/profiles/profile_manager.h" 31 #include "chrome/browser/profiles/profile_manager.h"
(...skipping 19 matching lines...) Expand all
60 #include "extensions/browser/extension_system.h" 51 #include "extensions/browser/extension_system.h"
61 #include "extensions/browser/file_reader.h" 52 #include "extensions/browser/file_reader.h"
62 #include "extensions/common/extension.h" 53 #include "extensions/common/extension.h"
63 #include "extensions/common/extension_messages.h" 54 #include "extensions/common/extension_messages.h"
64 #include "extensions/common/extension_resource.h" 55 #include "extensions/common/extension_resource.h"
65 #include "media/audio/sounds/sounds_manager.h" 56 #include "media/audio/sounds/sounds_manager.h"
66 #include "ui/base/resource/resource_bundle.h" 57 #include "ui/base/resource/resource_bundle.h"
67 #include "ui/keyboard/keyboard_controller.h" 58 #include "ui/keyboard/keyboard_controller.h"
68 #include "ui/keyboard/keyboard_util.h" 59 #include "ui/keyboard/keyboard_util.h"
69 60
61 #if !defined(USE_ATHENA)
62 #include "ash/audio/sounds.h"
63 #include "ash/autoclick/autoclick_controller.h"
64 #include "ash/high_contrast/high_contrast_controller.h"
65 #include "ash/metrics/user_metrics_recorder.h"
66 #include "ash/session/session_state_delegate.h"
67 #include "ash/shell.h"
68 #include "ash/sticky_keys/sticky_keys_controller.h"
69 #include "ash/system/tray/system_tray_notifier.h"
70 #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
71 #endif
72
70 using content::BrowserThread; 73 using content::BrowserThread;
71 using content::RenderViewHost; 74 using content::RenderViewHost;
72 using extensions::api::braille_display_private::BrailleController; 75 using extensions::api::braille_display_private::BrailleController;
73 using extensions::api::braille_display_private::DisplayState; 76 using extensions::api::braille_display_private::DisplayState;
74 using extensions::api::braille_display_private::KeyEvent; 77 using extensions::api::braille_display_private::KeyEvent;
75 78
76 namespace chromeos { 79 namespace chromeos {
77 80
78 namespace { 81 namespace {
79 82
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 } 242 }
240 243
241 } // namespace 244 } // namespace
242 245
243 /////////////////////////////////////////////////////////////////////////////// 246 ///////////////////////////////////////////////////////////////////////////////
244 // AccessibilityStatusEventDetails 247 // AccessibilityStatusEventDetails
245 248
246 AccessibilityStatusEventDetails::AccessibilityStatusEventDetails( 249 AccessibilityStatusEventDetails::AccessibilityStatusEventDetails(
247 AccessibilityNotificationType notification_type, 250 AccessibilityNotificationType notification_type,
248 bool enabled, 251 bool enabled,
249 ash::AccessibilityNotificationVisibility notify) 252 ui::AccessibilityNotificationVisibility notify)
250 : notification_type(notification_type), 253 : notification_type(notification_type),
251 enabled(enabled), 254 enabled(enabled),
252 magnifier_type(ash::kDefaultMagnifierType), 255 magnifier_type(ui::kDefaultMagnifierType),
253 notify(notify) {} 256 notify(notify) {}
254 257
255 AccessibilityStatusEventDetails::AccessibilityStatusEventDetails( 258 AccessibilityStatusEventDetails::AccessibilityStatusEventDetails(
256 AccessibilityNotificationType notification_type, 259 AccessibilityNotificationType notification_type,
257 bool enabled, 260 bool enabled,
258 ash::MagnifierType magnifier_type, 261 ui::MagnifierType magnifier_type,
259 ash::AccessibilityNotificationVisibility notify) 262 ui::AccessibilityNotificationVisibility notify)
260 : notification_type(notification_type), 263 : notification_type(notification_type),
261 enabled(enabled), 264 enabled(enabled),
262 magnifier_type(magnifier_type), 265 magnifier_type(magnifier_type),
263 notify(notify) {} 266 notify(notify) {}
264 267
265 /////////////////////////////////////////////////////////////////////////////// 268 ///////////////////////////////////////////////////////////////////////////////
266 // 269 //
267 // AccessibilityManager::PrefHandler 270 // AccessibilityManager::PrefHandler
268 271
269 AccessibilityManager::PrefHandler::PrefHandler(const char* pref_path) 272 AccessibilityManager::PrefHandler::PrefHandler(const char* pref_path)
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 high_contrast_pref_handler_(prefs::kAccessibilityHighContrastEnabled), 335 high_contrast_pref_handler_(prefs::kAccessibilityHighContrastEnabled),
333 autoclick_pref_handler_(prefs::kAccessibilityAutoclickEnabled), 336 autoclick_pref_handler_(prefs::kAccessibilityAutoclickEnabled),
334 autoclick_delay_pref_handler_(prefs::kAccessibilityAutoclickDelayMs), 337 autoclick_delay_pref_handler_(prefs::kAccessibilityAutoclickDelayMs),
335 virtual_keyboard_pref_handler_( 338 virtual_keyboard_pref_handler_(
336 prefs::kAccessibilityVirtualKeyboardEnabled), 339 prefs::kAccessibilityVirtualKeyboardEnabled),
337 large_cursor_enabled_(false), 340 large_cursor_enabled_(false),
338 sticky_keys_enabled_(false), 341 sticky_keys_enabled_(false),
339 spoken_feedback_enabled_(false), 342 spoken_feedback_enabled_(false),
340 high_contrast_enabled_(false), 343 high_contrast_enabled_(false),
341 autoclick_enabled_(false), 344 autoclick_enabled_(false),
345 #if defined(USE_ATHENA)
346 autoclick_delay_ms_(400),
347 #else
342 autoclick_delay_ms_(ash::AutoclickController::kDefaultAutoclickDelayMs), 348 autoclick_delay_ms_(ash::AutoclickController::kDefaultAutoclickDelayMs),
349 #endif
343 virtual_keyboard_enabled_(false), 350 virtual_keyboard_enabled_(false),
344 spoken_feedback_notification_(ash::A11Y_NOTIFICATION_NONE), 351 spoken_feedback_notification_(ui::A11Y_NOTIFICATION_NONE),
345 should_speak_chrome_vox_announcements_on_user_screen_(true), 352 should_speak_chrome_vox_announcements_on_user_screen_(true),
346 system_sounds_enabled_(false), 353 system_sounds_enabled_(false),
347 braille_display_connected_(false), 354 braille_display_connected_(false),
348 scoped_braille_observer_(this), 355 scoped_braille_observer_(this),
349 braille_ime_current_(false), 356 braille_ime_current_(false),
350 weak_ptr_factory_(this) { 357 weak_ptr_factory_(this) {
351 notification_registrar_.Add(this, 358 notification_registrar_.Add(this,
352 chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, 359 chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE,
353 content::NotificationService::AllSources()); 360 content::NotificationService::AllSources());
354 notification_registrar_.Add(this, 361 notification_registrar_.Add(this,
(...skipping 24 matching lines...) Expand all
379 bundle.GetRawDataResource(IDR_SOUND_EXIT_SCREEN_WAV)); 386 bundle.GetRawDataResource(IDR_SOUND_EXIT_SCREEN_WAV));
380 manager->Initialize(SOUND_ENTER_SCREEN, 387 manager->Initialize(SOUND_ENTER_SCREEN,
381 bundle.GetRawDataResource(IDR_SOUND_ENTER_SCREEN_WAV)); 388 bundle.GetRawDataResource(IDR_SOUND_ENTER_SCREEN_WAV));
382 } 389 }
383 390
384 AccessibilityManager::~AccessibilityManager() { 391 AccessibilityManager::~AccessibilityManager() {
385 CHECK(this == g_accessibility_manager); 392 CHECK(this == g_accessibility_manager);
386 AccessibilityStatusEventDetails details( 393 AccessibilityStatusEventDetails details(
387 ACCESSIBILITY_MANAGER_SHUTDOWN, 394 ACCESSIBILITY_MANAGER_SHUTDOWN,
388 false, 395 false,
389 ash::A11Y_NOTIFICATION_NONE); 396 ui::A11Y_NOTIFICATION_NONE);
390 NotifyAccessibilityStatusChanged(details); 397 NotifyAccessibilityStatusChanged(details);
391 input_method::InputMethodManager::Get()->RemoveObserver(this); 398 input_method::InputMethodManager::Get()->RemoveObserver(this);
392 } 399 }
393 400
394 bool AccessibilityManager::ShouldShowAccessibilityMenu() { 401 bool AccessibilityManager::ShouldShowAccessibilityMenu() {
395 // If any of the loaded profiles has an accessibility feature turned on - or 402 // If any of the loaded profiles has an accessibility feature turned on - or
396 // enforced to always show the menu - we return true to show the menu. 403 // enforced to always show the menu - we return true to show the menu.
397 std::vector<Profile*> profiles = 404 std::vector<Profile*> profiles =
398 g_browser_process->profile_manager()->GetLoadedProfiles(); 405 g_browser_process->profile_manager()->GetLoadedProfiles();
399 for (std::vector<Profile*>::iterator it = profiles.begin(); 406 for (std::vector<Profile*>::iterator it = profiles.begin();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 profile_->GetPrefs()->GetBoolean(prefs::kAccessibilityLargeCursorEnabled); 452 profile_->GetPrefs()->GetBoolean(prefs::kAccessibilityLargeCursorEnabled);
446 453
447 if (large_cursor_enabled_ == enabled) 454 if (large_cursor_enabled_ == enabled)
448 return; 455 return;
449 456
450 large_cursor_enabled_ = enabled; 457 large_cursor_enabled_ = enabled;
451 458
452 AccessibilityStatusEventDetails details( 459 AccessibilityStatusEventDetails details(
453 ACCESSIBILITY_TOGGLE_LARGE_CURSOR, 460 ACCESSIBILITY_TOGGLE_LARGE_CURSOR,
454 enabled, 461 enabled,
455 ash::A11Y_NOTIFICATION_NONE); 462 ui::A11Y_NOTIFICATION_NONE);
456 463
457 NotifyAccessibilityStatusChanged(details); 464 NotifyAccessibilityStatusChanged(details);
458 #if !defined(USE_ATHENA) 465 #if !defined(USE_ATHENA)
459 // crbug.com/408733 (and for all USE_ATHENA in this file) 466 // crbug.com/408733 (and for all USE_ATHENA in this file)
460 467
461 #if defined(USE_ASH) 468 #if defined(USE_ASH)
462 // Large cursor is implemented only in ash. 469 // Large cursor is implemented only in ash.
463 ash::Shell::GetInstance()->cursor_manager()->SetCursorSet( 470 ash::Shell::GetInstance()->cursor_manager()->SetCursorSet(
464 enabled ? ui::CURSOR_SET_LARGE : ui::CURSOR_SET_NORMAL); 471 enabled ? ui::CURSOR_SET_LARGE : ui::CURSOR_SET_NORMAL);
465 #endif 472 #endif
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 return; 511 return;
505 512
506 sticky_keys_enabled_ = enabled; 513 sticky_keys_enabled_ = enabled;
507 #if defined(USE_ASH) && !defined(USE_ATHENA) 514 #if defined(USE_ASH) && !defined(USE_ATHENA)
508 ash::Shell::GetInstance()->sticky_keys_controller()->Enable(enabled); 515 ash::Shell::GetInstance()->sticky_keys_controller()->Enable(enabled);
509 #endif 516 #endif
510 } 517 }
511 518
512 void AccessibilityManager::EnableSpokenFeedback( 519 void AccessibilityManager::EnableSpokenFeedback(
513 bool enabled, 520 bool enabled,
514 ash::AccessibilityNotificationVisibility notify) { 521 ui::AccessibilityNotificationVisibility notify) {
515 if (!profile_) 522 if (!profile_)
516 return; 523 return;
517 #if !defined(USE_ATHENA) 524 #if !defined(USE_ATHENA)
518 ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction( 525 ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction(
519 enabled ? ash::UMA_STATUS_AREA_ENABLE_SPOKEN_FEEDBACK 526 enabled ? ash::UMA_STATUS_AREA_ENABLE_SPOKEN_FEEDBACK
520 : ash::UMA_STATUS_AREA_DISABLE_SPOKEN_FEEDBACK); 527 : ash::UMA_STATUS_AREA_DISABLE_SPOKEN_FEEDBACK);
521 #endif 528 #endif
522 529
523 spoken_feedback_notification_ = notify; 530 spoken_feedback_notification_ = notify;
524 531
525 PrefService* pref_service = profile_->GetPrefs(); 532 PrefService* pref_service = profile_->GetPrefs();
526 pref_service->SetBoolean(prefs::kAccessibilitySpokenFeedbackEnabled, enabled); 533 pref_service->SetBoolean(prefs::kAccessibilitySpokenFeedbackEnabled, enabled);
527 pref_service->CommitPendingWrite(); 534 pref_service->CommitPendingWrite();
528 535
529 spoken_feedback_notification_ = ash::A11Y_NOTIFICATION_NONE; 536 spoken_feedback_notification_ = ui::A11Y_NOTIFICATION_NONE;
530 } 537 }
531 538
532 void AccessibilityManager::UpdateSpokenFeedbackFromPref() { 539 void AccessibilityManager::UpdateSpokenFeedbackFromPref() {
533 if (!profile_) 540 if (!profile_)
534 return; 541 return;
535 542
536 const bool enabled = profile_->GetPrefs()->GetBoolean( 543 const bool enabled = profile_->GetPrefs()->GetBoolean(
537 prefs::kAccessibilitySpokenFeedbackEnabled); 544 prefs::kAccessibilitySpokenFeedbackEnabled);
538 545
539 if (spoken_feedback_enabled_ == enabled) 546 if (spoken_feedback_enabled_ == enabled)
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 Profile* signin_profile = ProfileHelper::GetSigninProfile(); 646 Profile* signin_profile = ProfileHelper::GetSigninProfile();
640 UnloadChromeVoxExtension(signin_profile); 647 UnloadChromeVoxExtension(signin_profile);
641 chrome_vox_loaded_on_lock_screen_ = false; 648 chrome_vox_loaded_on_lock_screen_ = false;
642 } 649 }
643 650
644 bool AccessibilityManager::IsSpokenFeedbackEnabled() { 651 bool AccessibilityManager::IsSpokenFeedbackEnabled() {
645 return spoken_feedback_enabled_; 652 return spoken_feedback_enabled_;
646 } 653 }
647 654
648 void AccessibilityManager::ToggleSpokenFeedback( 655 void AccessibilityManager::ToggleSpokenFeedback(
649 ash::AccessibilityNotificationVisibility notify) { 656 ui::AccessibilityNotificationVisibility notify) {
650 EnableSpokenFeedback(!IsSpokenFeedbackEnabled(), notify); 657 EnableSpokenFeedback(!IsSpokenFeedbackEnabled(), notify);
651 } 658 }
652 659
653 void AccessibilityManager::EnableHighContrast(bool enabled) { 660 void AccessibilityManager::EnableHighContrast(bool enabled) {
654 if (!profile_) 661 if (!profile_)
655 return; 662 return;
656 663
657 PrefService* pref_service = profile_->GetPrefs(); 664 PrefService* pref_service = profile_->GetPrefs();
658 pref_service->SetBoolean(prefs::kAccessibilityHighContrastEnabled, enabled); 665 pref_service->SetBoolean(prefs::kAccessibilityHighContrastEnabled, enabled);
659 pref_service->CommitPendingWrite(); 666 pref_service->CommitPendingWrite();
660 } 667 }
661 668
662 void AccessibilityManager::UpdateHighContrastFromPref() { 669 void AccessibilityManager::UpdateHighContrastFromPref() {
663 if (!profile_) 670 if (!profile_)
664 return; 671 return;
665 672
666 const bool enabled = profile_->GetPrefs()->GetBoolean( 673 const bool enabled = profile_->GetPrefs()->GetBoolean(
667 prefs::kAccessibilityHighContrastEnabled); 674 prefs::kAccessibilityHighContrastEnabled);
668 675
669 if (high_contrast_enabled_ == enabled) 676 if (high_contrast_enabled_ == enabled)
670 return; 677 return;
671 678
672 high_contrast_enabled_ = enabled; 679 high_contrast_enabled_ = enabled;
673 680
674 AccessibilityStatusEventDetails details( 681 AccessibilityStatusEventDetails details(
675 ACCESSIBILITY_TOGGLE_HIGH_CONTRAST_MODE, 682 ACCESSIBILITY_TOGGLE_HIGH_CONTRAST_MODE,
676 enabled, 683 enabled,
677 ash::A11Y_NOTIFICATION_NONE); 684 ui::A11Y_NOTIFICATION_NONE);
678 685
679 NotifyAccessibilityStatusChanged(details); 686 NotifyAccessibilityStatusChanged(details);
680 687
681 #if !defined(USE_ATHENA) 688 #if !defined(USE_ATHENA)
682 689
683 #if defined(USE_ASH) 690 #if defined(USE_ASH)
684 ash::Shell::GetInstance()->high_contrast_controller()->SetEnabled(enabled); 691 ash::Shell::GetInstance()->high_contrast_controller()->SetEnabled(enabled);
685 #endif 692 #endif
686 693
687 #if defined(OS_CHROMEOS) 694 #if defined(OS_CHROMEOS)
688 ash::Shell::GetInstance()->SetCursorCompositingEnabled( 695 ash::Shell::GetInstance()->SetCursorCompositingEnabled(
689 ShouldEnableCursorCompositing()); 696 ShouldEnableCursorCompositing());
690 #endif 697 #endif
691 698
692 #endif 699 #endif
693 } 700 }
694 701
695 void AccessibilityManager::OnLocaleChanged() { 702 void AccessibilityManager::OnLocaleChanged() {
696 if (!profile_) 703 if (!profile_)
697 return; 704 return;
698 705
699 if (!IsSpokenFeedbackEnabled()) 706 if (!IsSpokenFeedbackEnabled())
700 return; 707 return;
701 708
702 // If the system locale changes and spoken feedback is enabled, 709 // If the system locale changes and spoken feedback is enabled,
703 // reload ChromeVox so that it switches its internal translations 710 // reload ChromeVox so that it switches its internal translations
704 // to the new language. 711 // to the new language.
705 EnableSpokenFeedback(false, ash::A11Y_NOTIFICATION_NONE); 712 EnableSpokenFeedback(false, ui::A11Y_NOTIFICATION_NONE);
706 EnableSpokenFeedback(true, ash::A11Y_NOTIFICATION_NONE); 713 EnableSpokenFeedback(true, ui::A11Y_NOTIFICATION_NONE);
707 } 714 }
708 715
709 void AccessibilityManager::PlayEarcon(int sound_key) { 716 void AccessibilityManager::PlayEarcon(int sound_key) {
717 #if !defined(USE_ATHENA)
710 DCHECK(sound_key < chromeos::SOUND_COUNT); 718 DCHECK(sound_key < chromeos::SOUND_COUNT);
711 ash::PlaySystemSoundIfSpokenFeedback(sound_key); 719 ash::PlaySystemSoundIfSpokenFeedback(sound_key);
720 #endif
712 } 721 }
713 722
714 bool AccessibilityManager::IsHighContrastEnabled() { 723 bool AccessibilityManager::IsHighContrastEnabled() {
715 return high_contrast_enabled_; 724 return high_contrast_enabled_;
716 } 725 }
717 726
718 void AccessibilityManager::EnableAutoclick(bool enabled) { 727 void AccessibilityManager::EnableAutoclick(bool enabled) {
719 if (!profile_) 728 if (!profile_)
720 return; 729 return;
721 730
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 const bool enabled = profile_->GetPrefs()->GetBoolean( 798 const bool enabled = profile_->GetPrefs()->GetBoolean(
790 prefs::kAccessibilityVirtualKeyboardEnabled); 799 prefs::kAccessibilityVirtualKeyboardEnabled);
791 800
792 if (virtual_keyboard_enabled_ == enabled) 801 if (virtual_keyboard_enabled_ == enabled)
793 return; 802 return;
794 virtual_keyboard_enabled_ = enabled; 803 virtual_keyboard_enabled_ = enabled;
795 804
796 AccessibilityStatusEventDetails details( 805 AccessibilityStatusEventDetails details(
797 ACCESSIBILITY_TOGGLE_VIRTUAL_KEYBOARD, 806 ACCESSIBILITY_TOGGLE_VIRTUAL_KEYBOARD,
798 enabled, 807 enabled,
799 ash::A11Y_NOTIFICATION_NONE); 808 ui::A11Y_NOTIFICATION_NONE);
800 809
801 NotifyAccessibilityStatusChanged(details); 810 NotifyAccessibilityStatusChanged(details);
802 811
803 #if defined(USE_ASH) && !defined(USE_ATHENA) 812 #if defined(USE_ASH) && !defined(USE_ATHENA)
804 keyboard::SetAccessibilityKeyboardEnabled(enabled); 813 keyboard::SetAccessibilityKeyboardEnabled(enabled);
805 // Note that there are two versions of the on-screen keyboard. A full layout 814 // Note that there are two versions of the on-screen keyboard. A full layout
806 // is provided for accessibility, which includes sticky modifier keys to 815 // is provided for accessibility, which includes sticky modifier keys to
807 // enable typing of hotkeys. A compact version is used in touchview mode 816 // enable typing of hotkeys. A compact version is used in touchview mode
808 // to provide a layout with larger keys to facilitate touch typing. In the 817 // to provide a layout with larger keys to facilitate touch typing. In the
809 // event that the a11y keyboard is being disabled, an on-screen keyboard might 818 // event that the a11y keyboard is being disabled, an on-screen keyboard might
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 UpdateBrailleImeState(); 956 UpdateBrailleImeState();
948 UpdateLargeCursorFromPref(); 957 UpdateLargeCursorFromPref();
949 UpdateStickyKeysFromPref(); 958 UpdateStickyKeysFromPref();
950 UpdateSpokenFeedbackFromPref(); 959 UpdateSpokenFeedbackFromPref();
951 UpdateHighContrastFromPref(); 960 UpdateHighContrastFromPref();
952 UpdateAutoclickFromPref(); 961 UpdateAutoclickFromPref();
953 UpdateAutoclickDelayFromPref(); 962 UpdateAutoclickDelayFromPref();
954 UpdateVirtualKeyboardFromPref(); 963 UpdateVirtualKeyboardFromPref();
955 } 964 }
956 965
966 #if !defined(USE_ATHENA)
957 void AccessibilityManager::ActiveUserChanged(const std::string& user_id) { 967 void AccessibilityManager::ActiveUserChanged(const std::string& user_id) {
958 SetProfile(ProfileManager::GetActiveUserProfile()); 968 SetProfile(ProfileManager::GetActiveUserProfile());
959 } 969 }
970 #endif
960 971
961 void AccessibilityManager::SetProfileForTest(Profile* profile) { 972 void AccessibilityManager::SetProfileForTest(Profile* profile) {
962 SetProfile(profile); 973 SetProfile(profile);
963 } 974 }
964 975
965 void AccessibilityManager::SetBrailleControllerForTest( 976 void AccessibilityManager::SetBrailleControllerForTest(
966 BrailleController* controller) { 977 BrailleController* controller) {
967 g_braille_controller_for_test = controller; 978 g_braille_controller_for_test = controller;
968 } 979 }
969 980
(...skipping 28 matching lines...) Expand all
998 } 1009 }
999 1010
1000 void AccessibilityManager::UpdateChromeOSAccessibilityHistograms() { 1011 void AccessibilityManager::UpdateChromeOSAccessibilityHistograms() {
1001 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosSpokenFeedback", 1012 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosSpokenFeedback",
1002 IsSpokenFeedbackEnabled()); 1013 IsSpokenFeedbackEnabled());
1003 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosHighContrast", 1014 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosHighContrast",
1004 IsHighContrastEnabled()); 1015 IsHighContrastEnabled());
1005 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosVirtualKeyboard", 1016 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosVirtualKeyboard",
1006 IsVirtualKeyboardEnabled()); 1017 IsVirtualKeyboardEnabled());
1007 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosStickyKeys", IsStickyKeysEnabled()); 1018 UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosStickyKeys", IsStickyKeysEnabled());
1019 #if !defined(USE_ATHENA)
1008 if (MagnificationManager::Get()) { 1020 if (MagnificationManager::Get()) {
1009 uint32 type = MagnificationManager::Get()->IsMagnifierEnabled() ? 1021 uint32 type = MagnificationManager::Get()->IsMagnifierEnabled() ?
1010 MagnificationManager::Get()->GetMagnifierType() : 0; 1022 MagnificationManager::Get()->GetMagnifierType() : 0;
1011 // '0' means magnifier is disabled. 1023 // '0' means magnifier is disabled.
1012 UMA_HISTOGRAM_ENUMERATION("Accessibility.CrosScreenMagnifier", 1024 UMA_HISTOGRAM_ENUMERATION("Accessibility.CrosScreenMagnifier",
1013 type, 1025 type,
1014 ash::kMaxMagnifierType + 1); 1026 ui::kMaxMagnifierType + 1);
1015 } 1027 }
1028 #endif
1016 if (profile_) { 1029 if (profile_) {
1017 const PrefService* const prefs = profile_->GetPrefs(); 1030 const PrefService* const prefs = profile_->GetPrefs();
1018 UMA_HISTOGRAM_BOOLEAN( 1031 UMA_HISTOGRAM_BOOLEAN(
1019 "Accessibility.CrosLargeCursor", 1032 "Accessibility.CrosLargeCursor",
1020 prefs->GetBoolean(prefs::kAccessibilityLargeCursorEnabled)); 1033 prefs->GetBoolean(prefs::kAccessibilityLargeCursorEnabled));
1021 UMA_HISTOGRAM_BOOLEAN( 1034 UMA_HISTOGRAM_BOOLEAN(
1022 "Accessibility.CrosAlwaysShowA11yMenu", 1035 "Accessibility.CrosAlwaysShowA11yMenu",
1023 prefs->GetBoolean(prefs::kShouldAlwaysShowAccessibilityMenu)); 1036 prefs->GetBoolean(prefs::kShouldAlwaysShowAccessibilityMenu));
1024 1037
1025 bool autoclick_enabled = 1038 bool autoclick_enabled =
(...skipping 25 matching lines...) Expand all
1051 SetProfile(profile); 1064 SetProfile(profile);
1052 break; 1065 break;
1053 } 1066 }
1054 case chrome::NOTIFICATION_SESSION_STARTED: 1067 case chrome::NOTIFICATION_SESSION_STARTED:
1055 // Update |profile_| when entering a session. 1068 // Update |profile_| when entering a session.
1056 SetProfile(ProfileManager::GetActiveUserProfile()); 1069 SetProfile(ProfileManager::GetActiveUserProfile());
1057 1070
1058 // Ensure ChromeVox makes announcements at the start of new sessions. 1071 // Ensure ChromeVox makes announcements at the start of new sessions.
1059 should_speak_chrome_vox_announcements_on_user_screen_ = true; 1072 should_speak_chrome_vox_announcements_on_user_screen_ = true;
1060 1073
1074 #if !defined(USE_ATHENA)
1061 // Add a session state observer to be able to monitor session changes. 1075 // Add a session state observer to be able to monitor session changes.
1062 if (!session_state_observer_.get() && ash::Shell::HasInstance()) 1076 if (!session_state_observer_.get() && ash::Shell::HasInstance())
1063 session_state_observer_.reset( 1077 session_state_observer_.reset(
1064 new ash::ScopedSessionStateObserver(this)); 1078 new ash::ScopedSessionStateObserver(this));
1079 #endif
1065 break; 1080 break;
1066 case chrome::NOTIFICATION_PROFILE_DESTROYED: { 1081 case chrome::NOTIFICATION_PROFILE_DESTROYED: {
1067 // Update |profile_| when exiting a session or shutting down. 1082 // Update |profile_| when exiting a session or shutting down.
1068 Profile* profile = content::Source<Profile>(source).ptr(); 1083 Profile* profile = content::Source<Profile>(source).ptr();
1069 if (profile_ == profile) 1084 if (profile_ == profile)
1070 SetProfile(NULL); 1085 SetProfile(NULL);
1071 break; 1086 break;
1072 } 1087 }
1073 case chrome::NOTIFICATION_SCREEN_LOCK_STATE_CHANGED: { 1088 case chrome::NOTIFICATION_SCREEN_LOCK_STATE_CHANGED: {
1074 bool is_screen_locked = *content::Details<bool>(details).ptr(); 1089 bool is_screen_locked = *content::Details<bool>(details).ptr();
1075 if (spoken_feedback_enabled_) { 1090 if (spoken_feedback_enabled_) {
1076 if (is_screen_locked) 1091 if (is_screen_locked)
1077 LoadChromeVoxToLockScreen(base::Closure()); 1092 LoadChromeVoxToLockScreen(base::Closure());
1078 // If spoken feedback was enabled, make sure it is also enabled on 1093 // If spoken feedback was enabled, make sure it is also enabled on
1079 // the user screen. 1094 // the user screen.
1080 // The status tray gets verbalized by user screen ChromeVox, so we need 1095 // The status tray gets verbalized by user screen ChromeVox, so we need
1081 // to load it on the user screen even if the screen is locked. 1096 // to load it on the user screen even if the screen is locked.
1082 LoadChromeVoxToUserScreen(base::Closure()); 1097 LoadChromeVoxToUserScreen(base::Closure());
1083 } 1098 }
1084 break; 1099 break;
1085 } 1100 }
1086 } 1101 }
1087 } 1102 }
1088 1103
1089 void AccessibilityManager::OnBrailleDisplayStateChanged( 1104 void AccessibilityManager::OnBrailleDisplayStateChanged(
1090 const DisplayState& display_state) { 1105 const DisplayState& display_state) {
1091 braille_display_connected_ = display_state.available; 1106 braille_display_connected_ = display_state.available;
1092 if (braille_display_connected_) { 1107 if (braille_display_connected_) {
1093 EnableSpokenFeedback(true, ash::A11Y_NOTIFICATION_SHOW); 1108 EnableSpokenFeedback(true, ui::A11Y_NOTIFICATION_SHOW);
1094 } 1109 }
1095 UpdateBrailleImeState(); 1110 UpdateBrailleImeState();
1096 1111
1097 AccessibilityStatusEventDetails details( 1112 AccessibilityStatusEventDetails details(
1098 ACCESSIBILITY_BRAILLE_DISPLAY_CONNECTION_STATE_CHANGED, 1113 ACCESSIBILITY_BRAILLE_DISPLAY_CONNECTION_STATE_CHANGED,
1099 braille_display_connected_, 1114 braille_display_connected_,
1100 ash::A11Y_NOTIFICATION_SHOW); 1115 ui::A11Y_NOTIFICATION_SHOW);
1101 NotifyAccessibilityStatusChanged(details); 1116 NotifyAccessibilityStatusChanged(details);
1102 } 1117 }
1103 1118
1104 void AccessibilityManager::OnBrailleKeyEvent(const KeyEvent& event) { 1119 void AccessibilityManager::OnBrailleKeyEvent(const KeyEvent& event) {
1105 // Ensure the braille IME is active on braille keyboard (dots) input. 1120 // Ensure the braille IME is active on braille keyboard (dots) input.
1106 if ((event.command == 1121 if ((event.command ==
1107 extensions::api::braille_display_private::KEY_COMMAND_DOTS) && 1122 extensions::api::braille_display_private::KEY_COMMAND_DOTS) &&
1108 !braille_ime_current_) { 1123 !braille_ime_current_) {
1109 input_method::InputMethodManager::Get() 1124 input_method::InputMethodManager::Get()
1110 ->GetActiveIMEState() 1125 ->GetActiveIMEState()
1111 ->ChangeInputMethod(extension_misc::kBrailleImeEngineId, 1126 ->ChangeInputMethod(extension_misc::kBrailleImeEngineId,
1112 false /* show_message */); 1127 false /* show_message */);
1113 } 1128 }
1114 } 1129 }
1115 1130
1116 void AccessibilityManager::PostLoadChromeVox(Profile* profile) { 1131 void AccessibilityManager::PostLoadChromeVox(Profile* profile) {
1132 #if !defined(USE_ATHENA)
1117 // Do any setup work needed immediately after ChromeVox actually loads. 1133 // Do any setup work needed immediately after ChromeVox actually loads.
1118 if (system_sounds_enabled_) 1134 if (system_sounds_enabled_)
1119 ash::PlaySystemSoundAlways(SOUND_SPOKEN_FEEDBACK_ENABLED); 1135 ash::PlaySystemSoundAlways(SOUND_SPOKEN_FEEDBACK_ENABLED);
1136 #endif
1120 1137
1121 ExtensionAccessibilityEventRouter::GetInstance()-> 1138 ExtensionAccessibilityEventRouter::GetInstance()->
1122 OnChromeVoxLoadStateChanged(profile_, 1139 OnChromeVoxLoadStateChanged(profile_,
1123 IsSpokenFeedbackEnabled(), 1140 IsSpokenFeedbackEnabled(),
1124 chrome_vox_loaded_on_lock_screen_ || 1141 chrome_vox_loaded_on_lock_screen_ ||
1125 should_speak_chrome_vox_announcements_on_user_screen_); 1142 should_speak_chrome_vox_announcements_on_user_screen_);
1126 1143
1127 should_speak_chrome_vox_announcements_on_user_screen_ = 1144 should_speak_chrome_vox_announcements_on_user_screen_ =
1128 chrome_vox_loaded_on_lock_screen_; 1145 chrome_vox_loaded_on_lock_screen_;
1129 } 1146 }
1130 1147
1131 void AccessibilityManager::PostUnloadChromeVox(Profile* profile) { 1148 void AccessibilityManager::PostUnloadChromeVox(Profile* profile) {
1149 #if !defined(USE_ATHENA)
1132 // Do any teardown work needed immediately after ChromeVox actually unloads. 1150 // Do any teardown work needed immediately after ChromeVox actually unloads.
1133 if (system_sounds_enabled_) 1151 if (system_sounds_enabled_)
1134 ash::PlaySystemSoundAlways(SOUND_SPOKEN_FEEDBACK_DISABLED); 1152 ash::PlaySystemSoundAlways(SOUND_SPOKEN_FEEDBACK_DISABLED);
1153 #endif
1135 // Clear the accessibility focus ring. 1154 // Clear the accessibility focus ring.
1136 AccessibilityFocusRingController::GetInstance()->SetFocusRing( 1155 AccessibilityFocusRingController::GetInstance()->SetFocusRing(
1137 std::vector<gfx::Rect>()); 1156 std::vector<gfx::Rect>());
1138 } 1157 }
1139 1158
1140 } // namespace chromeos 1159 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698