| Index: chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc | 
| diff --git a/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc | 
| index 6fd29ce1d078eeca4a92970ddc7a802e366a2521..2dfe3d25ba86a112948dfbe4c41fa63e588e1943 100644 | 
| --- a/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc | 
| +++ b/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc | 
| @@ -89,11 +89,10 @@ | 
|  | 
| // This function decorates the bare list of emails with some more information | 
| // needed by the UI to properly display the Accounts page. | 
| -std::unique_ptr<base::Value> CreateUsersWhitelist( | 
| -    const base::Value* pref_value) { | 
| +base::Value* CreateUsersWhitelist(const base::Value *pref_value) { | 
| const base::ListValue* list_value = | 
| static_cast<const base::ListValue*>(pref_value); | 
| -  auto user_list = base::MakeUnique<base::ListValue>(); | 
| +  base::ListValue* user_list = new base::ListValue(); | 
| user_manager::UserManager* user_manager = user_manager::UserManager::Get(); | 
|  | 
| for (base::ListValue::const_iterator i = list_value->begin(); | 
| @@ -172,13 +171,13 @@ | 
| NotifySettingsChanged(it.first); | 
| } | 
|  | 
| -std::unique_ptr<base::Value> CoreChromeOSOptionsHandler::FetchPref( | 
| +base::Value* CoreChromeOSOptionsHandler::FetchPref( | 
| const std::string& pref_name) { | 
| if (proxy_cros_settings_parser::IsProxyPref(pref_name)) { | 
| -    std::unique_ptr<base::Value> value; | 
| +    base::Value* value = nullptr; | 
| proxy_cros_settings_parser::GetProxyPrefValue( | 
| network_guid_, pref_name, GetUiProxyConfigService(), &value); | 
| -    return value; | 
| +    return value ? value : new base::Value(); | 
| } | 
|  | 
| Profile* profile = Profile::FromWebUI(web_ui()); | 
| @@ -187,8 +186,7 @@ | 
| pref_name == proxy_config::prefs::kUseSharedProxies | 
| ? proxy_config::prefs::kProxy | 
| : std::string(); | 
| -    std::unique_ptr<base::Value> value = | 
| -        CreateValueForPref(pref_name, controlling_pref); | 
| +    base::Value* value = CreateValueForPref(pref_name, controlling_pref); | 
| if (!IsSettingShared(pref_name) || !IsSecondaryUser(profile)) | 
| return value; | 
| base::DictionaryValue* dict; | 
| @@ -202,20 +200,20 @@ | 
| dict->SetBoolean("disabled", true); | 
| dict->SetBoolean("value", primary_profile->GetPrefs()->GetBoolean( | 
| pref_name)); | 
| -    return value; | 
| +    return dict; | 
| } | 
|  | 
| const base::Value* pref_value = CrosSettings::Get()->GetPref(pref_name); | 
| if (!pref_value) | 
| -    return base::MakeUnique<base::Value>(); | 
| +    return new base::Value(); | 
|  | 
| // Decorate pref value as CoreOptionsHandler::CreateValueForPref() does. | 
| // TODO(estade): seems that this should replicate CreateValueForPref less. | 
| -  auto dict = base::MakeUnique<base::DictionaryValue>(); | 
| +  base::DictionaryValue* dict = new base::DictionaryValue; | 
| if (pref_name == kAccountsPrefUsers) | 
| dict->Set("value", CreateUsersWhitelist(pref_value)); | 
| else | 
| -    dict->Set("value", base::MakeUnique<base::Value>(*pref_value)); | 
| +    dict->Set("value", pref_value->DeepCopy()); | 
|  | 
| std::string controlled_by; | 
| if (IsSettingPrivileged(pref_name)) { | 
| @@ -283,7 +281,7 @@ | 
| ::options::CoreOptionsHandler::StopObservingPref(path); | 
| } | 
|  | 
| -std::unique_ptr<base::Value> CoreChromeOSOptionsHandler::CreateValueForPref( | 
| +base::Value* CoreChromeOSOptionsHandler::CreateValueForPref( | 
| const std::string& pref_name, | 
| const std::string& controlling_pref_name) { | 
| // The screen lock setting is shared if multiple users are logged in and at | 
| @@ -304,8 +302,8 @@ | 
| // Screen lock is enabled for the session, but not in the user's | 
| // preferences. Show the user's value in the checkbox, but indicate | 
| // that the password requirement is enabled by some other user. | 
| -        auto dict = base::MakeUnique<base::DictionaryValue>(); | 
| -        dict->Set("value", base::MakeUnique<base::Value>(*pref->GetValue())); | 
| +        base::DictionaryValue* dict = new base::DictionaryValue; | 
| +        dict->Set("value", pref->GetValue()->DeepCopy()); | 
| dict->SetString("controlledBy", "shared"); | 
| return dict; | 
| } | 
| @@ -413,13 +411,14 @@ | 
| void CoreChromeOSOptionsHandler::NotifyProxyPrefsChanged() { | 
| GetUiProxyConfigService()->UpdateFromPrefs(network_guid_); | 
| for (size_t i = 0; i < proxy_cros_settings_parser::kProxySettingsCount; ++i) { | 
| -    std::unique_ptr<base::Value> value; | 
| +    base::Value* value = NULL; | 
| proxy_cros_settings_parser::GetProxyPrefValue( | 
| network_guid_, proxy_cros_settings_parser::kProxySettings[i], | 
| GetUiProxyConfigService(), &value); | 
| DCHECK(value); | 
| +    std::unique_ptr<base::Value> ptr(value); | 
| DispatchPrefChangeNotification( | 
| -        proxy_cros_settings_parser::kProxySettings[i], std::move(value)); | 
| +        proxy_cros_settings_parser::kProxySettings[i], std::move(ptr)); | 
| } | 
| } | 
|  | 
|  |