diff options
author | rkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-07 00:04:57 +0000 |
---|---|---|
committer | rkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-07 00:04:57 +0000 |
commit | 8e48da24b7a33f32f74158f631f9820f9834a243 (patch) | |
tree | 4ee862b6e4fa6296eb77c1d26fce6746d54e4617 /chrome/browser/extensions/api/audio | |
parent | 628c56b57bbc8749d695c8093cb44c9477f8a791 (diff) | |
download | chromium_src-8e48da24b7a33f32f74158f631f9820f9834a243.zip chromium_src-8e48da24b7a33f32f74158f631f9820f9834a243.tar.gz chromium_src-8e48da24b7a33f32f74158f631f9820f9834a243.tar.bz2 |
Revert 198556 "Implement the rest of the audio API."
> Implement the rest of the audio API.
> Picking up where https://codereview.chromium.org/13486004/ left off, implemented the setProperties and setActiveDevices calls; also fixed GetNodes to also return the volume of the devices.
>
> R=hshi@chromium.org, jennyz@chromium.org, mpcomplete@chromium.org
> BUG=175798
> TEST=Wrote a test extension to set the volume on the active and inactive devices, to verify they were set correctly. Also wrote code to switch active devices to verify that the devices did switch.
>
> Review URL: https://codereview.chromium.org/14652027
TBR=rkc@chromium.org
Review URL: https://codereview.chromium.org/14655010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198568 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/api/audio')
5 files changed, 13 insertions, 155 deletions
diff --git a/chrome/browser/extensions/api/audio/audio_api.cc b/chrome/browser/extensions/api/audio/audio_api.cc index 0c717b1..aacf14f 100644 --- a/chrome/browser/extensions/api/audio/audio_api.cc +++ b/chrome/browser/extensions/api/audio/audio_api.cc @@ -60,45 +60,18 @@ void AudioGetInfoFunction::OnGetInfoCompleted(const OutputInfo& output_info, if (success) results_ = api::audio::GetInfo::Results::Create(output_info, input_info); else - SetError("Error occurred when querying audio device information."); + SetError("Error occured when querying audio device information."); SendResponse(success); } bool AudioSetActiveDevicesFunction::RunImpl() { - scoped_ptr<api::audio::SetActiveDevices::Params> params( - api::audio::SetActiveDevices::Params::Create(*args_)); - EXTENSION_FUNCTION_VALIDATE(params.get()); - - AudioService* service = - AudioAPI::GetFactoryInstance()->GetForProfile(profile())->GetService(); - DCHECK(service); - - service->SetActiveDevices(params->ids); - return true; + // TODO: implement this. + return false; } bool AudioSetPropertiesFunction::RunImpl() { - scoped_ptr<api::audio::SetProperties::Params> params( - api::audio::SetProperties::Params::Create(*args_)); - EXTENSION_FUNCTION_VALIDATE(params.get()); - - AudioService* service = - AudioAPI::GetFactoryInstance()->GetForProfile(profile())->GetService(); - DCHECK(service); - - int volume_value = params->properties.volume.get() ? - *params->properties.volume : -1; - - int gain_value = params->properties.gain.get() ? - *params->properties.gain : -1; - - if (!service->SetDeviceProperties(params->id, - params->properties.is_muted, - volume_value, - gain_value)) - return false; - else - return true; + // TODO: implement this. + return false; } } // namespace extensions diff --git a/chrome/browser/extensions/api/audio/audio_api.h b/chrome/browser/extensions/api/audio/audio_api.h index ae9398a..c8530f6 100644 --- a/chrome/browser/extensions/api/audio/audio_api.h +++ b/chrome/browser/extensions/api/audio/audio_api.h @@ -54,7 +54,7 @@ class AudioGetInfoFunction : public AsyncExtensionFunction { bool success); }; -class AudioSetActiveDevicesFunction : public SyncExtensionFunction { +class AudioSetActiveDevicesFunction : public AsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("audio.setActiveDevices", AUDIO_SETACTIVEDEVICES); @@ -64,7 +64,7 @@ class AudioSetActiveDevicesFunction : public SyncExtensionFunction { virtual bool RunImpl() OVERRIDE; }; -class AudioSetPropertiesFunction : public SyncExtensionFunction { +class AudioSetPropertiesFunction : public AsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("audio.setProperties", AUDIO_SETPROPERTIES); diff --git a/chrome/browser/extensions/api/audio/audio_service.cc b/chrome/browser/extensions/api/audio/audio_service.cc index e165de2..e5fa3db 100644 --- a/chrome/browser/extensions/api/audio/audio_service.cc +++ b/chrome/browser/extensions/api/audio/audio_service.cc @@ -17,11 +17,6 @@ class AudioServiceImpl : public AudioService { // Start to query audio device information. virtual void StartGetInfo(const GetInfoCallback& callback) OVERRIDE; - virtual void SetActiveDevices(const DeviceIdList& device_list) OVERRIDE; - virtual bool SetDeviceProperties(const std::string& device_id, - bool muted, - int volume, - int gain) OVERRIDE; }; void AudioServiceImpl::AddObserver(Observer* observer) { @@ -42,14 +37,4 @@ void AudioServiceImpl::StartGetInfo(const GetInfoCallback& callback) { callback.Run(OutputInfo(), InputInfo(), false); } -void AudioServiceImpl::SetActiveDevices(const DeviceIdList& device_list) { -} - -bool AudioServiceImpl::SetDeviceProperties(const std::string& device_id, - bool muted, - int volume, - int gain) { - return false; -} - } // namespace extensions diff --git a/chrome/browser/extensions/api/audio/audio_service.h b/chrome/browser/extensions/api/audio/audio_service.h index dd6c59f..9d3883e 100644 --- a/chrome/browser/extensions/api/audio/audio_service.h +++ b/chrome/browser/extensions/api/audio/audio_service.h @@ -13,7 +13,6 @@ namespace extensions { typedef std::vector<linked_ptr<api::audio::OutputDeviceInfo> > OutputInfo; typedef std::vector<linked_ptr<api::audio::InputDeviceInfo> > InputInfo; -typedef std::vector<std::string> DeviceIdList; class AudioService { public: @@ -43,16 +42,6 @@ class AudioService { // The |callback| will be invoked once the query is completed. virtual void StartGetInfo(const GetInfoCallback& callback) = 0; - // Set the devices in the following list as active. This will only pick - // the first input and first active devices to set to active. - virtual void SetActiveDevices(const DeviceIdList& device_list) = 0; - - // Set the muted and volume/gain properties of a device. - virtual bool SetDeviceProperties(const std::string& device_id, - bool muted, - int volume, - int gain) = 0; - protected: AudioService() {} diff --git a/chrome/browser/extensions/api/audio/audio_service_chromeos.cc b/chrome/browser/extensions/api/audio/audio_service_chromeos.cc index e408fa6..40aad49d 100644 --- a/chrome/browser/extensions/api/audio/audio_service_chromeos.cc +++ b/chrome/browser/extensions/api/audio/audio_service_chromeos.cc @@ -6,9 +6,6 @@ #include "base/callback.h" #include "base/memory/weak_ptr.h" -#include "base/strings/string_number_conversions.h" -#include "chromeos/audio/audio_device.h" -#include "chromeos/audio/cras_audio_handler.h" #include "chromeos/dbus/audio_node.h" #include "chromeos/dbus/cras_audio_client.h" #include "chromeos/dbus/dbus_thread_manager.h" @@ -22,22 +19,17 @@ using api::audio::OutputDeviceInfo; using api::audio::InputDeviceInfo; class AudioServiceImpl : public AudioService, - public chromeos::CrasAudioHandler::Observer { + public chromeos::CrasAudioClient::Observer { public: AudioServiceImpl(); virtual ~AudioServiceImpl(); // Called by listeners to this service to add/remove themselves as observers. - virtual void AddObserver(AudioService::Observer* observer) OVERRIDE; - virtual void RemoveObserver(AudioService::Observer* observer) OVERRIDE; + virtual void AddObserver(AudioService::Observer* observer); + virtual void RemoveObserver(AudioService::Observer* observer); // Start to query audio device information. - virtual void StartGetInfo(const GetInfoCallback& callback) OVERRIDE; - virtual void SetActiveDevices(const DeviceIdList& device_list) OVERRIDE; - virtual bool SetDeviceProperties(const std::string& device_id, - bool muted, - int volume, - int gain) OVERRIDE; + virtual void StartGetInfo(const GetInfoCallback& callback); protected: // chromeos::CrasAudioClient::Observer overrides. @@ -57,14 +49,10 @@ class AudioServiceImpl : public AudioService, const chromeos::AudioNodeList& audio_nodes, bool success); - bool FindDevice(uint64 id, chromeos::AudioDevice* device); - uint64 GetIdFromStr(const std::string& id_str); - // List of observers. ObserverList<AudioService::Observer> observer_list_; chromeos::CrasAudioClient* cras_audio_client_; - chromeos::CrasAudioHandler* cras_audio_handler_; // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. @@ -75,7 +63,6 @@ class AudioServiceImpl : public AudioService, AudioServiceImpl::AudioServiceImpl() : cras_audio_client_(NULL), - cras_audio_handler_(NULL), weak_ptr_factory_(this) { if (chromeos::DBusThreadManager::IsInitialized() && chromeos::DBusThreadManager::Get()) { @@ -83,8 +70,6 @@ AudioServiceImpl::AudioServiceImpl() chromeos::DBusThreadManager::Get()->GetCrasAudioClient(); if (cras_audio_client_) cras_audio_client_->AddObserver(this); - if (chromeos::CrasAudioHandler::IsInitialized()) - cras_audio_handler_ = chromeos::CrasAudioHandler::Get(); } } @@ -110,55 +95,6 @@ void AudioServiceImpl::StartGetInfo(const GetInfoCallback& callback) { callback)); } -void AudioServiceImpl::SetActiveDevices(const DeviceIdList& device_list) { - DCHECK(cras_audio_handler_); - if (!cras_audio_handler_) - return; - - bool input_device_set = false; - bool output_device_set = false; - - for (size_t i = 0; i < device_list.size(); ++i) { - chromeos::AudioDevice device; - bool found = FindDevice(GetIdFromStr(device_list[i]), &device); - if (found) { - if (device.is_input && !input_device_set) { - cras_audio_handler_->SetActiveInputNode(device.id); - input_device_set = true; - } else if (!device.is_input && !output_device_set) { - cras_audio_handler_->SetActiveOutputNode(device.id); - output_device_set = true; - } - } - } -} - -bool AudioServiceImpl::SetDeviceProperties(const std::string& device_id, - bool muted, - int volume, - int gain) { - DCHECK(cras_audio_handler_); - if (!cras_audio_handler_) - return false; - - chromeos::AudioDevice device; - bool found = FindDevice(GetIdFromStr(device_id), &device); - if (!found) - return false; - - if (!device.is_input && volume != -1) { - cras_audio_handler_->SetVolumeGainPercentForDevice(GetIdFromStr(device_id), - volume); - return true; - } else if (device.is_input && gain != -1) { - cras_audio_handler_->SetVolumeGainPercentForDevice(GetIdFromStr(device_id), - gain); - return true; - } - - return false; -} - void AudioServiceImpl::OnGetNodes(const GetInfoCallback& callback, const chromeos::AudioNodeList& audio_nodes, bool success) { @@ -169,19 +105,15 @@ void AudioServiceImpl::OnGetNodes(const GetInfoCallback& callback, iter != audio_nodes.end(); ++iter) { if (!iter->is_input) { linked_ptr<OutputDeviceInfo> info(new OutputDeviceInfo()); - info->id = base::Uint64ToString(iter->id); + info->id = iter->id; info->name = iter->name; info->is_active = iter->active; - info->volume = cras_audio_handler_->GetOutputVolumePercentForDevice( - iter->id); output_info.push_back(info); } else { linked_ptr<InputDeviceInfo> info(new InputDeviceInfo()); - info->id = base::Uint64ToString(iter->id); + info->id = iter->id; info->name = iter->name; info->is_active = iter->active; - info->gain = cras_audio_handler_->GetInputGainPercentForDevice( - iter->id); input_info.push_back(info); } } @@ -192,27 +124,6 @@ void AudioServiceImpl::OnGetNodes(const GetInfoCallback& callback, callback.Run(output_info, input_info, success); } -bool AudioServiceImpl::FindDevice(uint64 id, chromeos::AudioDevice* device) { - chromeos::AudioDeviceList devices; - cras_audio_handler_->GetAudioDevices(&devices); - - for (size_t i = 0; i < devices.size(); ++i) { - if (devices[i].id == id) { - *device = devices[i]; - return true; - } - } - return false; -} - -uint64 AudioServiceImpl::GetIdFromStr(const std::string& id_str) { - uint64 device_id; - if (!base::StringToUint64(id_str, &device_id)) - return 0; - else - return device_id; -} - void AudioServiceImpl::OutputVolumeChanged(int volume) { NotifyDeviceChanged(); } |