Index: chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.cc |
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 2d25fb82a477462b0904e9ea715ddcdc96c4801f..b0449c58506586035cf05f1b886f98075c3111a4 100644 |
--- a/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.cc |
+++ b/chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.cc |
@@ -16,31 +16,37 @@ |
#include "chrome/browser/prefs/scoped_user_pref_update.h" |
#include "chrome/common/pref_names.h" |
#include "chromeos/audio/audio_device.h" |
-#include "chromeos/audio/cras_audio_handler.h" |
namespace { |
+const double kDefaultOutputVolume = 75.0; |
+const double kDefaultHDMIOutputVolume = 100.0; |
+ |
+// Values used for muted preference. |
+const int kPrefMuteOff = 0; |
+const int kPrefMuteOn = 1; |
+ |
std::string GetDeviceIdString(const chromeos::AudioDevice& device) { |
return device.device_name + " : " + |
base::Uint64ToString(device.id & static_cast<uint64>(0xffffffff)); |
} |
-} |
+} // namespace |
namespace chromeos { |
-double AudioDevicesPrefHandlerImpl::GetVolumeGainValue( |
- const AudioDevice& device) { |
- UpdateDevicesVolumePref(); |
- |
- std::string device_id_str = GetDeviceIdString(device); |
- if (!device_volume_settings_->HasKey(device_id_str)) |
- MigrateDeviceVolumeSettings(device_id_str); |
- |
- double volume = kDefaultVolumeGainPercent; |
- device_volume_settings_->GetDouble(device_id_str, &volume); |
+double AudioDevicesPrefHandlerImpl::GetOutputVolumeValue( |
+ const AudioDevice* device) { |
+ if (!device) |
+ return kDefaultOutputVolume; |
+ else |
+ return GetVolumeGainPrefValue(*device); |
+} |
- return volume; |
+double AudioDevicesPrefHandlerImpl::GetInputGainValue( |
+ const AudioDevice* device) { |
+ DCHECK(device); |
+ return GetVolumeGainPrefValue(*device); |
} |
void AudioDevicesPrefHandlerImpl::SetVolumeGainValue( |
@@ -89,6 +95,31 @@ void AudioDevicesPrefHandlerImpl::RemoveAudioPrefObserver( |
observers_.RemoveObserver(observer); |
} |
+double AudioDevicesPrefHandlerImpl::GetVolumeGainPrefValue( |
+ const AudioDevice& device) { |
+ UpdateDevicesVolumePref(); |
+ |
+ std::string device_id_str = GetDeviceIdString(device); |
+ if (!device_volume_settings_->HasKey(device_id_str)) |
+ MigrateDeviceVolumeSettings(device_id_str); |
+ |
+ // TODO(jennyz, rkc): Return a meaningful input gain default value, when |
+ // cras has added support for normalizing input gain range. |
+ double value = device.is_input ? |
+ 0.0 : GetDeviceDefaultOutputVolume(device); |
+ device_volume_settings_->GetDouble(device_id_str, &value); |
+ |
+ return value; |
+} |
+ |
+double AudioDevicesPrefHandlerImpl::GetDeviceDefaultOutputVolume( |
+ const AudioDevice& device) { |
+ if (device.type == AUDIO_TYPE_HDMI) |
+ return kDefaultHDMIOutputVolume; |
+ else |
+ return kDefaultOutputVolume; |
+} |
+ |
AudioDevicesPrefHandlerImpl::AudioDevicesPrefHandlerImpl( |
PrefService* local_state) |
: device_mute_settings_(new base::DictionaryValue()), |
@@ -142,8 +173,9 @@ void AudioDevicesPrefHandlerImpl::SaveDevicesVolumePref() { |
prefs::kAudioDevicesVolumePercent); |
base::DictionaryValue::Iterator it(*device_volume_settings_); |
while (!it.IsAtEnd()) { |
- double volume = kDefaultVolumeGainPercent; |
- it.value().GetAsDouble(&volume); |
+ double volume = kDefaultOutputVolume; |
+ bool success = it.value().GetAsDouble(&volume); |
+ DCHECK(success); |
dict_update->SetDouble(it.key(), volume); |
it.Advance(); |
} |
@@ -182,7 +214,7 @@ void AudioDevicesPrefHandlerImpl::RegisterPrefs(PrefRegistrySimple* registry) { |
// Register the legacy audio prefs for migration. |
registry->RegisterDoublePref(prefs::kAudioVolumePercent, |
- kDefaultVolumeGainPercent); |
+ kDefaultOutputVolume); |
registry->RegisterIntegerPref(prefs::kAudioMute, kPrefMuteOff); |
} |