diff options
Diffstat (limited to 'chrome/browser')
7 files changed, 59 insertions, 191 deletions
diff --git a/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.cc b/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.cc index a3aa88d..c8d5b03 100644 --- a/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.cc +++ b/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.cc @@ -4,8 +4,6 @@ #include "chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.h" -#include <algorithm> - #include "base/bind.h" #include "base/bind_helpers.h" #include "base/logging.h" @@ -19,49 +17,64 @@ namespace chromeos { -double AudioDevicesPrefHandlerImpl::GetVolumeGainValue( - uint64 device_id) { - UpdateDevicesVolumePref(); +namespace { + +// Default value for the volume pref, as a percent in the range [0.0, 100.0]. +const double kDefaultVolumePercent = 75.0; - std::string device_id_str = base::Uint64ToString(device_id); - if (!device_volume_settings_->HasKey(device_id_str)) - MigrateDeviceVolumeSettings(device_id_str); +// Values used for muted preference. +const int kPrefMuteOff = 0; +const int kPrefMuteOn = 1; - double volume = kDefaultVolumeGainPercent; - device_volume_settings_->GetDouble(device_id_str, &volume); +} // namespace +double AudioDevicesPrefHandlerImpl::GetOutputVolumeValue() { + if (!CrasAudioHandler::IsInitialized()) + return kDefaultVolumePercent; + + UpdateDevicesVolumePref(); + std::string active_device_id = base::Uint64ToString( + CrasAudioHandler::Get()->GetActiveOutputNode()); + if (!device_volume_settings_->HasKey(active_device_id)) + MigrateDeviceVolumeSettings(active_device_id); + double volume = kDefaultVolumePercent; + device_volume_settings_->GetDouble(active_device_id, &volume); return volume; } -void AudioDevicesPrefHandlerImpl::SetVolumeGainValue( - uint64 device_id, double value) { - value = std::min(std::max(value, 0.0), 100.0); - device_volume_settings_->SetDouble(base::Uint64ToString(device_id), value); - +void AudioDevicesPrefHandlerImpl::SetOutputVolumeValue(double volume_percent) { + std::string active_device_id = base::Uint64ToString( + CrasAudioHandler::Get()->GetActiveOutputNode()); + if (volume_percent > 100.0) + volume_percent = 100.0; + if (volume_percent < 0.0) + volume_percent = 0.0; + device_volume_settings_->SetDouble(active_device_id, volume_percent); SaveDevicesVolumePref(); } -bool AudioDevicesPrefHandlerImpl::GetMuteValue(uint64 device_id) { - UpdateDevicesVolumePref(); - - std::string device_id_str = base::Uint64ToString(device_id); - if (!device_mute_settings_->HasKey(device_id_str)) - MigrateDeviceMuteSettings(device_id_str); +bool AudioDevicesPrefHandlerImpl::GetOutputMuteValue() { + if (!CrasAudioHandler::IsInitialized()) + return false; + UpdateDevicesVolumePref(); + std::string active_device_id = base::Uint64ToString( + CrasAudioHandler::Get()->GetActiveOutputNode()); + if (!device_mute_settings_->HasKey(active_device_id)) + MigrateDeviceMuteSettings(active_device_id); int mute = kPrefMuteOff; - device_mute_settings_->GetInteger(device_id_str, &mute); - + device_mute_settings_->GetInteger(active_device_id, &mute); return (mute == kPrefMuteOn); } -void AudioDevicesPrefHandlerImpl::SetMuteValue(uint64 device_id, - bool mute) { - device_mute_settings_->SetBoolean(base::Uint64ToString(device_id), - mute ? kPrefMuteOn : kPrefMuteOff); +void AudioDevicesPrefHandlerImpl::SetOutputMuteValue(bool mute) { + std::string active_device_id = base::Uint64ToString( + CrasAudioHandler::Get()->GetActiveOutputNode()); + device_mute_settings_->SetBoolean(active_device_id, + mute ? kPrefMuteOn : kPrefMuteOff); SaveDevicesVolumePref(); } - bool AudioDevicesPrefHandlerImpl::GetAudioCaptureAllowedValue() { return local_state_->GetBoolean(prefs::kAudioCaptureAllowed); } @@ -133,7 +146,7 @@ void AudioDevicesPrefHandlerImpl::SaveDevicesVolumePref() { prefs::kAudioDevicesVolumePercent); base::DictionaryValue::Iterator it(*device_volume_settings_); while (!it.IsAtEnd()) { - double volume = kDefaultVolumeGainPercent; + double volume = kDefaultVolumePercent; it.value().GetAsDouble(&volume); dict_update->Set(it.key(), new base::FundamentalValue(volume)); it.Advance(); diff --git a/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.h b/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.h index e596a1f..44dafe5 100644 --- a/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.h +++ b/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.h @@ -22,15 +22,12 @@ class AudioDevicesPrefHandlerImpl : public AudioDevicesPrefHandler { explicit AudioDevicesPrefHandlerImpl(PrefService* local_state); // Overridden from AudioDevicesPrefHandler. - virtual double GetVolumeGainValue(uint64 device_id) OVERRIDE; - virtual void SetVolumeGainValue(uint64 device_id, double value) OVERRIDE; - - virtual bool GetMuteValue(uint64 device_id) OVERRIDE; - virtual void SetMuteValue(uint64 device_id, bool mute_on) OVERRIDE; - + virtual double GetOutputVolumeValue() OVERRIDE; + virtual bool GetOutputMuteValue() OVERRIDE; + virtual void SetOutputVolumeValue(double volume_percent) OVERRIDE; + virtual void SetOutputMuteValue(bool mute_on) OVERRIDE; virtual bool GetAudioCaptureAllowedValue() OVERRIDE; virtual bool GetAudioOutputAllowedValue() OVERRIDE; - virtual void AddAudioPrefObserver(AudioPrefObserver* observer) OVERRIDE; virtual void RemoveAudioPrefObserver(AudioPrefObserver* observer) OVERRIDE; 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(); } |