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

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

Issue 2142463002: ash: Remove media dependency from ash. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: oops Created 4 years, 5 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 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
11 #include <utility> 11 #include <utility>
12 12
13 #include "ash/audio/sounds.h"
14 #include "ash/autoclick/autoclick_controller.h" 13 #include "ash/autoclick/autoclick_controller.h"
15 #include "ash/common/session/session_state_delegate.h" 14 #include "ash/common/session/session_state_delegate.h"
16 #include "ash/common/wm_shell.h" 15 #include "ash/common/wm_shell.h"
17 #include "ash/high_contrast/high_contrast_controller.h" 16 #include "ash/high_contrast/high_contrast_controller.h"
18 #include "ash/root_window_controller.h" 17 #include "ash/root_window_controller.h"
19 #include "ash/shelf/shelf.h" 18 #include "ash/shelf/shelf.h"
20 #include "ash/shelf/shelf_layout_manager.h" 19 #include "ash/shelf/shelf_layout_manager.h"
21 #include "ash/shell.h" 20 #include "ash/shell.h"
22 #include "ash/sticky_keys/sticky_keys_controller.h" 21 #include "ash/sticky_keys/sticky_keys_controller.h"
23 #include "base/callback.h" 22 #include "base/callback.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 using content::RenderViewHost; 89 using content::RenderViewHost;
91 using extensions::api::braille_display_private::BrailleController; 90 using extensions::api::braille_display_private::BrailleController;
92 using extensions::api::braille_display_private::DisplayState; 91 using extensions::api::braille_display_private::DisplayState;
93 using extensions::api::braille_display_private::KeyEvent; 92 using extensions::api::braille_display_private::KeyEvent;
94 using extensions::api::braille_display_private::StubBrailleController; 93 using extensions::api::braille_display_private::StubBrailleController;
95 94
96 namespace chromeos { 95 namespace chromeos {
97 96
98 namespace { 97 namespace {
99 98
99 // When this flag is set, system sounds will not be played.
100 const char kAshDisableSystemSounds[] = "ash-disable-system-sounds";
101
102 // When this flag is set, system sounds will be played whether the
103 // ChromeVox is enabled or not.
104 const char kAshEnableSystemSounds[] = "ash-enable-system-sounds";
105
100 static chromeos::AccessibilityManager* g_accessibility_manager = NULL; 106 static chromeos::AccessibilityManager* g_accessibility_manager = NULL;
101 107
102 static BrailleController* g_braille_controller_for_test = NULL; 108 static BrailleController* g_braille_controller_for_test = NULL;
103 109
104 BrailleController* GetBrailleController() { 110 BrailleController* GetBrailleController() {
105 if (g_braille_controller_for_test) 111 if (g_braille_controller_for_test)
106 return g_braille_controller_for_test; 112 return g_braille_controller_for_test;
107 // Don't use the real braille controller for tests to avoid automatically 113 // Don't use the real braille controller for tests to avoid automatically
108 // starting ChromeVox which confuses some tests. 114 // starting ChromeVox which confuses some tests.
109 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 115 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 if (!IsSpokenFeedbackEnabled()) 771 if (!IsSpokenFeedbackEnabled())
766 return; 772 return;
767 773
768 // If the system locale changes and spoken feedback is enabled, 774 // If the system locale changes and spoken feedback is enabled,
769 // reload ChromeVox so that it switches its internal translations 775 // reload ChromeVox so that it switches its internal translations
770 // to the new language. 776 // to the new language.
771 EnableSpokenFeedback(false, ash::A11Y_NOTIFICATION_NONE); 777 EnableSpokenFeedback(false, ash::A11Y_NOTIFICATION_NONE);
772 EnableSpokenFeedback(true, ash::A11Y_NOTIFICATION_NONE); 778 EnableSpokenFeedback(true, ash::A11Y_NOTIFICATION_NONE);
773 } 779 }
774 780
775 void AccessibilityManager::PlayEarcon(int sound_key) { 781 bool AccessibilityManager::PlayEarcon(int sound_key, PlaySoundOption option) {
776 DCHECK(sound_key < chromeos::SOUND_COUNT); 782 DCHECK(sound_key < chromeos::SOUND_COUNT);
777 ash::PlaySystemSoundIfSpokenFeedback(sound_key); 783 base::CommandLine* cl = base::CommandLine::ForCurrentProcess();
784 if (cl->HasSwitch(kAshDisableSystemSounds))
785 return false;
786 if (option == PlaySoundOption::SPOKEN_FEEDBACK_ENABLED &&
787 !IsSpokenFeedbackEnabled() && !cl->HasSwitch(kAshEnableSystemSounds)) {
788 return false;
789 }
790 return media::SoundsManager::Get()->Play(sound_key);
778 } 791 }
779 792
780 void AccessibilityManager::HandleAccessibilityGesture(ui::AXGesture gesture) { 793 void AccessibilityManager::HandleAccessibilityGesture(ui::AXGesture gesture) {
781 extensions::EventRouter* event_router = 794 extensions::EventRouter* event_router =
782 extensions::EventRouter::Get(profile()); 795 extensions::EventRouter::Get(profile());
783 CHECK(event_router); 796 CHECK(event_router);
784 797
785 std::unique_ptr<base::ListValue> event_args(new base::ListValue()); 798 std::unique_ptr<base::ListValue> event_args(new base::ListValue());
786 event_args->AppendString(ui::ToString(gesture)); 799 event_args->AppendString(ui::ToString(gesture));
787 std::unique_ptr<extensions::Event> event(new extensions::Event( 800 std::unique_ptr<extensions::Event> event(new extensions::Event(
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1298 } 1311 }
1299 1312
1300 void AccessibilityManager::EnableSystemSounds(bool system_sounds_enabled) { 1313 void AccessibilityManager::EnableSystemSounds(bool system_sounds_enabled) {
1301 system_sounds_enabled_ = system_sounds_enabled; 1314 system_sounds_enabled_ = system_sounds_enabled;
1302 } 1315 }
1303 1316
1304 base::TimeDelta AccessibilityManager::PlayShutdownSound() { 1317 base::TimeDelta AccessibilityManager::PlayShutdownSound() {
1305 if (!system_sounds_enabled_) 1318 if (!system_sounds_enabled_)
1306 return base::TimeDelta(); 1319 return base::TimeDelta();
1307 system_sounds_enabled_ = false; 1320 system_sounds_enabled_ = false;
1308 if (!ash::PlaySystemSoundIfSpokenFeedback(SOUND_SHUTDOWN)) 1321 if (!PlayEarcon(SOUND_SHUTDOWN, PlaySoundOption::SPOKEN_FEEDBACK_ENABLED))
1309 return base::TimeDelta(); 1322 return base::TimeDelta();
1310 return media::SoundsManager::Get()->GetDuration(SOUND_SHUTDOWN); 1323 return media::SoundsManager::Get()->GetDuration(SOUND_SHUTDOWN);
1311 } 1324 }
1312 1325
1313 void AccessibilityManager::InjectChromeVox(RenderViewHost* render_view_host) { 1326 void AccessibilityManager::InjectChromeVox(RenderViewHost* render_view_host) {
1314 LoadChromeVoxExtension(profile_, render_view_host, base::Closure()); 1327 LoadChromeVoxExtension(profile_, render_view_host, base::Closure());
1315 } 1328 }
1316 1329
1317 std::unique_ptr<AccessibilityStatusSubscription> 1330 std::unique_ptr<AccessibilityStatusSubscription>
1318 AccessibilityManager::RegisterCallback(const AccessibilityStatusCallback& cb) { 1331 AccessibilityManager::RegisterCallback(const AccessibilityStatusCallback& cb) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1460 extensions::ExtensionRegistry::Get(browser_context)); 1473 extensions::ExtensionRegistry::Get(browser_context));
1461 } 1474 }
1462 } 1475 }
1463 1476
1464 void AccessibilityManager::OnShutdown(extensions::ExtensionRegistry* registry) { 1477 void AccessibilityManager::OnShutdown(extensions::ExtensionRegistry* registry) {
1465 extension_registry_observer_.Remove(registry); 1478 extension_registry_observer_.Remove(registry);
1466 } 1479 }
1467 1480
1468 void AccessibilityManager::PostLoadChromeVox(Profile* profile) { 1481 void AccessibilityManager::PostLoadChromeVox(Profile* profile) {
1469 // Do any setup work needed immediately after ChromeVox actually loads. 1482 // Do any setup work needed immediately after ChromeVox actually loads.
1470 ash::PlaySystemSoundAlways(SOUND_SPOKEN_FEEDBACK_ENABLED); 1483 PlayEarcon(SOUND_SPOKEN_FEEDBACK_ENABLED, PlaySoundOption::ALWAYS);
1471 1484
1472 if (chrome_vox_loaded_on_lock_screen_ || 1485 if (chrome_vox_loaded_on_lock_screen_ ||
1473 should_speak_chrome_vox_announcements_on_user_screen_) { 1486 should_speak_chrome_vox_announcements_on_user_screen_) {
1474 extensions::EventRouter* event_router = 1487 extensions::EventRouter* event_router =
1475 extensions::EventRouter::Get(profile); 1488 extensions::EventRouter::Get(profile);
1476 CHECK(event_router); 1489 CHECK(event_router);
1477 1490
1478 std::unique_ptr<base::ListValue> event_args(new base::ListValue()); 1491 std::unique_ptr<base::ListValue> event_args(new base::ListValue());
1479 std::unique_ptr<extensions::Event> event(new extensions::Event( 1492 std::unique_ptr<extensions::Event> event(new extensions::Event(
1480 extensions::events::ACCESSIBILITY_PRIVATE_ON_INTRODUCE_CHROME_VOX, 1493 extensions::events::ACCESSIBILITY_PRIVATE_ON_INTRODUCE_CHROME_VOX,
1481 extensions::api::accessibility_private::OnIntroduceChromeVox:: 1494 extensions::api::accessibility_private::OnIntroduceChromeVox::
1482 kEventName, 1495 kEventName,
1483 std::move(event_args))); 1496 std::move(event_args)));
1484 event_router->DispatchEventWithLazyListener( 1497 event_router->DispatchEventWithLazyListener(
1485 extension_misc::kChromeVoxExtensionId, std::move(event)); 1498 extension_misc::kChromeVoxExtensionId, std::move(event));
1486 } 1499 }
1487 1500
1488 should_speak_chrome_vox_announcements_on_user_screen_ = 1501 should_speak_chrome_vox_announcements_on_user_screen_ =
1489 chrome_vox_loaded_on_lock_screen_; 1502 chrome_vox_loaded_on_lock_screen_;
1490 1503
1491 if (!chromevox_panel_) { 1504 if (!chromevox_panel_) {
1492 chromevox_panel_ = new ChromeVoxPanel(profile_); 1505 chromevox_panel_ = new ChromeVoxPanel(profile_);
1493 chromevox_panel_widget_observer_.reset( 1506 chromevox_panel_widget_observer_.reset(
1494 new ChromeVoxPanelWidgetObserver(chromevox_panel_->GetWidget(), this)); 1507 new ChromeVoxPanelWidgetObserver(chromevox_panel_->GetWidget(), this));
1495 } 1508 }
1496 } 1509 }
1497 1510
1498 void AccessibilityManager::PostUnloadChromeVox(Profile* profile) { 1511 void AccessibilityManager::PostUnloadChromeVox(Profile* profile) {
1499 // Do any teardown work needed immediately after ChromeVox actually unloads. 1512 // Do any teardown work needed immediately after ChromeVox actually unloads.
1500 ash::PlaySystemSoundAlways(SOUND_SPOKEN_FEEDBACK_DISABLED); 1513 PlayEarcon(SOUND_SPOKEN_FEEDBACK_DISABLED, PlaySoundOption::ALWAYS);
1501 // Clear the accessibility focus ring. 1514 // Clear the accessibility focus ring.
1502 AccessibilityFocusRingController::GetInstance()->SetFocusRing( 1515 AccessibilityFocusRingController::GetInstance()->SetFocusRing(
1503 std::vector<gfx::Rect>(), 1516 std::vector<gfx::Rect>(),
1504 AccessibilityFocusRingController::PERSIST_FOCUS_RING); 1517 AccessibilityFocusRingController::PERSIST_FOCUS_RING);
1505 } 1518 }
1506 1519
1507 void AccessibilityManager::OnChromeVoxPanelClosing() { 1520 void AccessibilityManager::OnChromeVoxPanelClosing() {
1508 aura::Window* root_window = chromevox_panel_->GetRootWindow(); 1521 aura::Window* root_window = chromevox_panel_->GetRootWindow();
1509 chromevox_panel_widget_observer_.reset(nullptr); 1522 chromevox_panel_widget_observer_.reset(nullptr);
1510 chromevox_panel_ = nullptr; 1523 chromevox_panel_ = nullptr;
(...skipping 17 matching lines...) Expand all
1528 content::BrowserContext* context) { 1541 content::BrowserContext* context) {
1529 keyboard_listener_extension_id_ = id; 1542 keyboard_listener_extension_id_ = id;
1530 1543
1531 extensions::ExtensionRegistry* registry = 1544 extensions::ExtensionRegistry* registry =
1532 extensions::ExtensionRegistry::Get(context); 1545 extensions::ExtensionRegistry::Get(context);
1533 if (!extension_registry_observer_.IsObserving(registry) && !id.empty()) 1546 if (!extension_registry_observer_.IsObserving(registry) && !id.empty())
1534 extension_registry_observer_.Add(registry); 1547 extension_registry_observer_.Add(registry);
1535 } 1548 }
1536 1549
1537 } // namespace chromeos 1550 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/accessibility/accessibility_manager.h ('k') | chrome/browser/chromeos/login/lock/screen_locker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698