Index: chrome/browser/extensions/api/settings_private/settings_private_delegate.cc |
diff --git a/chrome/browser/extensions/api/settings_private/settings_private_delegate.cc b/chrome/browser/extensions/api/settings_private/settings_private_delegate.cc |
index c9e5da199553edd21289975753aec650adc12399..9de6e54a2bf5c14471bfcce560d96abd6519c54b 100644 |
--- a/chrome/browser/extensions/api/settings_private/settings_private_delegate.cc |
+++ b/chrome/browser/extensions/api/settings_private/settings_private_delegate.cc |
@@ -4,14 +4,13 @@ |
#include "chrome/browser/extensions/api/settings_private/settings_private_delegate.h" |
-#include "base/json/json_reader.h" |
#include "base/prefs/pref_service.h" |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/chromeos/settings/cros_settings.h" |
#include "chrome/browser/extensions/api/settings_private/prefs_util.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/pref_names.h" |
-#include "components/url_fixer/url_fixer.h" |
#include "extensions/browser/extension_registry.h" |
#include "extensions/common/extension.h" |
#include "url/gurl.h" |
@@ -22,6 +21,7 @@ namespace settings_private = api::settings_private; |
SettingsPrivateDelegate::SettingsPrivateDelegate(Profile* profile) |
: profile_(profile) { |
+ prefs_util_.reset(new PrefsUtil(profile)); |
} |
SettingsPrivateDelegate::~SettingsPrivateDelegate() { |
@@ -29,13 +29,13 @@ SettingsPrivateDelegate::~SettingsPrivateDelegate() { |
scoped_ptr<base::Value> SettingsPrivateDelegate::GetPref( |
const std::string& name) { |
- return prefs_util::GetPref(profile_, name)->ToValue(); |
+ return prefs_util_->GetPref(name)->ToValue(); |
} |
scoped_ptr<base::Value> SettingsPrivateDelegate::GetAllPrefs() { |
scoped_ptr<base::ListValue> prefs(new base::ListValue()); |
- const TypedPrefMap& keys = prefs_util::GetWhitelistedKeys(); |
+ const TypedPrefMap& keys = prefs_util_->GetWhitelistedKeys(); |
for (const auto& it : keys) { |
prefs->Append(GetPref(it.first).release()); |
} |
@@ -45,69 +45,7 @@ scoped_ptr<base::Value> SettingsPrivateDelegate::GetAllPrefs() { |
bool SettingsPrivateDelegate::SetPref(const std::string& pref_name, |
const base::Value* value) { |
- PrefService* pref_service = |
- prefs_util::FindServiceForPref(profile_, pref_name); |
- |
- if (!prefs_util::IsPrefUserModifiable(profile_, pref_name)) |
- return false; |
- |
- const PrefService::Preference* pref = |
- pref_service->FindPreference(pref_name.c_str()); |
- if (!pref) |
- return false; |
- |
- DCHECK_EQ(pref->GetType(), value->GetType()); |
- |
- scoped_ptr<base::Value> temp_value; |
- |
- switch (pref->GetType()) { |
- case base::Value::TYPE_INTEGER: { |
- // In JS all numbers are doubles. |
- double double_value; |
- if (!value->GetAsDouble(&double_value)) |
- return false; |
- |
- int int_value = static_cast<int>(double_value); |
- temp_value.reset(new base::FundamentalValue(int_value)); |
- value = temp_value.get(); |
- break; |
- } |
- case base::Value::TYPE_STRING: { |
- std::string original; |
- if (!value->GetAsString(&original)) |
- return false; |
- |
- if (prefs_util::IsPrefTypeURL(pref_name)) { |
- GURL fixed = url_fixer::FixupURL(original, std::string()); |
- temp_value.reset(new base::StringValue(fixed.spec())); |
- value = temp_value.get(); |
- } |
- break; |
- } |
- case base::Value::TYPE_LIST: { |
- // In case we have a List pref we got a JSON string. |
- std::string json_string; |
- if (!value->GetAsString(&json_string)) |
- return false; |
- |
- temp_value.reset(base::JSONReader::DeprecatedRead(json_string)); |
- value = temp_value.get(); |
- if (!value->IsType(base::Value::TYPE_LIST)) |
- return false; |
- |
- break; |
- } |
- case base::Value::TYPE_BOOLEAN: |
- case base::Value::TYPE_DOUBLE: |
- break; |
- default: |
- return false; |
- } |
- |
- // TODO(orenb): Process setting metrics here (like "ProcessUserMetric" in |
- // CoreOptionsHandler). |
- pref_service->Set(pref_name.c_str(), *value); |
- return true; |
+ return prefs_util_->SetPref(pref_name, value); |
} |
} // namespace extensions |