| Index: chrome/browser/chromeos/cros_settings.cc
|
| diff --git a/chrome/browser/chromeos/cros_settings.cc b/chrome/browser/chromeos/cros_settings.cc
|
| index 16f70a2a79bab6d2c0b0017bc8eca5c40493583c..bde3c314b96288302f55f26c8a0c51515974d155 100644
|
| --- a/chrome/browser/chromeos/cros_settings.cc
|
| +++ b/chrome/browser/chromeos/cros_settings.cc
|
| @@ -46,7 +46,7 @@ void CrosSettings::FireObservers(const char* path) {
|
| }
|
| }
|
|
|
| -void CrosSettings::Set(const std::string& path, Value* in_value) {
|
| +void CrosSettings::Set(const std::string& path, const base::Value& in_value) {
|
| DCHECK(CalledOnValidThread());
|
| CrosSettingsProvider* provider;
|
| provider = GetProvider(path);
|
| @@ -57,23 +57,66 @@ void CrosSettings::Set(const std::string& path, Value* in_value) {
|
|
|
| void CrosSettings::SetBoolean(const std::string& path, bool in_value) {
|
| DCHECK(CalledOnValidThread());
|
| - Set(path, Value::CreateBooleanValue(in_value));
|
| + base::FundamentalValue value(in_value);
|
| + Set(path, value);
|
| }
|
|
|
| void CrosSettings::SetInteger(const std::string& path, int in_value) {
|
| DCHECK(CalledOnValidThread());
|
| - Set(path, Value::CreateIntegerValue(in_value));
|
| + base::FundamentalValue value(in_value);
|
| + Set(path, value);
|
| }
|
|
|
| void CrosSettings::SetDouble(const std::string& path, double in_value) {
|
| DCHECK(CalledOnValidThread());
|
| - Set(path, Value::CreateDoubleValue(in_value));
|
| + base::FundamentalValue value(in_value);
|
| + Set(path, value);
|
| }
|
|
|
| void CrosSettings::SetString(const std::string& path,
|
| const std::string& in_value) {
|
| DCHECK(CalledOnValidThread());
|
| - Set(path, Value::CreateStringValue(in_value));
|
| + base::StringValue value(in_value);
|
| + Set(path, value);
|
| +}
|
| +
|
| +void CrosSettings::AppendToList(const std::string& path,
|
| + const base::Value* value) {
|
| + DCHECK(CalledOnValidThread());
|
| + const base::Value* old_value = GetPref(path);
|
| + scoped_ptr<base::Value> new_value(
|
| + old_value ? old_value->DeepCopy() : new base::ListValue());
|
| + static_cast<base::ListValue*>(new_value.get())->Append(value->DeepCopy());
|
| + Set(path, *new_value);
|
| +}
|
| +
|
| +void CrosSettings::RemoveFromList(const std::string& path,
|
| + const base::Value* value) {
|
| + DCHECK(CalledOnValidThread());
|
| + const base::Value* old_value = GetPref(path);
|
| + scoped_ptr<base::Value> new_value(
|
| + old_value ? old_value->DeepCopy() : new base::ListValue());
|
| + static_cast<base::ListValue*>(new_value.get())->Remove(*value, NULL);
|
| + Set(path, *new_value);
|
| +}
|
| +
|
| +bool CrosSettings::FindEmailInList(const std::string& path,
|
| + const std::string& email) const {
|
| + DCHECK(CalledOnValidThread());
|
| + base::StringValue email_value(email);
|
| + const base::ListValue* value =
|
| + static_cast<const base::ListValue*>(GetPref(path));
|
| + if (value) {
|
| + if (value->Find(email_value) != value->end())
|
| + return true;
|
| + std::string::size_type at_pos = email.find('@');
|
| + if (at_pos != std::string::npos) {
|
| + base::StringValue wildcarded_value(
|
| + std::string("*").append(email.substr(at_pos)));
|
| + return value->Find(wildcarded_value) != value->end();
|
| + }
|
| + }
|
| + return false;
|
| }
|
|
|
| bool CrosSettings::AddSettingsProvider(CrosSettingsProvider* provider) {
|
|
|