| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/prefs/chrome_pref_service_factory.h" | 5 #include "chrome/browser/prefs/chrome_pref_service_factory.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 SettingsEnforcementGroup group; | 183 SettingsEnforcementGroup group; |
| 184 } static const kEnforcementLevelMap[] = { | 184 } static const kEnforcementLevelMap[] = { |
| 185 { chrome_prefs::internals::kSettingsEnforcementGroupNoEnforcement, | 185 { chrome_prefs::internals::kSettingsEnforcementGroupNoEnforcement, |
| 186 GROUP_NO_ENFORCEMENT }, | 186 GROUP_NO_ENFORCEMENT }, |
| 187 { chrome_prefs::internals::kSettingsEnforcementGroupEnforceOnload, | 187 { chrome_prefs::internals::kSettingsEnforcementGroupEnforceOnload, |
| 188 GROUP_ENFORCE_ON_LOAD }, | 188 GROUP_ENFORCE_ON_LOAD }, |
| 189 { chrome_prefs::internals::kSettingsEnforcementGroupEnforceAlways, | 189 { chrome_prefs::internals::kSettingsEnforcementGroupEnforceAlways, |
| 190 GROUP_ENFORCE_ALWAYS }, | 190 GROUP_ENFORCE_ALWAYS }, |
| 191 }; | 191 }; |
| 192 | 192 |
| 193 // TODO(gab): Switch the default to GROUP_ENFORCE_ALWAYS. |
| 194 SettingsEnforcementGroup enforcement_group = GROUP_NO_ENFORCEMENT; |
| 195 bool group_determined_from_trial = false; |
| 193 base::FieldTrial* trial = | 196 base::FieldTrial* trial = |
| 194 base::FieldTrialList::Find( | 197 base::FieldTrialList::Find( |
| 195 chrome_prefs::internals::kSettingsEnforcementTrialName); | 198 chrome_prefs::internals::kSettingsEnforcementTrialName); |
| 196 if (trial) { | 199 if (trial) { |
| 197 const std::string& group_name = trial->group_name(); | 200 const std::string& group_name = trial->group_name(); |
| 198 // ARRAYSIZE_UNSAFE must be used since the array is declared locally; it is | 201 // ARRAYSIZE_UNSAFE must be used since the array is declared locally; it is |
| 199 // only unsafe because it could not trigger a compile error on some | 202 // only unsafe because it could not trigger a compile error on some |
| 200 // non-array pointer types; this is fine since kEnforcementLevelMap is | 203 // non-array pointer types; this is fine since kEnforcementLevelMap is |
| 201 // clearly an array. | 204 // clearly an array. |
| 202 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kEnforcementLevelMap); ++i) { | 205 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kEnforcementLevelMap); ++i) { |
| 203 if (kEnforcementLevelMap[i].group_name == group_name) | 206 if (kEnforcementLevelMap[i].group_name == group_name) { |
| 204 return kEnforcementLevelMap[i].group; | 207 enforcement_group = kEnforcementLevelMap[i].group; |
| 208 group_determined_from_trial = true; |
| 209 break; |
| 210 } |
| 205 } | 211 } |
| 206 } | 212 } |
| 207 #if defined(OS_WIN) | 213 UMA_HISTOGRAM_BOOLEAN("Settings.EnforcementGroupDeterminedFromTrial", |
| 208 // Default to GROUP_ENFORCE_ALWAYS in the absence of a valid value for the | 214 group_determined_from_trial); |
| 209 // SettingsEnforcement field trial. | 215 return enforcement_group; |
| 210 // TODO(gab): Switch other platforms over to this mode. | |
| 211 return GROUP_ENFORCE_ALWAYS; | |
| 212 #else | |
| 213 return GROUP_NO_ENFORCEMENT; | |
| 214 #endif | |
| 215 } | 216 } |
| 216 | 217 |
| 217 // Shows notifications which correspond to PersistentPrefStore's reading errors. | 218 // Shows notifications which correspond to PersistentPrefStore's reading errors. |
| 218 void HandleReadError(PersistentPrefStore::PrefReadError error) { | 219 void HandleReadError(PersistentPrefStore::PrefReadError error) { |
| 219 // Sample the histogram also for the successful case in order to get a | 220 // Sample the histogram also for the successful case in order to get a |
| 220 // baseline on the success rate in addition to the error distribution. | 221 // baseline on the success rate in addition to the error distribution. |
| 221 UMA_HISTOGRAM_ENUMERATION("PrefService.ReadError", error, | 222 UMA_HISTOGRAM_ENUMERATION("PrefService.ReadError", error, |
| 222 PersistentPrefStore::PREF_READ_ERROR_MAX_ENUM); | 223 PersistentPrefStore::PREF_READ_ERROR_MAX_ENUM); |
| 223 | 224 |
| 224 if (error != PersistentPrefStore::PREF_READ_ERROR_NONE) { | 225 if (error != PersistentPrefStore::PREF_READ_ERROR_NONE) { |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 UMA_HISTOGRAM_BOOLEAN("Settings.InitializedFromMasterPrefs", success); | 579 UMA_HISTOGRAM_BOOLEAN("Settings.InitializedFromMasterPrefs", success); |
| 579 return success; | 580 return success; |
| 580 } | 581 } |
| 581 | 582 |
| 582 void RegisterPrefs(PrefRegistrySimple* registry) { | 583 void RegisterPrefs(PrefRegistrySimple* registry) { |
| 583 registry->RegisterInt64Pref(prefs::kProfilePreferenceResetTime, 0L); | 584 registry->RegisterInt64Pref(prefs::kProfilePreferenceResetTime, 0L); |
| 584 PrefHashStoreImpl::RegisterPrefs(registry); | 585 PrefHashStoreImpl::RegisterPrefs(registry); |
| 585 } | 586 } |
| 586 | 587 |
| 587 } // namespace chrome_prefs | 588 } // namespace chrome_prefs |
| OLD | NEW |