Index: extensions/shell/browser/shell_audio_controller_chromeos.h |
diff --git a/extensions/shell/browser/shell_audio_controller_chromeos.h b/extensions/shell/browser/shell_audio_controller_chromeos.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ea7d446bdc822810e8443e3e416ae1eb87512895 |
--- /dev/null |
+++ b/extensions/shell/browser/shell_audio_controller_chromeos.h |
@@ -0,0 +1,72 @@ |
+// 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. |
+ |
+#ifndef EXTENSIONS_SHELL_BROWSER_SHELL_AUDIO_CONTROLLER_CHROMEOS_H_ |
+#define EXTENSIONS_SHELL_BROWSER_SHELL_AUDIO_CONTROLLER_CHROMEOS_H_ |
+ |
+#include "base/macros.h" |
+#include "chromeos/audio/audio_devices_pref_handler.h" |
+#include "chromeos/audio/cras_audio_handler.h" |
+ |
+namespace chromeos { |
+class AudioDevicesPrefHandler; |
+} |
+ |
+namespace extensions { |
+ |
+// Ensures that the "best" input and output audio devices are always active. |
+class ShellAudioController : public chromeos::CrasAudioHandler::AudioObserver { |
+ public: |
+ // Requests max volume for all devices and doesn't bother saving prefs. |
+ class PrefHandler : public chromeos::AudioDevicesPrefHandler { |
+ public: |
+ PrefHandler(); |
+ |
+ // chromeos::AudioDevicesPrefHandler implementation: |
+ virtual double GetOutputVolumeValue( |
+ const chromeos::AudioDevice* device) OVERRIDE; |
+ virtual double GetInputGainValue( |
+ const chromeos::AudioDevice* device) OVERRIDE; |
+ virtual void SetVolumeGainValue(const chromeos::AudioDevice& device, |
+ double value) OVERRIDE; |
+ virtual bool GetMuteValue(const chromeos::AudioDevice& device) OVERRIDE; |
+ virtual void SetMuteValue(const chromeos::AudioDevice& device, |
+ bool mute_on) OVERRIDE; |
+ virtual bool GetAudioCaptureAllowedValue() OVERRIDE; |
+ virtual bool GetAudioOutputAllowedValue() OVERRIDE; |
+ virtual void AddAudioPrefObserver( |
+ chromeos::AudioPrefObserver* observer) OVERRIDE; |
+ virtual void RemoveAudioPrefObserver( |
+ chromeos::AudioPrefObserver* observer) OVERRIDE; |
+ |
+ protected: |
+ virtual ~PrefHandler(); |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(PrefHandler); |
+ }; |
+ |
+ ShellAudioController(); |
+ virtual ~ShellAudioController(); |
+ |
+ // chromeos::CrasAudioHandler::Observer implementation: |
+ virtual void OnOutputVolumeChanged() OVERRIDE; |
+ virtual void OnOutputMuteChanged() OVERRIDE; |
+ virtual void OnInputGainChanged() OVERRIDE; |
+ virtual void OnInputMuteChanged() OVERRIDE; |
+ virtual void OnAudioNodesChanged() OVERRIDE; |
+ virtual void OnActiveOutputNodeChanged() OVERRIDE; |
+ virtual void OnActiveInputNodeChanged() OVERRIDE; |
+ |
+ private: |
+ // Gets the current device list from CRAS, chooses the best input and output |
+ // device, and activates them if they aren't already active. |
+ void ActivateDevices(); |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ShellAudioController); |
+}; |
+ |
+} // namespace extensions |
+ |
+#endif // EXTENSIONS_SHELL_BROWSER_SHELL_AUDIO_CONTROLLER_CHROMEOS_H_ |