Chromium Code Reviews| 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_command_line_pref_store.h> | 5 #include <chrome/browser/prefs/chrome_command_line_pref_store.h> |
| 6 #include "chrome/browser/prefs/chrome_pref_service_factory.h" | 6 #include "chrome/browser/prefs/chrome_pref_service_factory.h" |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 90 bool g_disable_domain_check_for_testing = false; | 90 bool g_disable_domain_check_for_testing = false; |
| 91 #endif // OS_WIN | 91 #endif // OS_WIN |
| 92 | 92 |
| 93 // These preferences must be kept in sync with the TrackedPreference enum in | 93 // These preferences must be kept in sync with the TrackedPreference enum in |
| 94 // tools/metrics/histograms/histograms.xml. To add a new preference, append it | 94 // tools/metrics/histograms/histograms.xml. To add a new preference, append it |
| 95 // to the array and add a corresponding value to the histogram enum. Each | 95 // to the array and add a corresponding value to the histogram enum. Each |
| 96 // tracked preference must be given a unique reporting ID. | 96 // tracked preference must be given a unique reporting ID. |
| 97 // See CleanupDeprecatedTrackedPreferences() in pref_hash_filter.cc to remove a | 97 // See CleanupDeprecatedTrackedPreferences() in pref_hash_filter.cc to remove a |
| 98 // deprecated tracked preference. | 98 // deprecated tracked preference. |
| 99 const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = { | 99 const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = { |
| 100 { | 100 {0, prefs::kShowHomeButton, |
| 101 0, prefs::kShowHomeButton, | 101 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
|
gab
2017/03/15 14:16:36
Let's add
using PrefHashFilter::EnforcementLevel
Sam McNally
2017/03/16 00:09:36
Done.
| |
| 102 PrefHashFilter::ENFORCE_ON_LOAD, | 102 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 103 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 103 PrefHashFilter::ValueType::IMPERSONAL}, |
| 104 PrefHashFilter::VALUE_IMPERSONAL | 104 {1, prefs::kHomePageIsNewTabPage, |
| 105 }, | 105 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 106 { | 106 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 107 1, prefs::kHomePageIsNewTabPage, | 107 PrefHashFilter::ValueType::IMPERSONAL}, |
| 108 PrefHashFilter::ENFORCE_ON_LOAD, | 108 {2, prefs::kHomePage, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 109 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 109 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 110 PrefHashFilter::VALUE_IMPERSONAL | 110 PrefHashFilter::ValueType::IMPERSONAL}, |
| 111 }, | 111 {3, prefs::kRestoreOnStartup, |
| 112 { | 112 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 113 2, prefs::kHomePage, | 113 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 114 PrefHashFilter::ENFORCE_ON_LOAD, | 114 PrefHashFilter::ValueType::IMPERSONAL}, |
| 115 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 115 {4, prefs::kURLsToRestoreOnStartup, |
| 116 PrefHashFilter::VALUE_IMPERSONAL | 116 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 117 }, | 117 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 118 { | 118 PrefHashFilter::ValueType::IMPERSONAL}, |
| 119 3, prefs::kRestoreOnStartup, | |
| 120 PrefHashFilter::ENFORCE_ON_LOAD, | |
| 121 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
| 122 PrefHashFilter::VALUE_IMPERSONAL | |
| 123 }, | |
| 124 { | |
| 125 4, prefs::kURLsToRestoreOnStartup, | |
| 126 PrefHashFilter::ENFORCE_ON_LOAD, | |
| 127 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
| 128 PrefHashFilter::VALUE_IMPERSONAL | |
| 129 }, | |
| 130 #if BUILDFLAG(ENABLE_EXTENSIONS) | 119 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 131 { | 120 {5, extensions::pref_names::kExtensions, |
| 132 5, extensions::pref_names::kExtensions, | 121 PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT, |
| 133 PrefHashFilter::NO_ENFORCEMENT, | 122 PrefHashFilter::PrefTrackingStrategy::SPLIT, |
| 134 PrefHashFilter::TRACKING_STRATEGY_SPLIT, | 123 PrefHashFilter::ValueType::IMPERSONAL}, |
| 135 PrefHashFilter::VALUE_IMPERSONAL | |
| 136 }, | |
| 137 #endif | 124 #endif |
| 138 { | 125 {6, prefs::kGoogleServicesLastUsername, |
| 139 6, prefs::kGoogleServicesLastUsername, | 126 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 140 PrefHashFilter::ENFORCE_ON_LOAD, | 127 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 141 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 128 PrefHashFilter::ValueType::PERSONAL}, |
| 142 PrefHashFilter::VALUE_PERSONAL | 129 {7, prefs::kSearchProviderOverrides, |
| 143 }, | 130 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 144 { | 131 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 145 7, prefs::kSearchProviderOverrides, | 132 PrefHashFilter::ValueType::IMPERSONAL}, |
| 146 PrefHashFilter::ENFORCE_ON_LOAD, | |
| 147 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
| 148 PrefHashFilter::VALUE_IMPERSONAL | |
| 149 }, | |
| 150 #if !defined(OS_ANDROID) | 133 #if !defined(OS_ANDROID) |
| 151 { | 134 {11, prefs::kPinnedTabs, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 152 11, prefs::kPinnedTabs, | 135 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 153 PrefHashFilter::ENFORCE_ON_LOAD, | 136 PrefHashFilter::ValueType::IMPERSONAL}, |
| 154 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
| 155 PrefHashFilter::VALUE_IMPERSONAL | |
| 156 }, | |
| 157 #endif | 137 #endif |
| 158 { | 138 {14, DefaultSearchManager::kDefaultSearchProviderDataPrefName, |
| 159 14, DefaultSearchManager::kDefaultSearchProviderDataPrefName, | 139 PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT, |
| 160 PrefHashFilter::NO_ENFORCEMENT, | 140 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 161 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 141 PrefHashFilter::ValueType::IMPERSONAL}, |
| 162 PrefHashFilter::VALUE_IMPERSONAL | 142 {// Protecting kPreferenceResetTime does two things: |
| 163 }, | 143 // 1) It ensures this isn't accidently set by someone stomping the pref |
| 164 { | 144 // file. |
| 165 // Protecting kPreferenceResetTime does two things: | 145 // 2) More importantly, it declares kPreferenceResetTime as a protected |
| 166 // 1) It ensures this isn't accidently set by someone stomping the pref | 146 // pref which is required for it to be visible when queried via the |
| 167 // file. | 147 // SegregatedPrefStore. This is because it's written directly in the |
| 168 // 2) More importantly, it declares kPreferenceResetTime as a protected | 148 // protected JsonPrefStore by that store's PrefHashFilter if there was |
| 169 // pref which is required for it to be visible when queried via the | 149 // a reset in FilterOnLoad and SegregatedPrefStore will not look for it |
| 170 // SegregatedPrefStore. This is because it's written directly in the | 150 // in the protected JsonPrefStore unless it's declared as a protected |
| 171 // protected JsonPrefStore by that store's PrefHashFilter if there was | 151 // preference here. |
| 172 // a reset in FilterOnLoad and SegregatedPrefStore will not look for it | 152 15, user_prefs::kPreferenceResetTime, |
| 173 // in the protected JsonPrefStore unless it's declared as a protected | 153 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 174 // preference here. | 154 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 175 15, user_prefs::kPreferenceResetTime, | 155 PrefHashFilter::ValueType::IMPERSONAL}, |
| 176 PrefHashFilter::ENFORCE_ON_LOAD, | 156 // kSyncRemainingRollbackTries is deprecated and will be removed a few |
| 177 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 157 // releases after M50. |
| 178 PrefHashFilter::VALUE_IMPERSONAL | 158 {18, prefs::kSafeBrowsingIncidentsSent, |
| 179 }, | 159 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 180 // kSyncRemainingRollbackTries is deprecated and will be removed a few | 160 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 181 // releases after M50. | 161 PrefHashFilter::ValueType::IMPERSONAL}, |
| 182 { | |
| 183 18, prefs::kSafeBrowsingIncidentsSent, | |
| 184 PrefHashFilter::ENFORCE_ON_LOAD, | |
| 185 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
| 186 PrefHashFilter::VALUE_IMPERSONAL | |
| 187 }, | |
| 188 #if defined(OS_WIN) | 162 #if defined(OS_WIN) |
| 189 { | 163 {19, prefs::kSwReporterPromptVersion, |
| 190 19, prefs::kSwReporterPromptVersion, | 164 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 191 PrefHashFilter::ENFORCE_ON_LOAD, | 165 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 192 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 166 PrefHashFilter::ValueType::IMPERSONAL}, |
| 193 PrefHashFilter::VALUE_IMPERSONAL | |
| 194 }, | |
| 195 #endif | 167 #endif |
| 196 // This pref is deprecated and will be removed a few releases after M43. | 168 // This pref is deprecated and will be removed a few releases after M43. |
| 197 // kGoogleServicesAccountId replaces it. | 169 // kGoogleServicesAccountId replaces it. |
| 198 { | 170 {21, prefs::kGoogleServicesUsername, |
| 199 21, prefs::kGoogleServicesUsername, | 171 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 200 PrefHashFilter::ENFORCE_ON_LOAD, | 172 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 201 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 173 PrefHashFilter::ValueType::PERSONAL}, |
| 202 PrefHashFilter::VALUE_PERSONAL | |
| 203 }, | |
| 204 #if defined(OS_WIN) | 174 #if defined(OS_WIN) |
| 205 { | 175 {22, prefs::kSwReporterPromptSeed, |
| 206 22, prefs::kSwReporterPromptSeed, | 176 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 207 PrefHashFilter::ENFORCE_ON_LOAD, | 177 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 208 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 178 PrefHashFilter::ValueType::IMPERSONAL}, |
| 209 PrefHashFilter::VALUE_IMPERSONAL | |
| 210 }, | |
| 211 #endif | 179 #endif |
| 212 { | 180 {23, prefs::kGoogleServicesAccountId, |
| 213 23, prefs::kGoogleServicesAccountId, | 181 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 214 PrefHashFilter::ENFORCE_ON_LOAD, | 182 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 215 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 183 PrefHashFilter::ValueType::PERSONAL}, |
| 216 PrefHashFilter::VALUE_PERSONAL | 184 {24, prefs::kGoogleServicesLastAccountId, |
| 217 }, | 185 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 218 { | 186 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 219 24, prefs::kGoogleServicesLastAccountId, | 187 PrefHashFilter::ValueType::PERSONAL}, |
| 220 PrefHashFilter::ENFORCE_ON_LOAD, | |
| 221 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
| 222 PrefHashFilter::VALUE_PERSONAL | |
| 223 }, | |
| 224 #if defined(OS_WIN) | 188 #if defined(OS_WIN) |
| 225 { | 189 {25, prefs::kSettingsResetPromptPromptWave, |
| 226 25, prefs::kSettingsResetPromptPromptWave, | 190 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 227 PrefHashFilter::ENFORCE_ON_LOAD, | 191 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 228 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 192 PrefHashFilter::ValueType::IMPERSONAL}, |
| 229 PrefHashFilter::VALUE_IMPERSONAL | 193 {26, prefs::kSettingsResetPromptLastTriggeredForDefaultSearch, |
| 230 }, | 194 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 231 { | 195 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 232 26, prefs::kSettingsResetPromptLastTriggeredForDefaultSearch, | 196 PrefHashFilter::ValueType::IMPERSONAL}, |
| 233 PrefHashFilter::ENFORCE_ON_LOAD, | 197 {27, prefs::kSettingsResetPromptLastTriggeredForStartupUrls, |
| 234 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 198 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 235 PrefHashFilter::VALUE_IMPERSONAL | 199 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 236 }, | 200 PrefHashFilter::ValueType::IMPERSONAL}, |
| 237 { | 201 {28, prefs::kSettingsResetPromptLastTriggeredForHomepage, |
| 238 27, prefs::kSettingsResetPromptLastTriggeredForStartupUrls, | 202 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
| 239 PrefHashFilter::ENFORCE_ON_LOAD, | 203 PrefHashFilter::PrefTrackingStrategy::ATOMIC, |
| 240 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 204 PrefHashFilter::ValueType::IMPERSONAL}, |
| 241 PrefHashFilter::VALUE_IMPERSONAL | |
| 242 }, | |
| 243 { | |
| 244 28, prefs::kSettingsResetPromptLastTriggeredForHomepage, | |
| 245 PrefHashFilter::ENFORCE_ON_LOAD, | |
| 246 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
| 247 PrefHashFilter::VALUE_IMPERSONAL | |
| 248 }, | |
| 249 #endif // defined(OS_WIN) | 205 #endif // defined(OS_WIN) |
| 250 // See note at top, new items added here also need to be added to | 206 |
| 251 // histograms.xml's TrackedPreference enum. | 207 // See note at top, new items added here also need to be added to |
| 208 // histograms.xml's TrackedPreference enum. | |
| 252 }; | 209 }; |
| 253 | 210 |
| 254 // One more than the last tracked preferences ID above. | 211 // One more than the last tracked preferences ID above. |
| 255 const size_t kTrackedPrefsReportingIDsCount = | 212 const size_t kTrackedPrefsReportingIDsCount = |
| 256 kTrackedPrefs[arraysize(kTrackedPrefs) - 1].reporting_id + 1; | 213 kTrackedPrefs[arraysize(kTrackedPrefs) - 1].reporting_id + 1; |
| 257 | 214 |
| 258 // Each group enforces a superset of the protection provided by the previous | 215 // Each group enforces a superset of the protection provided by the previous |
| 259 // one. | 216 // one. |
| 260 enum SettingsEnforcementGroup { | 217 enum SettingsEnforcementGroup { |
| 261 GROUP_NO_ENFORCEMENT, | 218 GROUP_NO_ENFORCEMENT, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 335 GetTrackingConfiguration() { | 292 GetTrackingConfiguration() { |
| 336 const SettingsEnforcementGroup enforcement_group = | 293 const SettingsEnforcementGroup enforcement_group = |
| 337 GetSettingsEnforcementGroup(); | 294 GetSettingsEnforcementGroup(); |
| 338 | 295 |
| 339 std::vector<PrefHashFilter::TrackedPreferenceMetadata> result; | 296 std::vector<PrefHashFilter::TrackedPreferenceMetadata> result; |
| 340 for (size_t i = 0; i < arraysize(kTrackedPrefs); ++i) { | 297 for (size_t i = 0; i < arraysize(kTrackedPrefs); ++i) { |
| 341 PrefHashFilter::TrackedPreferenceMetadata data = kTrackedPrefs[i]; | 298 PrefHashFilter::TrackedPreferenceMetadata data = kTrackedPrefs[i]; |
| 342 | 299 |
| 343 if (GROUP_NO_ENFORCEMENT == enforcement_group) { | 300 if (GROUP_NO_ENFORCEMENT == enforcement_group) { |
| 344 // Remove enforcement for all tracked preferences. | 301 // Remove enforcement for all tracked preferences. |
| 345 data.enforcement_level = PrefHashFilter::NO_ENFORCEMENT; | 302 data.enforcement_level = PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT; |
| 346 } | 303 } |
| 347 | 304 |
| 348 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_DSE && | 305 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_DSE && |
| 349 data.name == DefaultSearchManager::kDefaultSearchProviderDataPrefName) { | 306 data.name == DefaultSearchManager::kDefaultSearchProviderDataPrefName) { |
| 350 // Specifically enable default search settings enforcement. | 307 // Specifically enable default search settings enforcement. |
| 351 data.enforcement_level = PrefHashFilter::ENFORCE_ON_LOAD; | 308 data.enforcement_level = |
| 309 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD; | |
| 352 } | 310 } |
| 353 | 311 |
| 354 #if BUILDFLAG(ENABLE_EXTENSIONS) | 312 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 355 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_EXTENSIONS_AND_DSE && | 313 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_EXTENSIONS_AND_DSE && |
| 356 data.name == extensions::pref_names::kExtensions) { | 314 data.name == extensions::pref_names::kExtensions) { |
| 357 // Specifically enable extension settings enforcement. | 315 // Specifically enable extension settings enforcement. |
| 358 data.enforcement_level = PrefHashFilter::ENFORCE_ON_LOAD; | 316 data.enforcement_level = |
| 317 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD; | |
| 359 } | 318 } |
| 360 #endif | 319 #endif |
| 361 | 320 |
| 362 result.push_back(data); | 321 result.push_back(data); |
| 363 } | 322 } |
| 364 return result; | 323 return result; |
| 365 } | 324 } |
| 366 | 325 |
| 367 // Shows notifications which correspond to PersistentPrefStore's reading errors. | 326 // Shows notifications which correspond to PersistentPrefStore's reading errors. |
| 368 void HandleReadError(const base::FilePath& pref_filename, | 327 void HandleReadError(const base::FilePath& pref_filename, |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 552 | 511 |
| 553 void ClearResetTime(Profile* profile) { | 512 void ClearResetTime(Profile* profile) { |
| 554 ProfilePrefStoreManager::ClearResetTime(profile->GetPrefs()); | 513 ProfilePrefStoreManager::ClearResetTime(profile->GetPrefs()); |
| 555 } | 514 } |
| 556 | 515 |
| 557 void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { | 516 void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { |
| 558 ProfilePrefStoreManager::RegisterProfilePrefs(registry); | 517 ProfilePrefStoreManager::RegisterProfilePrefs(registry); |
| 559 } | 518 } |
| 560 | 519 |
| 561 } // namespace chrome_prefs | 520 } // namespace chrome_prefs |
| OLD | NEW |