1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/api/audio/audio_service.h"
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace extensions {
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class AudioServiceImpl : public AudioService {
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public:
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  AudioServiceImpl() {}
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual ~AudioServiceImpl() {}
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Called by listeners to this service to add/remove themselves as observers.
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void AddObserver(Observer* observer) OVERRIDE;
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void RemoveObserver(Observer* observer) OVERRIDE;
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Start to query audio device information.
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void StartGetInfo(const GetInfoCallback& callback) OVERRIDE;
20b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  virtual void SetActiveDevices(const DeviceIdList& device_list) OVERRIDE;
21b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  virtual bool SetDeviceProperties(const std::string& device_id,
22b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                   bool muted,
23b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                   int volume,
24b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                   int gain) OVERRIDE;
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void AudioServiceImpl::AddObserver(Observer* observer) {
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // TODO: implement this for platforms other than Chrome OS.
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void AudioServiceImpl::RemoveObserver(Observer* observer) {
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // TODO: implement this for platforms other than Chrome OS.
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)AudioService* AudioService::CreateInstance() {
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return new AudioServiceImpl;
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void AudioServiceImpl::StartGetInfo(const GetInfoCallback& callback) {
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // TODO: implement this for platforms other than Chrome OS.
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (!callback.is_null())
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    callback.Run(OutputInfo(), InputInfo(), false);
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
45b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)void AudioServiceImpl::SetActiveDevices(const DeviceIdList& device_list) {
46b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
47b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
48b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)bool AudioServiceImpl::SetDeviceProperties(const std::string& device_id,
49b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                           bool muted,
50b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                           int volume,
51b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                           int gain) {
52b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  return false;
53b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
54b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace extensions
56