Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: chrome/browser/extensions/api/settings_private/prefs_util.cc

Issue 1287913005: Refactor prefs.js for MD-Settings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add return after switch for non-clang Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/prefs/pref_service.h" 5 #include "base/prefs/pref_service.h"
6 #include "chrome/browser/browser_process.h" 6 #include "chrome/browser/browser_process.h"
7 #include "chrome/browser/extensions/api/settings_private/prefs_util.h" 7 #include "chrome/browser/extensions/api/settings_private/prefs_util.h"
8 #include "chrome/browser/extensions/chrome_extension_function.h" 8 #include "chrome/browser/extensions/chrome_extension_function.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/common/pref_names.h" 10 #include "chrome/common/pref_names.h"
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 } else if (!IsPrefUserModifiable(name)) { 174 } else if (!IsPrefUserModifiable(name)) {
175 pref_object->policy_source = 175 pref_object->policy_source =
176 api::settings_private::PolicySource::POLICY_SOURCE_USER; 176 api::settings_private::PolicySource::POLICY_SOURCE_USER;
177 pref_object->policy_enforcement = 177 pref_object->policy_enforcement =
178 api::settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED; 178 api::settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED;
179 } 179 }
180 180
181 return pref_object.Pass(); 181 return pref_object.Pass();
182 } 182 }
183 183
184 bool PrefsUtil::SetPref(const std::string& pref_name, 184 PrefsUtil::SetPrefResult PrefsUtil::SetPref(const std::string& pref_name,
185 const base::Value* value) { 185 const base::Value* value) {
186 if (IsCrosSetting(pref_name)) 186 if (IsCrosSetting(pref_name))
187 return SetCrosSettingsPref(pref_name, value); 187 return SetCrosSettingsPref(pref_name, value);
188 188
189 PrefService* pref_service = FindServiceForPref(pref_name); 189 PrefService* pref_service = FindServiceForPref(pref_name);
190 190
191 if (!IsPrefUserModifiable(pref_name)) 191 if (!IsPrefUserModifiable(pref_name))
192 return false; 192 return PREF_NOT_MODIFIABLE;
193 193
194 const PrefService::Preference* pref = 194 const PrefService::Preference* pref =
195 pref_service->FindPreference(pref_name); 195 pref_service->FindPreference(pref_name);
196 if (!pref) 196 if (!pref)
197 return false; 197 return PREF_NOT_FOUND;
198 198
199 DCHECK_EQ(pref->GetType(), value->GetType()); 199 DCHECK_EQ(pref->GetType(), value->GetType());
200 200
201 switch (pref->GetType()) { 201 switch (pref->GetType()) {
202 case base::Value::TYPE_BOOLEAN: 202 case base::Value::TYPE_BOOLEAN:
203 case base::Value::TYPE_DOUBLE: 203 case base::Value::TYPE_DOUBLE:
204 case base::Value::TYPE_LIST: 204 case base::Value::TYPE_LIST:
205 pref_service->Set(pref_name, *value); 205 pref_service->Set(pref_name, *value);
206 break; 206 break;
207 case base::Value::TYPE_INTEGER: { 207 case base::Value::TYPE_INTEGER: {
208 // In JS all numbers are doubles. 208 // In JS all numbers are doubles.
209 double double_value; 209 double double_value;
210 if (!value->GetAsDouble(&double_value)) 210 if (!value->GetAsDouble(&double_value))
211 return false; 211 return PREF_TYPE_MISMATCH;
212 212
213 pref_service->SetInteger(pref_name, static_cast<int>(double_value)); 213 pref_service->SetInteger(pref_name, static_cast<int>(double_value));
214 break; 214 break;
215 } 215 }
216 case base::Value::TYPE_STRING: { 216 case base::Value::TYPE_STRING: {
217 std::string string_value; 217 std::string string_value;
218 if (!value->GetAsString(&string_value)) 218 if (!value->GetAsString(&string_value))
219 return false; 219 return PREF_TYPE_MISMATCH;
220 220
221 if (IsPrefTypeURL(pref_name)) { 221 if (IsPrefTypeURL(pref_name)) {
222 GURL fixed = url_formatter::FixupURL(string_value, std::string()); 222 GURL fixed = url_formatter::FixupURL(string_value, std::string());
223 string_value = fixed.spec(); 223 string_value = fixed.spec();
224 } 224 }
225 225
226 pref_service->SetString(pref_name, string_value); 226 pref_service->SetString(pref_name, string_value);
227 break; 227 break;
228 } 228 }
229 default: 229 default:
230 return false; 230 return PREF_TYPE_UNSUPPORTED;
231 } 231 }
232 232
233 // TODO(orenb): Process setting metrics here and in the CrOS setting method 233 // TODO(orenb): Process setting metrics here and in the CrOS setting method
234 // too (like "ProcessUserMetric" in CoreOptionsHandler). 234 // too (like "ProcessUserMetric" in CoreOptionsHandler).
235 return true; 235 return SUCCESS;
236 } 236 }
237 237
238 bool PrefsUtil::SetCrosSettingsPref(const std::string& pref_name, 238 PrefsUtil::SetPrefResult PrefsUtil::SetCrosSettingsPref(
239 const base::Value* value) { 239 const std::string& pref_name, const base::Value* value) {
240 #if defined(OS_CHROMEOS) 240 #if defined(OS_CHROMEOS)
241 chromeos::OwnerSettingsServiceChromeOS* service = 241 chromeos::OwnerSettingsServiceChromeOS* service =
242 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( 242 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
243 profile_); 243 profile_);
244 244
245 // Returns false if not the owner, for settings requiring owner. 245 // Check if setting requires owner.
246 if (service && service->HandlesSetting(pref_name)) 246 if (service && service->HandlesSetting(pref_name)) {
247 return service->Set(pref_name, *value); 247 if (service->Set(pref_name, *value))
248 return SUCCESS;
249 return PREF_NOT_MODIFIABLE;
250 }
248 251
249 chromeos::CrosSettings::Get()->Set(pref_name, *value); 252 chromeos::CrosSettings::Get()->Set(pref_name, *value);
250 return true; 253 return SUCCESS;
251 #else 254 #else
252 return false; 255 return PREF_NOT_FOUND;
253 #endif 256 #endif
254 } 257 }
255 258
256 bool PrefsUtil::AppendToListCrosSetting(const std::string& pref_name, 259 bool PrefsUtil::AppendToListCrosSetting(const std::string& pref_name,
257 const base::Value& value) { 260 const base::Value& value) {
258 #if defined(OS_CHROMEOS) 261 #if defined(OS_CHROMEOS)
259 chromeos::OwnerSettingsServiceChromeOS* service = 262 chromeos::OwnerSettingsServiceChromeOS* service =
260 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( 263 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
261 profile_); 264 profile_);
262 265
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 351
349 bool PrefsUtil::IsCrosSetting(const std::string& pref_name) { 352 bool PrefsUtil::IsCrosSetting(const std::string& pref_name) {
350 #if defined(OS_CHROMEOS) 353 #if defined(OS_CHROMEOS)
351 return CrosSettings::Get()->IsCrosSettings(pref_name); 354 return CrosSettings::Get()->IsCrosSettings(pref_name);
352 #else 355 #else
353 return false; 356 return false;
354 #endif 357 #endif
355 } 358 }
356 359
357 } // namespace extensions 360 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698