172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/prefs/browser_prefs.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/about_flags.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/autofill_manager.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/background_contents_service.h"
103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/background_mode_manager.h"
11201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "chrome/browser/background_page_tracker.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/bookmarks/bookmark_utils.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/browser_shutdown.h"
1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/content_settings/host_content_settings_map.h"
15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/debugger/devtools_manager.h"
173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/download/download_prefs.h"
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/extensions/apps_promo.h"
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/extensions/extension_prefs.h"
2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/extensions/extension_web_ui.h"
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/extensions/extensions_ui.h"
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/external_protocol_handler.h"
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/geolocation/geolocation_content_settings_map.h"
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/geolocation/geolocation_prefs.h"
253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/google/google_url_tracker.h"
26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/instant/instant_controller.h"
2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/intranet_redirect_detector.h"
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/metrics/metrics_log.h"
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/metrics/metrics_service.h"
3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/net/net_pref_observer.h"
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/net/predictor_api.h"
32ac1e49eb6695f711d72215fcdf9388548942a00dBen Murdoch#include "chrome/browser/net/pref_proxy_config_service.h"
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/notifications/desktop_notification_service.h"
3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/notifications/notification_ui_manager.h"
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/page_info_model.h"
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/password_manager/password_manager.h"
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/policy/cloud_policy_subsystem.h"
383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/prefs/session_startup_pref.h"
3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile_impl.h"
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/renderer_host/web_cache_manager.h"
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/safe_browsing/safe_browsing_service.h"
42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/search_engines/template_url_model.h"
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/search_engines/template_url_prepopulate_data.h"
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/ssl/ssl_manager.h"
453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/sync/signin_manager.h"
463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/tabs/pinned_tab_codec.h"
473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/task_manager/task_manager.h"
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/translate/translate_prefs.h"
494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/ui/browser.h"
50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/search_engines/keyword_editor_controller.h"
51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/flags_ui.h"
53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/new_tab_ui.h"
54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/plugins_ui.h"
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/upgrade_detector.h"
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/web_resource/promo_resource_service.h"
5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/common/pref_names.h"
58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/host_zoom_map.h"
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/browser/renderer_host/browser_render_process_host.h"
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(TOOLKIT_VIEWS)  // TODO(port): whittle this down as we port
6272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/views/browser_actions_container.h"
6372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/views/frame/browser_view.h"
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(TOOLKIT_GTK)
6772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/browser_window_gtk.h"
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_CHROMEOS)
7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/chromeos/audio_mixer_alsa.h"
72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/customization_document.h"
73513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "chrome/browser/chromeos/login/signed_settings_temp_storage.h"
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/user_manager.h"
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/wizard_controller.h"
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/preferences.h"
7772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/chromeos/status/input_method_menu.h"
784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/chromeos/user_cros_settings_provider.h"
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser {
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid RegisterLocalState(PrefService* local_state) {
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Prefs in Local State
85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  AppsPromo::RegisterPrefs(local_state);
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  Browser::RegisterPrefs(local_state);
8772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  FlagsUI::RegisterPrefs(local_state);
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WebCacheManager::RegisterPrefs(local_state);
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ExternalProtocolHandler::RegisterPrefs(local_state);
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GoogleURLTracker::RegisterPrefs(local_state);
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  IntranetRedirectDetector::RegisterPrefs(local_state);
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  KeywordEditorController::RegisterPrefs(local_state);
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  MetricsLog::RegisterPrefs(local_state);
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  MetricsService::RegisterPrefs(local_state);
95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  PromoResourceService::RegisterPrefs(local_state);
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SafeBrowsingService::RegisterPrefs(local_state);
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  browser_shutdown::RegisterPrefs(local_state);
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(TOOLKIT_VIEWS)
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BrowserView::RegisterBrowserViewPrefs(local_state);
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpgradeDetector::RegisterPrefs(local_state);
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TaskManager::RegisterPrefs(local_state);
103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  geolocation::RegisterPrefs(local_state);
104dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  AutofillManager::RegisterBrowserPrefs(local_state);
105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  BackgroundModeManager::RegisterPrefs(local_state);
106201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  BackgroundPageTracker::RegisterPrefs(local_state);
1073f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  NotificationUIManager::RegisterPrefs(local_state);
108dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  PrefProxyConfigService::RegisterPrefs(local_state);
109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  policy::CloudPolicySubsystem::RegisterPrefs(local_state);
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_CHROMEOS)
11172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  chromeos::AudioMixerAlsa::RegisterPrefs(local_state);
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  chromeos::UserManager::RegisterPrefs(local_state);
1133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  chromeos::UserCrosSettingsProvider::RegisterPrefs(local_state);
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WizardController::RegisterPrefs(local_state);
11572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  chromeos::InputMethodMenu::RegisterPrefs(local_state);
116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  chromeos::ServicesCustomizationDocument::RegisterPrefs(local_state);
117513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  chromeos::SignedSettingsTempStorage::RegisterPrefs(local_state);
118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid RegisterUserPrefs(PrefService* user_prefs) {
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // User prefs
123ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  AppsPromo::RegisterUserPrefs(user_prefs);
124dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  AutofillManager::RegisterUserPrefs(user_prefs);
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SessionStartupPref::RegisterUserPrefs(user_prefs);
126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  Browser::RegisterUserPrefs(user_prefs);
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PasswordManager::RegisterUserPrefs(user_prefs);
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  chrome_browser_net::RegisterUserPrefs(user_prefs);
1293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  DownloadPrefs::RegisterUserPrefs(user_prefs);
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bookmark_utils::RegisterUserPrefs(user_prefs);
131dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  TabContentsWrapper::RegisterUserPrefs(user_prefs);
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TemplateURLPrepopulateData::RegisterUserPrefs(user_prefs);
13372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ExtensionWebUI::RegisterUserPrefs(user_prefs);
134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ExtensionsUI::RegisterUserPrefs(user_prefs);
135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  NewTabUI::RegisterUserPrefs(user_prefs);
136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PluginsUI::RegisterUserPrefs(user_prefs);
137731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ProfileImpl::RegisterUserPrefs(user_prefs);
138ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  PromoResourceService::RegisterUserPrefs(user_prefs);
139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  HostContentSettingsMap::RegisterUserPrefs(user_prefs);
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  HostZoomMap::RegisterUserPrefs(user_prefs);
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DevToolsManager::RegisterUserPrefs(user_prefs);
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PinnedTabCodec::RegisterUserPrefs(user_prefs);
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ExtensionPrefs::RegisterUserPrefs(user_prefs);
144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GeolocationContentSettingsMap::RegisterUserPrefs(user_prefs);
145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TranslatePrefs::RegisterUserPrefs(user_prefs);
146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DesktopNotificationService::RegisterUserPrefs(user_prefs);
147dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  PrefProxyConfigService::RegisterPrefs(user_prefs);
148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(TOOLKIT_VIEWS)
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BrowserActionsContainer::RegisterUserPrefs(user_prefs);
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#elif defined(TOOLKIT_GTK)
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BrowserWindowGtk::RegisterUserPrefs(user_prefs);
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_CHROMEOS)
154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  chromeos::Preferences::RegisterUserPrefs(user_prefs);
155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BackgroundContentsService::RegisterUserPrefs(user_prefs);
1573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  SigninManager::RegisterUserPrefs(user_prefs);
158731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  TemplateURLModel::RegisterUserPrefs(user_prefs);
159731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  InstantController::RegisterUserPrefs(user_prefs);
160731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  NetPrefObserver::RegisterPrefs(user_prefs);
161ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  policy::CloudPolicySubsystem::RegisterPrefs(user_prefs);
162dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ProtocolHandlerRegistry::RegisterPrefs(user_prefs);
16372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
16472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
16572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid MigrateBrowserPrefs(PrefService* user_prefs, PrefService* local_state) {
16672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Copy pref values which have been migrated to user_prefs from local_state,
16772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // or remove them from local_state outright, if copying is not required.
16872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  int current_version =
16972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      local_state->GetInteger(prefs::kMultipleProfilePrefMigration);
17072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
17172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  if ((current_version & WINDOWS_PREFS) == 0) {
17272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    // Migrate the devtools split location preference.
17372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    local_state->RegisterIntegerPref(prefs::kDevToolsSplitLocation, -1);
17472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    DCHECK(user_prefs->FindPreference(prefs::kDevToolsSplitLocation));
17572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    if (local_state->HasPrefPath(prefs::kDevToolsSplitLocation)) {
17672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      user_prefs->SetInteger(prefs::kDevToolsSplitLocation,
17772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen          local_state->GetInteger(prefs::kDevToolsSplitLocation));
17872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    }
17972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    local_state->ClearPref(prefs::kDevToolsSplitLocation);
18072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
18172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    // Migrate the browser window placement preference.
18272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    local_state->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
18372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    DCHECK(user_prefs->FindPreference(prefs::kBrowserWindowPlacement));
18472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    if (local_state->HasPrefPath(prefs::kBrowserWindowPlacement)) {
185ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const PrefService::Preference* pref =
186ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen          local_state->FindPreference(prefs::kBrowserWindowPlacement);
187ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      DCHECK(pref);
188ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      user_prefs->Set(prefs::kBrowserWindowPlacement, *(pref->GetValue()));
18972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    }
19072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    local_state->ClearPref(prefs::kBrowserWindowPlacement);
19172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
19272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    local_state->SetInteger(prefs::kMultipleProfilePrefMigration,
19372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                            current_version | WINDOWS_PREFS);
19472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  }
195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace browser
198