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

Side by Side Diff: chrome/browser/prefs/browser_prefs.cc

Issue 12079097: Introduce PrefRegistrySyncable, simplifying PrefServiceSyncable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head again; base::File changes conflicted. Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/prefs/browser_prefs.h ('k') | chrome/browser/prefs/chrome_pref_service_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698