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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 #if defined(OS_WIN) | 74 #if defined(OS_WIN) |
75 #include "base/win/win_util.h" | 75 #include "base/win/win_util.h" |
76 #if BUILDFLAG(ENABLE_RLZ) | 76 #if BUILDFLAG(ENABLE_RLZ) |
77 #include "rlz/lib/machine_id.h" | 77 #include "rlz/lib/machine_id.h" |
78 #endif // BUILDFLAG(ENABLE_RLZ) | 78 #endif // BUILDFLAG(ENABLE_RLZ) |
79 #endif // defined(OS_WIN) | 79 #endif // defined(OS_WIN) |
80 | 80 |
81 using content::BrowserContext; | 81 using content::BrowserContext; |
82 using content::BrowserThread; | 82 using content::BrowserThread; |
83 | 83 |
| 84 using EnforcementLevel = PrefHashFilter::EnforcementLevel; |
| 85 using PrefTrackingStrategy = PrefHashFilter::PrefTrackingStrategy; |
| 86 using ValueType = PrefHashFilter::ValueType; |
| 87 |
84 namespace { | 88 namespace { |
85 | 89 |
86 #if defined(OS_WIN) | 90 #if defined(OS_WIN) |
87 // Whether we are in testing mode; can be enabled via | 91 // Whether we are in testing mode; can be enabled via |
88 // DisableDomainCheckForTesting(). Forces startup checks to ignore the presence | 92 // DisableDomainCheckForTesting(). Forces startup checks to ignore the presence |
89 // of a domain when determining the active SettingsEnforcement group. | 93 // of a domain when determining the active SettingsEnforcement group. |
90 bool g_disable_domain_check_for_testing = false; | 94 bool g_disable_domain_check_for_testing = false; |
91 #endif // OS_WIN | 95 #endif // OS_WIN |
92 | 96 |
93 // These preferences must be kept in sync with the TrackedPreference enum in | 97 // 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 | 98 // 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 | 99 // to the array and add a corresponding value to the histogram enum. Each |
96 // tracked preference must be given a unique reporting ID. | 100 // tracked preference must be given a unique reporting ID. |
97 // See CleanupDeprecatedTrackedPreferences() in pref_hash_filter.cc to remove a | 101 // See CleanupDeprecatedTrackedPreferences() in pref_hash_filter.cc to remove a |
98 // deprecated tracked preference. | 102 // deprecated tracked preference. |
99 const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = { | 103 const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = { |
100 { | 104 {0, prefs::kShowHomeButton, EnforcementLevel::ENFORCE_ON_LOAD, |
101 0, prefs::kShowHomeButton, | 105 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
102 PrefHashFilter::ENFORCE_ON_LOAD, | 106 {1, prefs::kHomePageIsNewTabPage, EnforcementLevel::ENFORCE_ON_LOAD, |
103 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 107 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
104 PrefHashFilter::VALUE_IMPERSONAL | 108 {2, prefs::kHomePage, EnforcementLevel::ENFORCE_ON_LOAD, |
105 }, | 109 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
106 { | 110 {3, prefs::kRestoreOnStartup, EnforcementLevel::ENFORCE_ON_LOAD, |
107 1, prefs::kHomePageIsNewTabPage, | 111 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
108 PrefHashFilter::ENFORCE_ON_LOAD, | 112 {4, prefs::kURLsToRestoreOnStartup, EnforcementLevel::ENFORCE_ON_LOAD, |
109 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 113 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
110 PrefHashFilter::VALUE_IMPERSONAL | |
111 }, | |
112 { | |
113 2, prefs::kHomePage, | |
114 PrefHashFilter::ENFORCE_ON_LOAD, | |
115 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
116 PrefHashFilter::VALUE_IMPERSONAL | |
117 }, | |
118 { | |
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) | 114 #if BUILDFLAG(ENABLE_EXTENSIONS) |
131 { | 115 {5, extensions::pref_names::kExtensions, EnforcementLevel::NO_ENFORCEMENT, |
132 5, extensions::pref_names::kExtensions, | 116 PrefTrackingStrategy::SPLIT, ValueType::IMPERSONAL}, |
133 PrefHashFilter::NO_ENFORCEMENT, | |
134 PrefHashFilter::TRACKING_STRATEGY_SPLIT, | |
135 PrefHashFilter::VALUE_IMPERSONAL | |
136 }, | |
137 #endif | 117 #endif |
138 { | 118 {6, prefs::kGoogleServicesLastUsername, EnforcementLevel::ENFORCE_ON_LOAD, |
139 6, prefs::kGoogleServicesLastUsername, | 119 PrefTrackingStrategy::ATOMIC, ValueType::PERSONAL}, |
140 PrefHashFilter::ENFORCE_ON_LOAD, | 120 {7, prefs::kSearchProviderOverrides, EnforcementLevel::ENFORCE_ON_LOAD, |
141 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 121 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
142 PrefHashFilter::VALUE_PERSONAL | |
143 }, | |
144 { | |
145 7, prefs::kSearchProviderOverrides, | |
146 PrefHashFilter::ENFORCE_ON_LOAD, | |
147 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
148 PrefHashFilter::VALUE_IMPERSONAL | |
149 }, | |
150 #if !defined(OS_ANDROID) | 122 #if !defined(OS_ANDROID) |
151 { | 123 {11, prefs::kPinnedTabs, EnforcementLevel::ENFORCE_ON_LOAD, |
152 11, prefs::kPinnedTabs, | 124 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
153 PrefHashFilter::ENFORCE_ON_LOAD, | |
154 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
155 PrefHashFilter::VALUE_IMPERSONAL | |
156 }, | |
157 #endif | 125 #endif |
158 { | 126 {14, DefaultSearchManager::kDefaultSearchProviderDataPrefName, |
159 14, DefaultSearchManager::kDefaultSearchProviderDataPrefName, | 127 EnforcementLevel::NO_ENFORCEMENT, PrefTrackingStrategy::ATOMIC, |
160 PrefHashFilter::NO_ENFORCEMENT, | 128 ValueType::IMPERSONAL}, |
161 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 129 {// Protecting kPreferenceResetTime does two things: |
162 PrefHashFilter::VALUE_IMPERSONAL | 130 // 1) It ensures this isn't accidently set by someone stomping the pref |
163 }, | 131 // file. |
164 { | 132 // 2) More importantly, it declares kPreferenceResetTime as a protected |
165 // Protecting kPreferenceResetTime does two things: | 133 // pref which is required for it to be visible when queried via the |
166 // 1) It ensures this isn't accidently set by someone stomping the pref | 134 // SegregatedPrefStore. This is because it's written directly in the |
167 // file. | 135 // protected JsonPrefStore by that store's PrefHashFilter if there was |
168 // 2) More importantly, it declares kPreferenceResetTime as a protected | 136 // a reset in FilterOnLoad and SegregatedPrefStore will not look for it |
169 // pref which is required for it to be visible when queried via the | 137 // in the protected JsonPrefStore unless it's declared as a protected |
170 // SegregatedPrefStore. This is because it's written directly in the | 138 // preference here. |
171 // protected JsonPrefStore by that store's PrefHashFilter if there was | 139 15, user_prefs::kPreferenceResetTime, EnforcementLevel::ENFORCE_ON_LOAD, |
172 // a reset in FilterOnLoad and SegregatedPrefStore will not look for it | 140 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
173 // in the protected JsonPrefStore unless it's declared as a protected | 141 // kSyncRemainingRollbackTries is deprecated and will be removed a few |
174 // preference here. | 142 // releases after M50. |
175 15, user_prefs::kPreferenceResetTime, | 143 {18, prefs::kSafeBrowsingIncidentsSent, EnforcementLevel::ENFORCE_ON_LOAD, |
176 PrefHashFilter::ENFORCE_ON_LOAD, | 144 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
177 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
178 PrefHashFilter::VALUE_IMPERSONAL | |
179 }, | |
180 // kSyncRemainingRollbackTries is deprecated and will be removed a few | |
181 // releases after M50. | |
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) | 145 #if defined(OS_WIN) |
189 { | 146 {19, prefs::kSwReporterPromptVersion, EnforcementLevel::ENFORCE_ON_LOAD, |
190 19, prefs::kSwReporterPromptVersion, | 147 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
191 PrefHashFilter::ENFORCE_ON_LOAD, | |
192 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
193 PrefHashFilter::VALUE_IMPERSONAL | |
194 }, | |
195 #endif | 148 #endif |
196 // This pref is deprecated and will be removed a few releases after M43. | 149 // This pref is deprecated and will be removed a few releases after M43. |
197 // kGoogleServicesAccountId replaces it. | 150 // kGoogleServicesAccountId replaces it. |
198 { | 151 {21, prefs::kGoogleServicesUsername, EnforcementLevel::ENFORCE_ON_LOAD, |
199 21, prefs::kGoogleServicesUsername, | 152 PrefTrackingStrategy::ATOMIC, ValueType::PERSONAL}, |
200 PrefHashFilter::ENFORCE_ON_LOAD, | |
201 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
202 PrefHashFilter::VALUE_PERSONAL | |
203 }, | |
204 #if defined(OS_WIN) | 153 #if defined(OS_WIN) |
205 { | 154 {22, prefs::kSwReporterPromptSeed, EnforcementLevel::ENFORCE_ON_LOAD, |
206 22, prefs::kSwReporterPromptSeed, | 155 PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, |
207 PrefHashFilter::ENFORCE_ON_LOAD, | |
208 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
209 PrefHashFilter::VALUE_IMPERSONAL | |
210 }, | |
211 #endif | 156 #endif |
212 { | 157 {23, prefs::kGoogleServicesAccountId, EnforcementLevel::ENFORCE_ON_LOAD, |
213 23, prefs::kGoogleServicesAccountId, | 158 PrefTrackingStrategy::ATOMIC, ValueType::PERSONAL}, |
214 PrefHashFilter::ENFORCE_ON_LOAD, | 159 {24, prefs::kGoogleServicesLastAccountId, EnforcementLevel::ENFORCE_ON_LOAD, |
215 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 160 PrefTrackingStrategy::ATOMIC, ValueType::PERSONAL}, |
216 PrefHashFilter::VALUE_PERSONAL | |
217 }, | |
218 { | |
219 24, prefs::kGoogleServicesLastAccountId, | |
220 PrefHashFilter::ENFORCE_ON_LOAD, | |
221 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
222 PrefHashFilter::VALUE_PERSONAL | |
223 }, | |
224 #if defined(OS_WIN) | 161 #if defined(OS_WIN) |
225 { | 162 {25, prefs::kSettingsResetPromptPromptWave, |
226 25, prefs::kSettingsResetPromptPromptWave, | 163 EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::ATOMIC, |
227 PrefHashFilter::ENFORCE_ON_LOAD, | 164 ValueType::IMPERSONAL}, |
228 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 165 {26, prefs::kSettingsResetPromptLastTriggeredForDefaultSearch, |
229 PrefHashFilter::VALUE_IMPERSONAL | 166 EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::ATOMIC, |
230 }, | 167 ValueType::IMPERSONAL}, |
231 { | 168 {27, prefs::kSettingsResetPromptLastTriggeredForStartupUrls, |
232 26, prefs::kSettingsResetPromptLastTriggeredForDefaultSearch, | 169 EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::ATOMIC, |
233 PrefHashFilter::ENFORCE_ON_LOAD, | 170 ValueType::IMPERSONAL}, |
234 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 171 {28, prefs::kSettingsResetPromptLastTriggeredForHomepage, |
235 PrefHashFilter::VALUE_IMPERSONAL | 172 EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::ATOMIC, |
236 }, | 173 ValueType::IMPERSONAL}, |
237 { | |
238 27, prefs::kSettingsResetPromptLastTriggeredForStartupUrls, | |
239 PrefHashFilter::ENFORCE_ON_LOAD, | |
240 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | |
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) | 174 #endif // defined(OS_WIN) |
250 // See note at top, new items added here also need to be added to | 175 |
251 // histograms.xml's TrackedPreference enum. | 176 // See note at top, new items added here also need to be added to |
| 177 // histograms.xml's TrackedPreference enum. |
252 }; | 178 }; |
253 | 179 |
254 // One more than the last tracked preferences ID above. | 180 // One more than the last tracked preferences ID above. |
255 const size_t kTrackedPrefsReportingIDsCount = | 181 const size_t kTrackedPrefsReportingIDsCount = |
256 kTrackedPrefs[arraysize(kTrackedPrefs) - 1].reporting_id + 1; | 182 kTrackedPrefs[arraysize(kTrackedPrefs) - 1].reporting_id + 1; |
257 | 183 |
258 // Each group enforces a superset of the protection provided by the previous | 184 // Each group enforces a superset of the protection provided by the previous |
259 // one. | 185 // one. |
260 enum SettingsEnforcementGroup { | 186 enum SettingsEnforcementGroup { |
261 GROUP_NO_ENFORCEMENT, | 187 GROUP_NO_ENFORCEMENT, |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 GetTrackingConfiguration() { | 261 GetTrackingConfiguration() { |
336 const SettingsEnforcementGroup enforcement_group = | 262 const SettingsEnforcementGroup enforcement_group = |
337 GetSettingsEnforcementGroup(); | 263 GetSettingsEnforcementGroup(); |
338 | 264 |
339 std::vector<PrefHashFilter::TrackedPreferenceMetadata> result; | 265 std::vector<PrefHashFilter::TrackedPreferenceMetadata> result; |
340 for (size_t i = 0; i < arraysize(kTrackedPrefs); ++i) { | 266 for (size_t i = 0; i < arraysize(kTrackedPrefs); ++i) { |
341 PrefHashFilter::TrackedPreferenceMetadata data = kTrackedPrefs[i]; | 267 PrefHashFilter::TrackedPreferenceMetadata data = kTrackedPrefs[i]; |
342 | 268 |
343 if (GROUP_NO_ENFORCEMENT == enforcement_group) { | 269 if (GROUP_NO_ENFORCEMENT == enforcement_group) { |
344 // Remove enforcement for all tracked preferences. | 270 // Remove enforcement for all tracked preferences. |
345 data.enforcement_level = PrefHashFilter::NO_ENFORCEMENT; | 271 data.enforcement_level = EnforcementLevel::NO_ENFORCEMENT; |
346 } | 272 } |
347 | 273 |
348 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_DSE && | 274 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_DSE && |
349 data.name == DefaultSearchManager::kDefaultSearchProviderDataPrefName) { | 275 data.name == DefaultSearchManager::kDefaultSearchProviderDataPrefName) { |
350 // Specifically enable default search settings enforcement. | 276 // Specifically enable default search settings enforcement. |
351 data.enforcement_level = PrefHashFilter::ENFORCE_ON_LOAD; | 277 data.enforcement_level = EnforcementLevel::ENFORCE_ON_LOAD; |
352 } | 278 } |
353 | 279 |
354 #if BUILDFLAG(ENABLE_EXTENSIONS) | 280 #if BUILDFLAG(ENABLE_EXTENSIONS) |
355 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_EXTENSIONS_AND_DSE && | 281 if (enforcement_group >= GROUP_ENFORCE_ALWAYS_WITH_EXTENSIONS_AND_DSE && |
356 data.name == extensions::pref_names::kExtensions) { | 282 data.name == extensions::pref_names::kExtensions) { |
357 // Specifically enable extension settings enforcement. | 283 // Specifically enable extension settings enforcement. |
358 data.enforcement_level = PrefHashFilter::ENFORCE_ON_LOAD; | 284 data.enforcement_level = EnforcementLevel::ENFORCE_ON_LOAD; |
359 } | 285 } |
360 #endif | 286 #endif |
361 | 287 |
362 result.push_back(data); | 288 result.push_back(data); |
363 } | 289 } |
364 return result; | 290 return result; |
365 } | 291 } |
366 | 292 |
367 // Shows notifications which correspond to PersistentPrefStore's reading errors. | 293 // Shows notifications which correspond to PersistentPrefStore's reading errors. |
368 void HandleReadError(const base::FilePath& pref_filename, | 294 void HandleReadError(const base::FilePath& pref_filename, |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 | 478 |
553 void ClearResetTime(Profile* profile) { | 479 void ClearResetTime(Profile* profile) { |
554 ProfilePrefStoreManager::ClearResetTime(profile->GetPrefs()); | 480 ProfilePrefStoreManager::ClearResetTime(profile->GetPrefs()); |
555 } | 481 } |
556 | 482 |
557 void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { | 483 void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { |
558 ProfilePrefStoreManager::RegisterProfilePrefs(registry); | 484 ProfilePrefStoreManager::RegisterProfilePrefs(registry); |
559 } | 485 } |
560 | 486 |
561 } // namespace chrome_prefs | 487 } // namespace chrome_prefs |
OLD | NEW |