| Index: chromeos/audio/audio_devices_pref_handler_impl.cc
 | 
| diff --git a/chromeos/audio/audio_devices_pref_handler_impl.cc b/chromeos/audio/audio_devices_pref_handler_impl.cc
 | 
| index 61b2fc5c03f80fdcfd49b8e9b73487d9f935c70b..968fb6ab522305e3f7189942dc744b37ad49cc92 100644
 | 
| --- a/chromeos/audio/audio_devices_pref_handler_impl.cc
 | 
| +++ b/chromeos/audio/audio_devices_pref_handler_impl.cc
 | 
| @@ -85,24 +85,43 @@ void AudioDevicesPrefHandlerImpl::SetMuteValue(const AudioDevice& device,
 | 
|    SaveDevicesMutePref();
 | 
|  }
 | 
|  
 | 
| -AudioDeviceState AudioDevicesPrefHandlerImpl::GetDeviceState(
 | 
| -    const AudioDevice& device) {
 | 
| -  std::string device_id_str = GetDeviceIdString(device);
 | 
| -  if (!device_state_settings_->HasKey(device_id_str)) {
 | 
| -    device_state_settings_->SetInteger(
 | 
| -        device_id_str, static_cast<int>(AUDIO_STATE_NOT_AVAILABLE));
 | 
| -    SaveDevicesStatePref();
 | 
| -  }
 | 
| -  int state = static_cast<int>(AUDIO_STATE_NOT_AVAILABLE);
 | 
| -  device_state_settings_->GetInteger(device_id_str, &state);
 | 
| -  return (AudioDeviceState)state;
 | 
| +void AudioDevicesPrefHandlerImpl::SetDeviceActive(const AudioDevice& device,
 | 
| +                                                  bool active,
 | 
| +                                                  bool activate_by_user) {
 | 
| +  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
 | 
| +  dict->SetBoolean("active", active);
 | 
| +  if (active)
 | 
| +    dict->SetBoolean("activate_by_user", activate_by_user);
 | 
| +
 | 
| +  device_state_settings_->Set(GetDeviceIdString(device), std::move(dict));
 | 
| +  SaveDevicesStatePref();
 | 
|  }
 | 
|  
 | 
| -void AudioDevicesPrefHandlerImpl::SetDeviceState(const AudioDevice& device,
 | 
| -                                                 AudioDeviceState state) {
 | 
| -  device_state_settings_->SetInteger(GetDeviceIdString(device),
 | 
| -                                     static_cast<int>(state));
 | 
| -  SaveDevicesStatePref();
 | 
| +bool AudioDevicesPrefHandlerImpl::GetDeviceActive(const AudioDevice& device,
 | 
| +                                                  bool* active,
 | 
| +                                                  bool* activate_by_user) {
 | 
| +  const std::string device_id_str = GetDeviceIdString(device);
 | 
| +  if (!device_state_settings_->HasKey(device_id_str))
 | 
| +    return false;
 | 
| +
 | 
| +  base::DictionaryValue* dict = NULL;
 | 
| +  if (!device_state_settings_->GetDictionary(device_id_str, &dict)) {
 | 
| +    LOG(ERROR) << "Could not get device state for device:" << device.ToString();
 | 
| +    return false;
 | 
| +  }
 | 
| +  if (!dict->GetBoolean("active", active)) {
 | 
| +    LOG(ERROR) << "Could not get active value for device:" << device.ToString();
 | 
| +    return false;
 | 
| +  }
 | 
| +
 | 
| +  if (*active && !dict->GetBoolean("activate_by_user", activate_by_user)) {
 | 
| +    LOG(ERROR) << "Could not get activate_by_user value for previously "
 | 
| +                  "active device:"
 | 
| +               << device.ToString();
 | 
| +    return false;
 | 
| +  }
 | 
| +
 | 
| +  return true;
 | 
|  }
 | 
|  
 | 
|  bool AudioDevicesPrefHandlerImpl::GetAudioOutputAllowedValue() {
 | 
| 
 |