OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/browser_prefs.h" | 5 #include "chrome/browser/prefs/browser_prefs.h" |
6 | 6 |
7 #include "chrome/browser/about_flags.h" | 7 #include "chrome/browser/about_flags.h" |
8 #include "chrome/browser/accessibility/invert_bubble_prefs.h" | 8 #include "chrome/browser/accessibility/invert_bubble_prefs.h" |
9 #include "chrome/browser/autofill/autofill_manager.h" | 9 #include "chrome/browser/autofill/autofill_manager.h" |
10 #include "chrome/browser/background/background_mode_manager.h" | 10 #include "chrome/browser/background/background_mode_manager.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 #include "chrome/browser/net/net_pref_observer.h" | 41 #include "chrome/browser/net/net_pref_observer.h" |
42 #include "chrome/browser/net/predictor.h" | 42 #include "chrome/browser/net/predictor.h" |
43 #include "chrome/browser/net/ssl_config_service_manager.h" | 43 #include "chrome/browser/net/ssl_config_service_manager.h" |
44 #include "chrome/browser/notifications/desktop_notification_service.h" | 44 #include "chrome/browser/notifications/desktop_notification_service.h" |
45 #include "chrome/browser/notifications/notification_prefs_manager.h" | 45 #include "chrome/browser/notifications/notification_prefs_manager.h" |
46 #include "chrome/browser/password_manager/password_manager.h" | 46 #include "chrome/browser/password_manager/password_manager.h" |
47 #include "chrome/browser/pepper_flash_settings_manager.h" | 47 #include "chrome/browser/pepper_flash_settings_manager.h" |
48 #include "chrome/browser/plugins/plugin_finder.h" | 48 #include "chrome/browser/plugins/plugin_finder.h" |
49 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 49 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
50 #include "chrome/browser/prefs/pref_registry_simple.h" | 50 #include "chrome/browser/prefs/pref_registry_simple.h" |
| 51 #include "chrome/browser/prefs/pref_registry_syncable.h" |
51 #include "chrome/browser/prefs/pref_service.h" | 52 #include "chrome/browser/prefs/pref_service.h" |
| 53 #include "chrome/browser/prefs/pref_service_syncable.h" |
52 #include "chrome/browser/prefs/session_startup_pref.h" | 54 #include "chrome/browser/prefs/session_startup_pref.h" |
53 #include "chrome/browser/profiles/chrome_version_service.h" | 55 #include "chrome/browser/profiles/chrome_version_service.h" |
54 #include "chrome/browser/profiles/profile_impl.h" | 56 #include "chrome/browser/profiles/profile_impl.h" |
55 #include "chrome/browser/profiles/profile_info_cache.h" | 57 #include "chrome/browser/profiles/profile_info_cache.h" |
56 #include "chrome/browser/profiles/profile_manager.h" | 58 #include "chrome/browser/profiles/profile_manager.h" |
57 #include "chrome/browser/renderer_host/web_cache_manager.h" | 59 #include "chrome/browser/renderer_host/web_cache_manager.h" |
58 #include "chrome/browser/search_engines/template_url_prepopulate_data.h" | 60 #include "chrome/browser/search_engines/template_url_prepopulate_data.h" |
59 #include "chrome/browser/signin/signin_manager_factory.h" | 61 #include "chrome/browser/signin/signin_manager_factory.h" |
60 #include "chrome/browser/sync/sync_prefs.h" | 62 #include "chrome/browser/sync/sync_prefs.h" |
61 #include "chrome/browser/task_manager/task_manager.h" | 63 #include "chrome/browser/task_manager/task_manager.h" |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 GOOGLE_URL_TRACKER_PREFS = 1 << 2, | 147 GOOGLE_URL_TRACKER_PREFS = 1 << 2, |
146 }; | 148 }; |
147 | 149 |
148 } // namespace | 150 } // namespace |
149 | 151 |
150 namespace chrome { | 152 namespace chrome { |
151 | 153 |
152 // TODO(joi): Do the work needed to remove the PrefService parameter, | 154 // TODO(joi): Do the work needed to remove the PrefService parameter, |
153 // i.e. to do all registration up front before a PrefService is even | 155 // i.e. to do all registration up front before a PrefService is even |
154 // created. | 156 // created. |
155 void RegisterLocalState(PrefRegistrySimple* registry, | 157 void RegisterLocalState(PrefService* local_state, |
156 PrefService* local_state) { | 158 PrefRegistrySimple* registry) { |
157 // Prefs in Local State. | 159 // Prefs in Local State. |
158 registry->RegisterIntegerPref(prefs::kMultipleProfilePrefMigration, 0); | 160 registry->RegisterIntegerPref(prefs::kMultipleProfilePrefMigration, 0); |
159 | 161 |
160 // Please keep this list alphabetized. | 162 // Please keep this list alphabetized. |
161 browser_shutdown::RegisterPrefs(registry); | 163 browser_shutdown::RegisterPrefs(registry); |
162 BrowserProcessImpl::RegisterPrefs(registry); | 164 BrowserProcessImpl::RegisterPrefs(registry); |
163 chrome::RegisterScreenshotPrefs(registry); | 165 chrome::RegisterScreenshotPrefs(registry); |
164 extensions::app_launcher::RegisterPrefs(registry); | 166 extensions::app_launcher::RegisterPrefs(registry); |
165 ExternalProtocolHandler::RegisterPrefs(registry); | 167 ExternalProtocolHandler::RegisterPrefs(registry); |
166 FlagsUI::RegisterPrefs(registry); | 168 FlagsUI::RegisterPrefs(registry); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 | 231 |
230 #if defined(OS_MACOSX) | 232 #if defined(OS_MACOSX) |
231 confirm_quit::RegisterLocalState(registry); | 233 confirm_quit::RegisterLocalState(registry); |
232 #endif | 234 #endif |
233 | 235 |
234 #if defined(ENABLE_SETTINGS_APP) | 236 #if defined(ENABLE_SETTINGS_APP) |
235 chrome::RegisterAppListPrefs(registry); | 237 chrome::RegisterAppListPrefs(registry); |
236 #endif | 238 #endif |
237 } | 239 } |
238 | 240 |
239 void RegisterUserPrefs(PrefServiceSyncable* user_prefs) { | 241 void RegisterUserPrefs(PrefService* user_prefs, |
| 242 PrefRegistrySyncable* registry) { |
| 243 // TODO(joi): Get rid of the need for the PrefService parameter, and |
| 244 // do registration prior to PrefService creation. |
| 245 |
240 // User prefs. Please keep this list alphabetized. | 246 // User prefs. Please keep this list alphabetized. |
241 AlternateErrorPageTabObserver::RegisterUserPrefs(user_prefs); | 247 AlternateErrorPageTabObserver::RegisterUserPrefs(registry); |
242 AutofillManager::RegisterUserPrefs(user_prefs); | 248 AutofillManager::RegisterUserPrefs(registry); |
243 BookmarkPromptPrefs::RegisterUserPrefs(user_prefs); | 249 BookmarkPromptPrefs::RegisterUserPrefs(registry); |
244 bookmark_utils::RegisterUserPrefs(user_prefs); | 250 bookmark_utils::RegisterUserPrefs(registry); |
245 BrowserInstantController::RegisterUserPrefs(user_prefs); | 251 BrowserInstantController::RegisterUserPrefs(user_prefs, registry); |
246 browser_sync::SyncPrefs::RegisterUserPrefs(user_prefs); | 252 browser_sync::SyncPrefs::RegisterUserPrefs(user_prefs, registry); |
247 ChromeContentBrowserClient::RegisterUserPrefs(user_prefs); | 253 ChromeContentBrowserClient::RegisterUserPrefs(registry); |
248 ChromeVersionService::RegisterUserPrefs(user_prefs); | 254 ChromeVersionService::RegisterUserPrefs(registry); |
249 chrome_browser_net::HttpServerPropertiesManager::RegisterUserPrefs( | 255 chrome_browser_net::HttpServerPropertiesManager::RegisterUserPrefs( |
250 user_prefs); | 256 registry); |
251 chrome_browser_net::Predictor::RegisterUserPrefs(user_prefs); | 257 chrome_browser_net::Predictor::RegisterUserPrefs(registry); |
252 DownloadPrefs::RegisterUserPrefs(user_prefs); | 258 DownloadPrefs::RegisterUserPrefs(user_prefs, registry); |
253 extensions::ComponentLoader::RegisterUserPrefs(user_prefs); | 259 extensions::ComponentLoader::RegisterUserPrefs(registry); |
254 extensions::ExtensionPrefs::RegisterUserPrefs(user_prefs); | 260 extensions::ExtensionPrefs::RegisterUserPrefs(registry); |
255 ExtensionWebUI::RegisterUserPrefs(user_prefs); | 261 ExtensionWebUI::RegisterUserPrefs(registry); |
256 first_run::RegisterUserPrefs(user_prefs); | 262 first_run::RegisterUserPrefs(registry); |
257 HostContentSettingsMap::RegisterUserPrefs(user_prefs); | 263 HostContentSettingsMap::RegisterUserPrefs(registry); |
258 IncognitoModePrefs::RegisterUserPrefs(user_prefs); | 264 IncognitoModePrefs::RegisterUserPrefs(registry); |
259 InstantUI::RegisterUserPrefs(user_prefs); | 265 InstantUI::RegisterUserPrefs(registry); |
260 MediaCaptureDevicesDispatcher::RegisterUserPrefs(user_prefs); | 266 MediaCaptureDevicesDispatcher::RegisterUserPrefs(user_prefs, registry); |
261 MediaStreamDevicesController::RegisterUserPrefs(user_prefs); | 267 MediaStreamDevicesController::RegisterUserPrefs(registry); |
262 NetPrefObserver::RegisterUserPrefs(user_prefs); | 268 NetPrefObserver::RegisterUserPrefs(registry); |
263 NewTabUI::RegisterUserPrefs(user_prefs); | 269 NewTabUI::RegisterUserPrefs(registry); |
264 PasswordManager::RegisterUserPrefs(user_prefs); | 270 PasswordManager::RegisterUserPrefs(registry); |
265 PrefProxyConfigTrackerImpl::RegisterUserPrefs(user_prefs); | 271 PrefProxyConfigTrackerImpl::RegisterUserPrefs(registry); |
266 PrefsTabHelper::RegisterUserPrefs(user_prefs); | 272 PrefsTabHelper::RegisterUserPrefs(registry); |
267 ProfileImpl::RegisterUserPrefs(user_prefs); | 273 ProfileImpl::RegisterUserPrefs(registry); |
268 PromoResourceService::RegisterUserPrefs(user_prefs); | 274 PromoResourceService::RegisterUserPrefs(user_prefs, registry); |
269 ProtocolHandlerRegistry::RegisterUserPrefs(user_prefs); | 275 ProtocolHandlerRegistry::RegisterUserPrefs(registry); |
270 RegisterBrowserUserPrefs(user_prefs); | 276 RegisterBrowserUserPrefs(registry); |
271 SessionStartupPref::RegisterUserPrefs(user_prefs); | 277 SessionStartupPref::RegisterUserPrefs(registry); |
272 TemplateURLPrepopulateData::RegisterUserPrefs(user_prefs); | 278 TemplateURLPrepopulateData::RegisterUserPrefs(registry); |
273 TranslatePrefs::RegisterUserPrefs(user_prefs); | 279 TranslatePrefs::RegisterUserPrefs(user_prefs, registry); |
274 | 280 |
275 #if defined(ENABLE_CONFIGURATION_POLICY) | 281 #if defined(ENABLE_CONFIGURATION_POLICY) |
276 policy::URLBlacklistManager::RegisterUserPrefs(user_prefs); | 282 policy::URLBlacklistManager::RegisterUserPrefs(registry); |
277 #endif | 283 #endif |
278 | 284 |
279 #if defined(ENABLE_MANAGED_USERS) | 285 #if defined(ENABLE_MANAGED_USERS) |
280 ManagedUserService::RegisterUserPrefs(user_prefs); | 286 ManagedUserService::RegisterUserPrefs(registry); |
281 #endif | 287 #endif |
282 | 288 |
283 #if defined(ENABLE_NOTIFICATIONS) | 289 #if defined(ENABLE_NOTIFICATIONS) |
284 DesktopNotificationService::RegisterUserPrefs(user_prefs); | 290 DesktopNotificationService::RegisterUserPrefs(registry); |
285 #endif | 291 #endif |
286 | 292 |
287 #if defined(ENABLE_WEB_INTENTS) | 293 #if defined(ENABLE_WEB_INTENTS) |
288 web_intents::RegisterUserPrefs(user_prefs); | 294 web_intents::RegisterUserPrefs(registry); |
289 #endif | 295 #endif |
290 | 296 |
291 #if defined(TOOLKIT_VIEWS) | 297 #if defined(TOOLKIT_VIEWS) |
292 RegisterInvertBubbleUserPrefs(user_prefs); | 298 RegisterInvertBubbleUserPrefs(registry); |
293 #elif defined(TOOLKIT_GTK) | 299 #elif defined(TOOLKIT_GTK) |
294 BrowserWindowGtk::RegisterUserPrefs(user_prefs); | 300 BrowserWindowGtk::RegisterUserPrefs(user_prefs, registry); |
295 #endif | 301 #endif |
296 | 302 |
297 #if defined(OS_ANDROID) | 303 #if defined(OS_ANDROID) |
298 PromoHandler::RegisterUserPrefs(user_prefs); | 304 PromoHandler::RegisterUserPrefs(registry); |
299 #endif | 305 #endif |
300 | 306 |
301 #if defined(USE_ASH) | 307 #if defined(USE_ASH) |
302 ash::RegisterChromeLauncherUserPrefs(user_prefs); | 308 ash::RegisterChromeLauncherUserPrefs(registry); |
303 #endif | 309 #endif |
304 | 310 |
305 #if !defined(OS_ANDROID) | 311 #if !defined(OS_ANDROID) |
306 TabsCaptureVisibleTabFunction::RegisterUserPrefs(user_prefs); | 312 TabsCaptureVisibleTabFunction::RegisterUserPrefs(registry); |
307 ChromeToMobileService::RegisterUserPrefs(user_prefs); | 313 ChromeToMobileService::RegisterUserPrefs(registry); |
308 DevToolsWindow::RegisterUserPrefs(user_prefs); | 314 DevToolsWindow::RegisterUserPrefs(registry); |
309 extensions::CommandService::RegisterUserPrefs(user_prefs); | 315 extensions::CommandService::RegisterUserPrefs(registry); |
310 ExtensionSettingsHandler::RegisterUserPrefs(user_prefs); | 316 ExtensionSettingsHandler::RegisterUserPrefs(registry); |
311 PepperFlashSettingsManager::RegisterUserPrefs(user_prefs); | 317 PepperFlashSettingsManager::RegisterUserPrefs(registry); |
312 PinnedTabCodec::RegisterUserPrefs(user_prefs); | 318 PinnedTabCodec::RegisterUserPrefs(registry); |
313 PluginsUI::RegisterUserPrefs(user_prefs); | 319 PluginsUI::RegisterUserPrefs(registry); |
314 printing::StickySettings::RegisterUserPrefs(user_prefs); | 320 printing::StickySettings::RegisterUserPrefs(registry); |
315 RegisterAutolaunchUserPrefs(user_prefs); | 321 RegisterAutolaunchUserPrefs(registry); |
316 SyncPromoUI::RegisterUserPrefs(user_prefs); | 322 SyncPromoUI::RegisterUserPrefs(registry); |
317 #endif | 323 #endif |
318 | 324 |
319 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) | 325 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) |
320 default_apps::RegisterUserPrefs(user_prefs); | 326 default_apps::RegisterUserPrefs(registry); |
321 #endif | 327 #endif |
322 | 328 |
323 #if defined(OS_CHROMEOS) | 329 #if defined(OS_CHROMEOS) |
324 chromeos::Preferences::RegisterUserPrefs(user_prefs); | 330 chromeos::Preferences::RegisterUserPrefs(user_prefs, registry); |
325 chromeos::ProxyConfigServiceImpl::RegisterUserPrefs(user_prefs); | 331 chromeos::ProxyConfigServiceImpl::RegisterUserPrefs(registry); |
326 #endif | 332 #endif |
327 | 333 |
328 #if defined(OS_WIN) | 334 #if defined(OS_WIN) |
329 NetworkProfileBubble::RegisterUserPrefs(user_prefs); | 335 NetworkProfileBubble::RegisterUserPrefs(registry); |
330 #endif | 336 #endif |
331 } | 337 } |
332 | 338 |
333 void MigrateUserPrefs(Profile* profile) { | 339 void MigrateUserPrefs(Profile* profile) { |
334 // Cleanup old prefs. | 340 // Cleanup old prefs. |
335 static const char kBackupPref[] = "backup"; | 341 static const char kBackupPref[] = "backup"; |
336 PrefServiceSyncable* prefs = profile->GetPrefs(); | 342 PrefService* prefs = profile->GetPrefs(); |
337 prefs->RegisterDictionaryPref(kBackupPref, new DictionaryValue(), | 343 // TODO(joi): Fix to not require post-construction registration? |
338 PrefServiceSyncable::UNSYNCABLE_PREF); | 344 scoped_refptr<PrefRegistrySyncable> registry( |
| 345 static_cast<PrefRegistrySyncable*>(prefs->DeprecatedGetPrefRegistry())); |
| 346 registry->RegisterDictionaryPref(kBackupPref, new DictionaryValue(), |
| 347 PrefRegistrySyncable::UNSYNCABLE_PREF); |
339 prefs->ClearPref(kBackupPref); | 348 prefs->ClearPref(kBackupPref); |
340 prefs->UnregisterPreference(kBackupPref); | 349 registry->DeprecatedUnregisterPreference(kBackupPref); |
| 350 |
| 351 PrefsTabHelper::MigrateUserPrefs(prefs, registry); |
341 } | 352 } |
342 | 353 |
343 void MigrateBrowserPrefs(Profile* profile, PrefService* local_state) { | 354 void MigrateBrowserPrefs(Profile* profile, PrefService* local_state) { |
344 // Copy pref values which have been migrated to user_prefs from local_state, | 355 // Copy pref values which have been migrated to user_prefs from local_state, |
345 // or remove them from local_state outright, if copying is not required. | 356 // or remove them from local_state outright, if copying is not required. |
346 int current_version = | 357 int current_version = |
347 local_state->GetInteger(prefs::kMultipleProfilePrefMigration); | 358 local_state->GetInteger(prefs::kMultipleProfilePrefMigration); |
348 PrefRegistrySimple* registry = static_cast<PrefRegistrySimple*>( | 359 PrefRegistrySimple* registry = static_cast<PrefRegistrySimple*>( |
349 local_state->DeprecatedGetPrefRegistry()); | 360 local_state->DeprecatedGetPrefRegistry()); |
350 | 361 |
351 if (!(current_version & DNS_PREFS)) { | 362 if (!(current_version & DNS_PREFS)) { |
352 registry->RegisterListPref(prefs::kDnsStartupPrefetchList); | 363 registry->RegisterListPref(prefs::kDnsStartupPrefetchList); |
353 local_state->ClearPref(prefs::kDnsStartupPrefetchList); | 364 local_state->ClearPref(prefs::kDnsStartupPrefetchList); |
354 | 365 |
355 registry->RegisterListPref(prefs::kDnsHostReferralList); | 366 registry->RegisterListPref(prefs::kDnsHostReferralList); |
356 local_state->ClearPref(prefs::kDnsHostReferralList); | 367 local_state->ClearPref(prefs::kDnsHostReferralList); |
357 | 368 |
358 current_version |= DNS_PREFS; | 369 current_version |= DNS_PREFS; |
359 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, | 370 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, |
360 current_version); | 371 current_version); |
361 } | 372 } |
362 | 373 |
363 PrefServiceSyncable* user_prefs = profile->GetPrefs(); | 374 PrefService* user_prefs = profile->GetPrefs(); |
364 if (!(current_version & WINDOWS_PREFS)) { | 375 if (!(current_version & WINDOWS_PREFS)) { |
365 registry->RegisterIntegerPref(prefs::kDevToolsHSplitLocation, -1); | 376 registry->RegisterIntegerPref(prefs::kDevToolsHSplitLocation, -1); |
366 if (local_state->HasPrefPath(prefs::kDevToolsHSplitLocation)) { | 377 if (local_state->HasPrefPath(prefs::kDevToolsHSplitLocation)) { |
367 user_prefs->SetInteger( | 378 user_prefs->SetInteger( |
368 prefs::kDevToolsHSplitLocation, | 379 prefs::kDevToolsHSplitLocation, |
369 local_state->GetInteger(prefs::kDevToolsHSplitLocation)); | 380 local_state->GetInteger(prefs::kDevToolsHSplitLocation)); |
370 } | 381 } |
371 local_state->ClearPref(prefs::kDevToolsHSplitLocation); | 382 local_state->ClearPref(prefs::kDevToolsHSplitLocation); |
372 | 383 |
373 registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); | 384 registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); |
(...skipping 30 matching lines...) Expand all Loading... |
404 } | 415 } |
405 local_state->ClearPref(prefs::kLastPromptedGoogleURL); | 416 local_state->ClearPref(prefs::kLastPromptedGoogleURL); |
406 | 417 |
407 current_version |= GOOGLE_URL_TRACKER_PREFS; | 418 current_version |= GOOGLE_URL_TRACKER_PREFS; |
408 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, | 419 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, |
409 current_version); | 420 current_version); |
410 } | 421 } |
411 } | 422 } |
412 | 423 |
413 } // namespace chrome | 424 } // namespace chrome |
OLD | NEW |