1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef ASH_TOUCH_EXPLORATION_MANAGER_CHROMEOS_H_
6#define ASH_TOUCH_EXPLORATION_MANAGER_CHROMEOS_H_
7
8#include "ash/ash_export.h"
9#include "ash/system/tray_accessibility.h"
10#include "ui/chromeos/touch_exploration_controller.h"
11
12namespace chromeos {
13class CrasAudioHandler;
14}
15
16namespace ash {
17class RootWindowController;
18
19// Responsible for initializing TouchExplorationController when spoken
20// feedback is on for ChromeOS only. This class implements
21// TouchExplorationControllerDelegate which allows touch gestures to manipulate
22// the system.
23class ASH_EXPORT AshTouchExplorationManager
24    : public ash::AccessibilityObserver,
25      public ui::TouchExplorationControllerDelegate {
26 public:
27  explicit AshTouchExplorationManager(
28      RootWindowController* root_window_controller);
29  virtual ~AshTouchExplorationManager();
30
31  // AccessibilityObserver overrides:
32  virtual void OnAccessibilityModeChanged(
33      AccessibilityNotificationVisibility notify) OVERRIDE;
34
35  // TouchExplorationControllerDelegate overrides:
36  virtual void SetOutputLevel(int volume) OVERRIDE;
37  virtual void SilenceSpokenFeedback() OVERRIDE;
38  virtual void PlayVolumeAdjustEarcon() OVERRIDE;
39  virtual void PlayPassthroughEarcon() OVERRIDE;
40  virtual void PlayExitScreenEarcon() OVERRIDE;
41  virtual void PlayEnterScreenEarcon() OVERRIDE;
42
43 private:
44  void UpdateTouchExplorationState();
45  bool VolumeAdjustSoundEnabled();
46
47  scoped_ptr<ui::TouchExplorationController> touch_exploration_controller_;
48  RootWindowController* root_window_controller_;
49  chromeos::CrasAudioHandler* audio_handler_;
50
51  DISALLOW_COPY_AND_ASSIGN(AshTouchExplorationManager);
52};
53
54}  // namespace ash
55
56#endif  // ASH_TOUCH_EXPLORATION_MANAGER_CHROMEOS_H_
57