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

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: Add to PrefRegistrySyncable and PrefServiceSyncable to let sync know of pre-registered prefs. 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_WEB_INTENTS) 289 #if defined(ENABLE_WEB_INTENTS)
284 web_intents::RegisterUserPrefs(user_prefs); 290 web_intents::RegisterUserPrefs(registry);
285 #endif 291 #endif
286 292
287 #if defined(TOOLKIT_VIEWS) 293 #if defined(TOOLKIT_VIEWS)
288 RegisterInvertBubbleUserPrefs(user_prefs); 294 RegisterInvertBubbleUserPrefs(registry);
289 #elif defined(TOOLKIT_GTK) 295 #elif defined(TOOLKIT_GTK)
290 BrowserWindowGtk::RegisterUserPrefs(user_prefs); 296 BrowserWindowGtk::RegisterUserPrefs(user_prefs, registry);
291 #endif 297 #endif
292 298
293 #if defined(OS_ANDROID) 299 #if defined(OS_ANDROID)
294 PromoHandler::RegisterUserPrefs(user_prefs); 300 PromoHandler::RegisterUserPrefs(registry);
295 #endif 301 #endif
296 302
297 #if defined(USE_ASH) 303 #if defined(USE_ASH)
298 ash::RegisterChromeLauncherUserPrefs(user_prefs); 304 ash::RegisterChromeLauncherUserPrefs(registry);
299 #endif 305 #endif
300 306
301 #if !defined(OS_ANDROID) 307 #if !defined(OS_ANDROID)
302 TabsCaptureVisibleTabFunction::RegisterUserPrefs(user_prefs); 308 TabsCaptureVisibleTabFunction::RegisterUserPrefs(registry);
303 ChromeToMobileService::RegisterUserPrefs(user_prefs); 309 ChromeToMobileService::RegisterUserPrefs(registry);
304 DevToolsWindow::RegisterUserPrefs(user_prefs); 310 DevToolsWindow::RegisterUserPrefs(registry);
305 extensions::CommandService::RegisterUserPrefs(user_prefs); 311 extensions::CommandService::RegisterUserPrefs(registry);
306 ExtensionSettingsHandler::RegisterUserPrefs(user_prefs); 312 ExtensionSettingsHandler::RegisterUserPrefs(registry);
307 PepperFlashSettingsManager::RegisterUserPrefs(user_prefs); 313 PepperFlashSettingsManager::RegisterUserPrefs(registry);
308 PinnedTabCodec::RegisterUserPrefs(user_prefs); 314 PinnedTabCodec::RegisterUserPrefs(registry);
309 PluginsUI::RegisterUserPrefs(user_prefs); 315 PluginsUI::RegisterUserPrefs(registry);
310 printing::StickySettings::RegisterUserPrefs(user_prefs); 316 printing::StickySettings::RegisterUserPrefs(registry);
311 RegisterAutolaunchUserPrefs(user_prefs); 317 RegisterAutolaunchUserPrefs(registry);
312 SyncPromoUI::RegisterUserPrefs(user_prefs); 318 SyncPromoUI::RegisterUserPrefs(registry);
313 #endif 319 #endif
314 320
315 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) 321 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
316 default_apps::RegisterUserPrefs(user_prefs); 322 default_apps::RegisterUserPrefs(registry);
317 #endif 323 #endif
318 324
319 #if defined(OS_CHROMEOS) 325 #if defined(OS_CHROMEOS)
320 chromeos::Preferences::RegisterUserPrefs(user_prefs); 326 chromeos::Preferences::RegisterUserPrefs(user_prefs, registry);
321 chromeos::ProxyConfigServiceImpl::RegisterUserPrefs(user_prefs); 327 chromeos::ProxyConfigServiceImpl::RegisterUserPrefs(registry);
322 #endif 328 #endif
323 329
324 #if defined(OS_WIN) 330 #if defined(OS_WIN)
325 NetworkProfileBubble::RegisterUserPrefs(user_prefs); 331 NetworkProfileBubble::RegisterUserPrefs(registry);
326 #endif 332 #endif
327 } 333 }
328 334
329 void MigrateUserPrefs(Profile* profile) { 335 void MigrateUserPrefs(Profile* profile) {
330 // Cleanup old prefs. 336 // Cleanup old prefs.
331 static const char kBackupPref[] = "backup"; 337 static const char kBackupPref[] = "backup";
332 PrefServiceSyncable* prefs = profile->GetPrefs(); 338 PrefService* prefs = profile->GetPrefs();
333 prefs->RegisterDictionaryPref(kBackupPref, new DictionaryValue(), 339 // TODO(joi): Fix to not require post-construction registration?
334 PrefServiceSyncable::UNSYNCABLE_PREF); 340 scoped_refptr<PrefRegistrySyncable> registry(
341 static_cast<PrefRegistrySyncable*>(prefs->DeprecatedGetPrefRegistry()));
342 registry->RegisterDictionaryPref(kBackupPref, new DictionaryValue(),
343 PrefRegistrySyncable::UNSYNCABLE_PREF);
335 prefs->ClearPref(kBackupPref); 344 prefs->ClearPref(kBackupPref);
336 prefs->UnregisterPreference(kBackupPref); 345 registry->DeprecatedUnregisterPreference(kBackupPref);
346
347 PrefsTabHelper::MigrateUserPrefs(prefs, registry);
337 } 348 }
338 349
339 void MigrateBrowserPrefs(Profile* profile, PrefService* local_state) { 350 void MigrateBrowserPrefs(Profile* profile, PrefService* local_state) {
340 // Copy pref values which have been migrated to user_prefs from local_state, 351 // Copy pref values which have been migrated to user_prefs from local_state,
341 // or remove them from local_state outright, if copying is not required. 352 // or remove them from local_state outright, if copying is not required.
342 int current_version = 353 int current_version =
343 local_state->GetInteger(prefs::kMultipleProfilePrefMigration); 354 local_state->GetInteger(prefs::kMultipleProfilePrefMigration);
344 PrefRegistrySimple* registry = static_cast<PrefRegistrySimple*>( 355 PrefRegistrySimple* registry = static_cast<PrefRegistrySimple*>(
345 local_state->DeprecatedGetPrefRegistry()); 356 local_state->DeprecatedGetPrefRegistry());
346 357
347 if (!(current_version & DNS_PREFS)) { 358 if (!(current_version & DNS_PREFS)) {
348 registry->RegisterListPref(prefs::kDnsStartupPrefetchList); 359 registry->RegisterListPref(prefs::kDnsStartupPrefetchList);
349 local_state->ClearPref(prefs::kDnsStartupPrefetchList); 360 local_state->ClearPref(prefs::kDnsStartupPrefetchList);
350 361
351 registry->RegisterListPref(prefs::kDnsHostReferralList); 362 registry->RegisterListPref(prefs::kDnsHostReferralList);
352 local_state->ClearPref(prefs::kDnsHostReferralList); 363 local_state->ClearPref(prefs::kDnsHostReferralList);
353 364
354 current_version |= DNS_PREFS; 365 current_version |= DNS_PREFS;
355 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, 366 local_state->SetInteger(prefs::kMultipleProfilePrefMigration,
356 current_version); 367 current_version);
357 } 368 }
358 369
359 PrefServiceSyncable* user_prefs = profile->GetPrefs(); 370 PrefService* user_prefs = profile->GetPrefs();
360 if (!(current_version & WINDOWS_PREFS)) { 371 if (!(current_version & WINDOWS_PREFS)) {
361 registry->RegisterIntegerPref(prefs::kDevToolsHSplitLocation, -1); 372 registry->RegisterIntegerPref(prefs::kDevToolsHSplitLocation, -1);
362 if (local_state->HasPrefPath(prefs::kDevToolsHSplitLocation)) { 373 if (local_state->HasPrefPath(prefs::kDevToolsHSplitLocation)) {
363 user_prefs->SetInteger( 374 user_prefs->SetInteger(
364 prefs::kDevToolsHSplitLocation, 375 prefs::kDevToolsHSplitLocation,
365 local_state->GetInteger(prefs::kDevToolsHSplitLocation)); 376 local_state->GetInteger(prefs::kDevToolsHSplitLocation));
366 } 377 }
367 local_state->ClearPref(prefs::kDevToolsHSplitLocation); 378 local_state->ClearPref(prefs::kDevToolsHSplitLocation);
368 379
369 registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); 380 registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
(...skipping 30 matching lines...) Expand all
400 } 411 }
401 local_state->ClearPref(prefs::kLastPromptedGoogleURL); 412 local_state->ClearPref(prefs::kLastPromptedGoogleURL);
402 413
403 current_version |= GOOGLE_URL_TRACKER_PREFS; 414 current_version |= GOOGLE_URL_TRACKER_PREFS;
404 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, 415 local_state->SetInteger(prefs::kMultipleProfilePrefMigration,
405 current_version); 416 current_version);
406 } 417 }
407 } 418 }
408 419
409 } // namespace chrome 420 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698