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

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: closure updates 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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 } else if (!IsPrefUserModifiable(name)) { 173 } else if (!IsPrefUserModifiable(name)) {
174 pref_object->policy_source = 174 pref_object->policy_source =
175 api::settings_private::PolicySource::POLICY_SOURCE_USER; 175 api::settings_private::PolicySource::POLICY_SOURCE_USER;
176 pref_object->policy_enforcement = 176 pref_object->policy_enforcement =
177 api::settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED; 177 api::settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED;
178 } 178 }
179 179
180 return pref_object.Pass(); 180 return pref_object.Pass();
181 } 181 }
182 182
183 bool PrefsUtil::SetPref(const std::string& pref_name, 183 PrefsUtil::SetPrefResult PrefsUtil::SetPref(const std::string& pref_name,
184 const base::Value* value) { 184 const base::Value* value) {
185 if (IsCrosSetting(pref_name)) 185 if (IsCrosSetting(pref_name))
186 return SetCrosSettingsPref(pref_name, value); 186 return SetCrosSettingsPref(pref_name, value);
187 187
188 PrefService* pref_service = FindServiceForPref(pref_name); 188 PrefService* pref_service = FindServiceForPref(pref_name);
189 189
190 if (!IsPrefUserModifiable(pref_name)) 190 if (!IsPrefUserModifiable(pref_name))
191 return false; 191 return PREF_NOT_MODIFIABLE;
192 192
193 const PrefService::Preference* pref = 193 const PrefService::Preference* pref =
194 pref_service->FindPreference(pref_name); 194 pref_service->FindPreference(pref_name);
195 if (!pref) 195 if (!pref)
196 return false; 196 return PREF_NOT_FOUND;
197 197
198 DCHECK_EQ(pref->GetType(), value->GetType()); 198 DCHECK_EQ(pref->GetType(), value->GetType());
199 199
200 switch (pref->GetType()) { 200 switch (pref->GetType()) {
201 case base::Value::TYPE_BOOLEAN: 201 case base::Value::TYPE_BOOLEAN:
202 case base::Value::TYPE_DOUBLE: 202 case base::Value::TYPE_DOUBLE:
203 case base::Value::TYPE_LIST: 203 case base::Value::TYPE_LIST:
204 pref_service->Set(pref_name, *value); 204 pref_service->Set(pref_name, *value);
205 break; 205 break;
206 case base::Value::TYPE_INTEGER: { 206 case base::Value::TYPE_INTEGER: {
207 // In JS all numbers are doubles. 207 // In JS all numbers are doubles.
208 double double_value; 208 double double_value;
209 if (!value->GetAsDouble(&double_value)) 209 if (!value->GetAsDouble(&double_value))
210 return false; 210 return PREF_TYPE_MISMATCH;
211 211
212 pref_service->SetInteger(pref_name, static_cast<int>(double_value)); 212 pref_service->SetInteger(pref_name, static_cast<int>(double_value));
213 break; 213 break;
214 } 214 }
215 case base::Value::TYPE_STRING: { 215 case base::Value::TYPE_STRING: {
216 std::string string_value; 216 std::string string_value;
217 if (!value->GetAsString(&string_value)) 217 if (!value->GetAsString(&string_value))
218 return false; 218 return PREF_TYPE_MISMATCH;
219 219
220 if (IsPrefTypeURL(pref_name)) { 220 if (IsPrefTypeURL(pref_name)) {
221 GURL fixed = url_formatter::FixupURL(string_value, std::string()); 221 GURL fixed = url_formatter::FixupURL(string_value, std::string());
222 string_value = fixed.spec(); 222 string_value = fixed.spec();
223 } 223 }
224 224
225 pref_service->SetString(pref_name, string_value); 225 pref_service->SetString(pref_name, string_value);
226 break; 226 break;
227 } 227 }
228 default: 228 default:
229 return false; 229 return PREF_TYPE_UNSUPPORTED;
230 } 230 }
231 231
232 // TODO(orenb): Process setting metrics here and in the CrOS setting method 232 // TODO(orenb): Process setting metrics here and in the CrOS setting method
233 // too (like "ProcessUserMetric" in CoreOptionsHandler). 233 // too (like "ProcessUserMetric" in CoreOptionsHandler).
234 return true; 234 return SUCCESS;
235 } 235 }
236 236
237 bool PrefsUtil::SetCrosSettingsPref(const std::string& pref_name, 237 PrefsUtil::SetPrefResult PrefsUtil::SetCrosSettingsPref(
238 const base::Value* value) { 238 const std::string& pref_name, const base::Value* value) {
239 #if defined(OS_CHROMEOS) 239 #if defined(OS_CHROMEOS)
240 chromeos::OwnerSettingsServiceChromeOS* service = 240 chromeos::OwnerSettingsServiceChromeOS* service =
241 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( 241 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
242 profile_); 242 profile_);
243 243
244 // Returns false if not the owner, for settings requiring owner. 244 // Check if setting requires owner.
245 if (service && service->HandlesSetting(pref_name)) 245 if (service && service->HandlesSetting(pref_name)) {
246 return service->Set(pref_name, *value); 246 if (service->Set(pref_name, *value))
247 return SUCCESS;
248 return PREF_NOT_MODIFIABLE;
249 }
247 250
248 chromeos::CrosSettings::Get()->Set(pref_name, *value); 251 chromeos::CrosSettings::Get()->Set(pref_name, *value);
249 return true; 252 return SUCCEESS;
250 #else 253 #else
251 return false; 254 return PREF_NOT_FOUND;
252 #endif 255 #endif
253 } 256 }
254 257
255 bool PrefsUtil::AppendToListCrosSetting(const std::string& pref_name, 258 bool PrefsUtil::AppendToListCrosSetting(const std::string& pref_name,
256 const base::Value& value) { 259 const base::Value& value) {
257 #if defined(OS_CHROMEOS) 260 #if defined(OS_CHROMEOS)
258 chromeos::OwnerSettingsServiceChromeOS* service = 261 chromeos::OwnerSettingsServiceChromeOS* service =
259 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( 262 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
260 profile_); 263 profile_);
261 264
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 350
348 bool PrefsUtil::IsCrosSetting(const std::string& pref_name) { 351 bool PrefsUtil::IsCrosSetting(const std::string& pref_name) {
349 #if defined(OS_CHROMEOS) 352 #if defined(OS_CHROMEOS)
350 return CrosSettings::Get()->IsCrosSettings(pref_name); 353 return CrosSettings::Get()->IsCrosSettings(pref_name);
351 #else 354 #else
352 return false; 355 return false;
353 #endif 356 #endif
354 } 357 }
355 358
356 } // namespace extensions 359 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698