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 5a8807e19c8de134932e5ff96edee6c850504d8f..7beb5ae3860193433252db2dec39125d7d408309 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 |
@@ -44,9 +44,9 @@ base::Value* CreateSettingsValue(base::Value *value, |
// This function decorates the bare list of emails with some more information |
// needed by the UI to properly display the Accounts page. |
base::Value* CreateUsersWhitelist(const base::Value *pref_value) { |
- const base::ListValue *list_value = |
+ const base::ListValue* list_value = |
static_cast<const base::ListValue*>(pref_value); |
- base::ListValue *user_list = new base::ListValue(); |
+ base::ListValue* user_list = new base::ListValue(); |
const User& self = UserManager::Get()->logged_in_user(); |
bool is_owner = UserManager::Get()->current_user_is_owner(); |
@@ -118,8 +118,7 @@ base::Value* CoreChromeOSOptionsHandler::FetchPref( |
return ::CoreOptionsHandler::FetchPref(pref_name); |
} |
- const base::Value* pref_value = |
- CrosSettings::Get()->GetPref(pref_name); |
+ const base::Value* pref_value = CrosSettings::Get()->GetPref(pref_name); |
if (!pref_value) |
return base::Value::CreateNullValue(); |
@@ -127,11 +126,12 @@ base::Value* CoreChromeOSOptionsHandler::FetchPref( |
if (pref_value->GetType() == base::Value::TYPE_LIST) { |
if (pref_name == kAccountsPrefUsers) |
return CreateUsersWhitelist(pref_value); |
+ // Return a copy because the UI will take ownership of this object. |
return pref_value->DeepCopy(); |
} |
// All other prefs are decorated the same way. |
return CreateSettingsValue( |
- pref_value->DeepCopy(), |
+ pref_value->DeepCopy(), // The copy will be owned by the dictionary. |
g_browser_process->browser_policy_connector()->IsEnterpriseManaged(), |
!UserManager::Get()->current_user_is_owner()); |
} |
@@ -204,7 +204,7 @@ void CoreChromeOSOptionsHandler::NotifySettingsChanged( |
const std::string* setting_name) { |
DCHECK(web_ui_); |
DCHECK(CrosSettings::Get()->IsCrosSettings(*setting_name)); |
- const base::Value* value = CrosSettings::Get()->GetPref(*setting_name); |
+ const base::Value* value = FetchPref(*setting_name); |
if (!value) { |
NOTREACHED(); |
return; |