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

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

Powered by Google App Engine
This is Rietveld 408576698