| Index: ash/ash_touch_exploration_manager_chromeos.cc
|
| diff --git a/ash/ash_touch_exploration_manager_chromeos.cc b/ash/ash_touch_exploration_manager_chromeos.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f5e212b9525c6ec55b9f291c1ad3a52a6d438d42
|
| --- /dev/null
|
| +++ b/ash/ash_touch_exploration_manager_chromeos.cc
|
| @@ -0,0 +1,78 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "ash/ash_touch_exploration_manager_chromeos.h"
|
| +
|
| +#include "ash/accessibility_delegate.h"
|
| +#include "ash/audio/sounds.h"
|
| +#include "ash/root_window_controller.h"
|
| +#include "ash/shell.h"
|
| +#include "ash/system/tray/system_tray_notifier.h"
|
| +#include "base/command_line.h"
|
| +#include "chromeos/audio/chromeos_sounds.h"
|
| +#include "chromeos/audio/cras_audio_handler.h"
|
| +#include "chromeos/chromeos_switches.h"
|
| +#include "ui/chromeos/touch_exploration_controller.h"
|
| +
|
| +namespace ash {
|
| +
|
| +AshTouchExplorationManager::AshTouchExplorationManager(
|
| + RootWindowController* root_window_controller)
|
| + : root_window_controller_(root_window_controller),
|
| + audio_handler_(chromeos::CrasAudioHandler::Get()) {
|
| + Shell::GetInstance()->system_tray_notifier()->AddAccessibilityObserver(this);
|
| + UpdateTouchExplorationState();
|
| +}
|
| +
|
| +AshTouchExplorationManager::~AshTouchExplorationManager() {
|
| + SystemTrayNotifier* system_tray_notifier =
|
| + Shell::GetInstance()->system_tray_notifier();
|
| + if (system_tray_notifier)
|
| + system_tray_notifier->RemoveAccessibilityObserver(this);
|
| +}
|
| +
|
| +void AshTouchExplorationManager::OnAccessibilityModeChanged(
|
| + AccessibilityNotificationVisibility notify) {
|
| + UpdateTouchExplorationState();
|
| +}
|
| +
|
| +void AshTouchExplorationManager::PlayVolumeAdjustSound() {
|
| + if (!VolumeAdjustSoundEnabled())
|
| + return;
|
| + if ((!audio_handler_->IsOutputMuted()) ||
|
| + !(audio_handler_->GetOutputVolumePercent() == 100))
|
| + PlaySystemSoundIfSpokenFeedback(chromeos::SOUND_VOLUME_ADJUST);
|
| +}
|
| +
|
| +void AshTouchExplorationManager::SetOutputLevel(int volume) {
|
| + if (volume > 0) {
|
| + if (audio_handler_->IsOutputMuted()) {
|
| + audio_handler_->SetOutputMute(false);
|
| + }
|
| + }
|
| + audio_handler_->SetOutputVolumePercent(volume);
|
| + // Avoid negative volume.
|
| + if (audio_handler_->IsOutputVolumeBelowDefaultMuteLevel())
|
| + audio_handler_->SetOutputMute(true);
|
| +}
|
| +
|
| +void AshTouchExplorationManager::UpdateTouchExplorationState() {
|
| + AccessibilityDelegate* delegate =
|
| + Shell::GetInstance()->accessibility_delegate();
|
| + bool enabled = delegate->IsSpokenFeedbackEnabled();
|
| +
|
| + if (enabled && !touch_exploration_controller_.get()) {
|
| + touch_exploration_controller_.reset(new ui::TouchExplorationController(
|
| + root_window_controller_->GetRootWindow(), this));
|
| + } else if (!enabled) {
|
| + touch_exploration_controller_.reset();
|
| + }
|
| +}
|
| +
|
| +bool AshTouchExplorationManager::VolumeAdjustSoundEnabled() {
|
| + return !CommandLine::ForCurrentProcess()->HasSwitch(
|
| + chromeos::switches::kDisableVolumeAdjustSound);
|
| +}
|
| +
|
| +} // namespace ash
|
|
|