12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/browser_prefs.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include <string>
86d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/debug/trace_event.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry_simple.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/about_flags.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/accessibility/invert_bubble_prefs.h"
146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "chrome/browser/apps/drive/drive_app_mapping.h"
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/apps/shortcut_manager.h"
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/autocomplete/zero_suggest_provider.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/background/background_mode_manager.h"
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/browser_process_impl.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_shutdown.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chrome_content_browser_client.h"
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/component_updater/recovery_component_installer.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/host_content_settings_map.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/devtools/devtools_window.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/download/download_prefs.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/external_protocol/external_protocol_handler.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/first_run/first_run.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/geolocation/geolocation_prefs.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/google/google_url_tracker_factory.h"
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/gpu/gl_string_manager.h"
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/gpu/gpu_mode_manager.h"
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/intranet_redirect_detector.h"
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/io_thread.h"
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/media/media_capture_devices_dispatcher.h"
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/media/media_device_id_salt.h"
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/media/media_stream_devices_controller.h"
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/metrics/chrome_metrics_service_client.h"
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/metrics/variations/variations_service.h"
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/net/http_server_properties_manager_factory.h"
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/net/net_pref_observer.h"
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/net/prediction_options.h"
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/net/predictor.h"
43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/net/pref_proxy_config_tracker_impl.h"
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/net/ssl_config_service_manager.h"
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/notifications/desktop_notification_service.h"
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/notifications/extension_welcome_notification.h"
47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "chrome/browser/notifications/message_center_notification_manager.h"
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/pepper_flash_settings_manager.h"
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/plugins/plugin_finder.h"
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/prefs/chrome_pref_service_factory.h"
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/incognito_mode_prefs.h"
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/prefs/pref_service_syncable.h"
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/session_startup_pref.h"
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/printing/print_dialog_cloud.h"
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/chrome_version_service.h"
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h"
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_impl.h"
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache.h"
599ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profiles_state.h"
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/renderer_host/pepper/device_id_fetcher.h"
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search/search.h"
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/services/gcm/gcm_profile_service.h"
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/signin/signin_manager_factory.h"
64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/signin/signin_promo.h"
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/task_manager/task_manager.h"
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/app_list/app_list_service.h"
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_ui_prefs.h"
68a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "chrome/browser/ui/navigation_correction_tab_observer.h"
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/network_profile_bubble.h"
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/search_engines/keyword_editor_controller.h"
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/startup/autolaunch_prompt.h"
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/startup/default_browser_prompt.h"
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/tabs/pinned_tab_codec.h"
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/flags_ui.h"
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/instant_ui.h"
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/plugins_ui.h"
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/print_preview/sticky_settings.h"
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/upgrade_detector.h"
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/web_resource/promo_resource_service.h"
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h"
83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_manager.h"
84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_utils.h"
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/dom_distiller/core/distilled_page_prefs.h"
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/gcm_driver/gcm_channel_status_syncer.h"
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/google/core/browser/google_pref_names.h"
88f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/google/core/browser/google_url_tracker.h"
8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/network_time/network_time_tracker.h"
90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/password_manager/core/browser/password_manager.h"
91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/pref_registry/pref_registry_syncable.h"
92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/rappor/rappor_service.h"
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_prepopulate_data.h"
9423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "components/sync_driver/sync_prefs.h"
955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/translate/core/browser/translate_prefs.h"
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_process_host.h"
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "net/http/http_server_properties_manager.h"
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
99ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#if defined(ENABLE_AUTOFILL_DIALOG)
100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chrome/browser/ui/autofill/autofill_dialog_controller.h"
101ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif
102ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY)
1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/browser/browser_policy_connector.h"
1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/browser/url_blacklist_manager.h"
106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_statistics_collector.h"
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(ENABLE_EXTENSIONS)
11046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/extensions/activity_log/activity_log.h"
11146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/extensions/api/commands/command_service.h"
11246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/extensions/api/tabs/tabs_api.h"
1136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/extensions/extension_web_ui.h"
11446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/extensions/launch_util.h"
1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/signin/easy_unlock_service.h"
1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/webui/extensions/extension_settings_handler.h"
1176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "extensions/browser/extension_prefs.h"
11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif
11946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
12090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#if defined(ENABLE_MANAGED_USERS)
121f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_service.h"
122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h"
123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_sync_service.h"
12490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif
12590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
12623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY)
12768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/ui/webui/local_discovery/local_discovery_ui.h"
12868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif
12968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(ENABLE_PLUGIN_INSTALLATION)
1310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/plugins/plugins_resource_service.h"
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(OS_ANDROID)
135f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
136f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/android/new_tab_page_prefs.h"
1370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#else
1380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h"
1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profile_resetter/automatic_profile_resetter_factory.h"
1400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/ui/autofill/generated_credit_card_bubble_controller.h"
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
14558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/chromeos/attestation/platform_verification_flow.h"
146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/audio/audio_devices_pref_handler_impl.h"
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/customization_document.h"
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/display/display_preferences.h"
149424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "chrome/browser/chromeos/extensions/echo_private_api.h"
15046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/chromeos/file_system_provider/service.h"
1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/chromeos/first_run/first_run.h"
152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/login/default_pinned_apps_field_trial.h"
1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h"
154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/login/session/user_session_manager.h"
155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/login/startup_utils.h"
156cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h"
157cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/avatar/user_image_sync_observer.h"
1586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/chrome_user_manager_impl.h"
159cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h"
160cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
1617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chromeos/net/proxy_config_handler.h"
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/policy/auto_enrollment_client.h"
1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
1646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/chromeos/policy/consumer_management_service.h"
165868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/policy/device_status_collector.h"
1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/chromeos/policy/policy_cert_service_factory.h"
1689ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/chromeos/power/power_prefs.h"
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/preferences.h"
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/settings/device_oauth2_token_service.h"
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_cache.h"
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/status/data_promo_notification.h"
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/system/automatic_reboot_manager.h"
174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/api/enterprise_platform_keys_private/enterprise_platform_keys_private_api.h"
175cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/extensions/extension_assets_manager_chromeos.h"
176cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/metrics/chromeos_metrics_provider.h"
1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/charger_replacement_handler.h"
178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/ui/webui/chromeos/login/demo_mode_detector.h"
179cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.h"
180f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h"
181a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/invalidation/invalidator_storage.h"
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/default_apps.h"
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(OS_MACOSX)
1885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h"
1890f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/ui/cocoa/confirm_quit.h"
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1920f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(OS_WIN)
1930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/apps/app_launch_for_metro_restart_win.h"
1946d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "chrome/browser/component_updater/sw_reporter_installer_win.h"
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1970f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(TOOLKIT_VIEWS)
1980f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/ui/browser_view_prefs.h"
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(USE_ASH)
2020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif
2044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum MigratedPreferences {
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NO_PREFS = 0,
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DNS_PREFS = 1 << 0,
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WINDOWS_PREFS = 1 << 1,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GOOGLE_URL_TRACKER_PREFS = 1 << 2,
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A previous feature (see
2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// chrome/browser/protector/protected_prefs_watcher.cc in source
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// control history) used this string as a prefix for various prefs it
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// registered. We keep it here for now to clear out those old prefs in
2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// MigrateUserPrefs.
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kBackupPref[] = "backup";
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
221bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#if !defined(OS_ANDROID)
222bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// The sync promo error message preference has been removed; this pref will
223bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// be cleared from user data.
224bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochconst char kSyncPromoErrorMessage[] = "sync_promo.error_message";
2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// The AutomaticProfileResetter service used this preference to save that the
2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// profile reset prompt had already been shown, however, the preference has been
2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// renamed in Local State. We keep the name here for now so that we can clear
2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// out legacy values.
2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// TODO(engedy): Remove this and usages in M42 or later. See crbug.com/398813.
2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kLegacyProfileResetPromptMemento[] = "profile.reset_prompt_memento";
232bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif
233bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome {
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void RegisterLocalState(PrefRegistrySimple* registry) {
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Prefs in Local State.
2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  registry->RegisterIntegerPref(prefs::kMultipleProfilePrefMigration, 0);
2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Please keep this list alphabetized.
2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  AppListService::RegisterPrefs(registry);
2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  browser_shutdown::RegisterPrefs(registry);
2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  BrowserProcessImpl::RegisterPrefs(registry);
246f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  ChromeMetricsServiceClient::RegisterPrefs(registry);
2475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  chrome_prefs::RegisterPrefs(registry);
2480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  chrome_variations::VariationsService::RegisterPrefs(registry);
2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  component_updater::RegisterPrefsForRecoveryComponent(registry);
2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExternalProtocolHandler::RegisterPrefs(registry);
2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FlagsUI::RegisterPrefs(registry);
2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  geolocation::RegisterPrefs(registry);
2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  GLStringManager::RegisterPrefs(registry);
2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  GpuModeManager::RegisterPrefs(registry);
2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IntranetRedirectDetector::RegisterPrefs(registry);
2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IOThread::RegisterPrefs(registry);
25746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_time::NetworkTimeTracker::RegisterPrefs(registry);
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PrefProxyConfigTrackerImpl::RegisterPrefs(registry);
2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ProfileInfoCache::RegisterPrefs(registry);
2609ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  profiles::RegisterPrefs(registry);
2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PromoResourceService::RegisterPrefs(registry);
262a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  rappor::RapporService::RegisterPrefs(registry);
2630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  RegisterScreenshotPrefs(registry);
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SigninManagerFactory::RegisterPrefs(registry);
2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SSLConfigServiceManager::RegisterPrefs(registry);
2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  UpgradeDetector::RegisterPrefs(registry);
2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(ENABLE_AUTOFILL_DIALOG)
2690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  autofill::AutofillDialogController::RegisterPrefs(registry);
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY)
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  policy::BrowserPolicyConnector::RegisterPrefs(registry);
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  policy::PolicyStatisticsCollector::RegisterPrefs(registry);
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)#if defined(ENABLE_EXTENSIONS)
27834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  EasyUnlockService::RegisterPrefs(registry);
27934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)#endif
28034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
2815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#if defined(ENABLE_NOTIFICATIONS) && !defined(OS_ANDROID)
2825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Android does not use the message center for notifications.
283a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  MessageCenterNotificationManager::RegisterPrefs(registry);
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2860f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(ENABLE_PLUGINS)
2870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  PluginFinder::RegisterPrefs(registry);
2880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif
2890f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
2900f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(ENABLE_PLUGIN_INSTALLATION)
2910f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  PluginsResourceService::RegisterPrefs(registry);
2920f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif
2930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_TASK_MANAGER)
2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TaskManager::RegisterPrefs(registry);
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // defined(ENABLE_TASK_MANAGER)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_ANDROID)
2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  AutomaticProfileResetterFactory::RegisterPrefs(registry);
3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  BackgroundModeManager::RegisterPrefs(registry);
3012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  RegisterBrowserPrefs(registry);
3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // The native GCM is used on Android instead.
3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  gcm::GCMChannelStatusSyncer::RegisterPrefs(registry);
304d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#if !defined(OS_CHROMEOS)
305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  RegisterDefaultBrowserPromptPrefs(registry);
306d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#endif  // !defined(OS_CHROMEOS)
307d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#endif  // !defined(OS_ANDROID)
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
310cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ChromeOSMetricsProvider::RegisterPrefs(registry);
311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  chromeos::AudioDevicesPrefHandlerImpl::RegisterPrefs(registry);
3125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  chromeos::ChargerReplacementHandler::RegisterPrefs(registry);
3136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  chromeos::ChromeUserManagerImpl::RegisterPrefs(registry);
3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::DataPromoNotification::RegisterPrefs(registry);
315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  chromeos::DeviceOAuth2TokenService::RegisterPrefs(registry);
3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::device_settings_cache::RegisterPrefs(registry);
317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  chromeos::default_pinned_apps_field_trial::RegisterPrefs(registry);
3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::language_prefs::RegisterPrefs(registry);
3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::KioskAppManager::RegisterPrefs(registry);
32068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  chromeos::MultiProfileUserController::RegisterPrefs(registry);
321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  chromeos::HIDDetectionScreenHandler::RegisterPrefs(registry);
322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  chromeos::DemoModeDetector::RegisterPrefs(registry);
3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::Preferences::RegisterPrefs(registry);
324ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  chromeos::proxy_config::RegisterPrefs(registry);
3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::RegisterDisplayLocalStatePrefs(registry);
326f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  chromeos::ResetScreenHandler::RegisterPrefs(registry);
3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::ServicesCustomizationDocument::RegisterPrefs(registry);
328a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  chromeos::SigninScreenHandler::RegisterPrefs(registry);
329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  chromeos::StartupUtils::RegisterPrefs(registry);
3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::system::AutomaticRebootManager::RegisterPrefs(registry);
3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::UserImageManager::RegisterPrefs(registry);
332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  chromeos::UserSessionManager::RegisterPrefs(registry);
3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chromeos::WallpaperManager::RegisterPrefs(registry);
334424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  chromeos::echo_offer::RegisterPrefs(registry);
335cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  extensions::ExtensionAssetsManagerChromeOS::RegisterPrefs(registry);
336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  invalidation::InvalidatorStorage::RegisterPrefs(registry);
3372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  policy::AutoEnrollmentClient::RegisterPrefs(registry);
3385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  policy::BrowserPolicyConnectorChromeOS::RegisterPrefs(registry);
3396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  policy::ConsumerManagementService::RegisterPrefs(registry);
340868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  policy::DeviceCloudPolicyManagerChromeOS::RegisterPrefs(registry);
3412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  policy::DeviceStatusCollector::RegisterPrefs(registry);
3425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  policy::PolicyCertServiceFactory::RegisterPrefs(registry);
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  confirm_quit::RegisterLocalState(registry);
3475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  QuitWithAppsController::RegisterPrefs(registry);
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN)
3514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  app_metro_launch::RegisterPrefs(registry);
3526d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  component_updater::RegisterPrefsForSwReporter(registry);
353c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  password_manager::PasswordManager::RegisterLocalPrefs(registry);
3544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif
3550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
3560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(TOOLKIT_VIEWS)
3575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  RegisterBrowserViewLocalPrefs(registry);
3580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif
3595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
3605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Preferences registered only for migration (clearing or moving to a new key)
3615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // go here.
3625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !defined(OS_ANDROID)
3631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  registry->RegisterDictionaryPref(kLegacyProfileResetPromptMemento);
3645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif  // !defined(OS_ANDROID)
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Register prefs applicable to all profiles.
3687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
369868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TRACE_EVENT0("browser", "chrome::RegisterUserPrefs");
3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // User prefs. Please keep this list alphabetized.
3717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  autofill::AutofillManager::RegisterProfilePrefs(registry);
372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bookmarks::RegisterProfilePrefs(registry);
37323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  sync_driver::SyncPrefs::RegisterProfilePrefs(registry);
3747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ChromeContentBrowserClient::RegisterProfilePrefs(registry);
3757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ChromeVersionService::RegisterProfilePrefs(registry);
376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  chrome_browser_net::HttpServerPropertiesManagerFactory::RegisterProfilePrefs(
3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      registry);
3787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  chrome_browser_net::Predictor::RegisterProfilePrefs(registry);
379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  chrome_browser_net::RegisterPredictionOptionsProfilePrefs(registry);
380a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  chrome_prefs::RegisterProfilePrefs(registry);
381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  dom_distiller::DistilledPagePrefs::RegisterProfilePrefs(registry);
3827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DownloadPrefs::RegisterProfilePrefs(registry);
383f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  gcm::GCMProfileService::RegisterProfilePrefs(registry);
3847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  HostContentSettingsMap::RegisterProfilePrefs(registry);
3857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  IncognitoModePrefs::RegisterProfilePrefs(registry);
3867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  InstantUI::RegisterProfilePrefs(registry);
387a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  NavigationCorrectionTabObserver::RegisterProfilePrefs(registry);
3887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  MediaCaptureDevicesDispatcher::RegisterProfilePrefs(registry);
389a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  MediaDeviceIDSalt::RegisterProfilePrefs(registry);
3907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  MediaStreamDevicesController::RegisterProfilePrefs(registry);
3917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  NetPrefObserver::RegisterProfilePrefs(registry);
392c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  password_manager::PasswordManager::RegisterProfilePrefs(registry);
3937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  PrefProxyConfigTrackerImpl::RegisterProfilePrefs(registry);
3947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  PrefsTabHelper::RegisterProfilePrefs(registry);
3957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  Profile::RegisterProfilePrefs(registry);
3967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ProfileImpl::RegisterProfilePrefs(registry);
3977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  PromoResourceService::RegisterProfilePrefs(registry);
3987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ProtocolHandlerRegistry::RegisterProfilePrefs(registry);
3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  RegisterBrowserUserPrefs(registry);
4007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  SessionStartupPref::RegisterProfilePrefs(registry);
4017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  TemplateURLPrepopulateData::RegisterProfilePrefs(registry);
4025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  translate::TranslatePrefs::RegisterProfilePrefs(registry);
403010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ZeroSuggestProvider::RegisterProfilePrefs(registry);
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#if defined(ENABLE_AUTOFILL_DIALOG)
406ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  autofill::AutofillDialogController::RegisterProfilePrefs(registry);
407ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif
408ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY)
4107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  policy::URLBlacklistManager::RegisterProfilePrefs(registry);
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#if defined(ENABLE_EXTENSIONS)
4145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  EasyUnlockService::RegisterProfilePrefs(registry);
41568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  extensions::ActivityLog::RegisterProfilePrefs(registry);
41646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  extensions::launch_util::RegisterProfilePrefs(registry);
41746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ExtensionWebUI::RegisterProfilePrefs(registry);
41846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  extensions::ExtensionPrefs::RegisterProfilePrefs(registry);
4196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif
42068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
4210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(ENABLE_FULL_PRINTING)
4220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  print_dialog_cloud::RegisterProfilePrefs(registry);
4230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  printing::StickySettings::RegisterProfilePrefs(registry);
4240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif
4250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_MANAGED_USERS)
427f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  SupervisedUserService::RegisterProfilePrefs(registry);
428f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  SupervisedUserSharedSettingsService::RegisterProfilePrefs(registry);
429f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  SupervisedUserSyncService::RegisterProfilePrefs(registry);
4302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
4312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(ENABLE_NOTIFICATIONS)
4330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  DesktopNotificationService::RegisterProfilePrefs(registry);
434c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#endif
435c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch
4361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_NOTIFICATIONS) && defined(ENABLE_EXTENSIONS) && \
4371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    !defined(OS_ANDROID)
4381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // The extension welcome notification requires a build that enables extensions
4391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // and notifications, and uses the UI message center.
4401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ExtensionWelcomeNotification::RegisterProfilePrefs(registry);
4411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
44323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY)
44423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  LocalDiscoveryUI::RegisterProfilePrefs(registry);
44523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif
44623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
4485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  chrome_variations::VariationsService::RegisterProfilePrefs(registry);
449f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  NewTabPagePrefs::RegisterProfilePrefs(registry);
4500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  PartnerBookmarksShim::RegisterProfilePrefs(registry);
4510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#else
4520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  AppShortcutManager::RegisterProfilePrefs(registry);
4530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  autofill::GeneratedCreditCardBubbleController::RegisterUserPrefs(registry);
4547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DeviceIDFetcher::RegisterProfilePrefs(registry);
4557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DevToolsWindow::RegisterProfilePrefs(registry);
4566d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  DriveAppMapping::RegisterProfilePrefs(registry);
4577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  extensions::CommandService::RegisterProfilePrefs(registry);
458a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  extensions::ExtensionSettingsHandler::RegisterProfilePrefs(registry);
4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if !defined(USE_ATHENA)
4603240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  extensions::TabsCaptureVisibleTabFunction::RegisterProfilePrefs(registry);
4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
4623240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  first_run::RegisterProfilePrefs(registry);
4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  gcm::GCMChannelStatusSyncer::RegisterProfilePrefs(registry);
4645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  NewTabUI::RegisterProfilePrefs(registry);
4657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  PepperFlashSettingsManager::RegisterProfilePrefs(registry);
4667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  PinnedTabCodec::RegisterProfilePrefs(registry);
4677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  PluginsUI::RegisterProfilePrefs(registry);
4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  RegisterAutolaunchUserPrefs(registry);
469a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  signin::RegisterProfilePrefs(registry);
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
4737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  default_apps::RegisterProfilePrefs(registry);
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
47758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  chromeos::attestation::PlatformVerificationFlow::RegisterProfilePrefs(
47858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      registry);
4795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  chromeos::first_run::RegisterProfilePrefs(registry);
48046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  chromeos::file_system_provider::RegisterProfilePrefs(registry);
48168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  chromeos::MultiProfileUserController::RegisterProfilePrefs(registry);
4827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  chromeos::Preferences::RegisterProfilePrefs(registry);
4837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  chromeos::proxy_config::RegisterProfilePrefs(registry);
4845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  chromeos::SAMLOfflineSigninLimiter::RegisterProfilePrefs(registry);
485a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  chromeos::ServicesCustomizationDocument::RegisterProfilePrefs(registry);
48658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  chromeos::UserImageSyncObserver::RegisterProfilePrefs(registry);
487c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  extensions::EnterprisePlatformKeysPrivateChallengeUserKeyFunction::
4887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      RegisterProfilePrefs(registry);
4897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FlagsUI::RegisterProfilePrefs(registry);
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  component_updater::RegisterProfilePrefsForSwReporter(registry);
4947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  NetworkProfileBubble::RegisterProfilePrefs(registry);
4957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
4967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
4970f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(TOOLKIT_VIEWS)
4985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  RegisterBrowserViewProfilePrefs(registry);
4990f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  RegisterInvertBubbleUserPrefs(registry);
5000f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif
5010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
5020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(USE_ASH)
5030f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  ash::RegisterChromeLauncherUserPrefs(registry);
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Preferences registered only for migration (clearing or moving to a new key)
5075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // go here.
508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  registry->RegisterDictionaryPref(
509c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      kBackupPref,
5105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      new base::DictionaryValue(),
511c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
512bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#if !defined(OS_ANDROID)
513bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  registry->RegisterStringPref(
514bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      kSyncPromoErrorMessage,
515bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      std::string(),
516bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
517bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif
5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
5217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  RegisterProfilePrefs(registry);
5229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
5239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#if defined(OS_CHROMEOS)
5249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  chromeos::PowerPrefs::RegisterUserProfilePrefs(registry);
5259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#endif
5267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
5277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
5285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void RegisterScreenshotPrefs(PrefRegistrySimple* registry) {
5295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  registry->RegisterBooleanPref(prefs::kDisableScreenshots, false);
5305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
5315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
5327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(OS_CHROMEOS)
5337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid RegisterLoginProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
5347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  RegisterProfilePrefs(registry);
5359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
5369ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  chromeos::PowerPrefs::RegisterLoginProfilePrefs(registry);
5377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
5387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
5397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
5402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrateUserPrefs(Profile* profile) {
5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PrefService* prefs = profile->GetPrefs();
5422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Cleanup prefs from now-removed protector feature.
5442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  prefs->ClearPref(kBackupPref);
5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
546bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#if !defined(OS_ANDROID)
547bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  // Cleanup now-removed sync promo error message preference.
548bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  // TODO(fdoray): Remove this when it's safe to do so (crbug.com/268442).
549bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  prefs->ClearPref(kSyncPromoErrorMessage);
5506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // Migrate kNetworkPredictionEnabled to kNetworkPredictionOptions when not on
5516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // Android.  On Android, platform-specific code performs preference migration.
5526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // TODO(bnc): https://crbug.com/401970  Remove migration code one year after
5536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // M38.
5546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  chrome_browser_net::MigrateNetworkPredictionUserPrefs(prefs);
555bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif
556bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PromoResourceService::MigrateUserPrefs(prefs);
5585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  translate::TranslatePrefs::MigrateUserPrefs(prefs, prefs::kAcceptLanguages);
5593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
56046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_MACOSX) && !defined(OS_IOS)
56146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  autofill::AutofillManager::MigrateUserPrefs(prefs);
56246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif  // defined(OS_MACOSX) && !defined(OS_IOS)
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrateBrowserPrefs(Profile* profile, PrefService* local_state) {
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Copy pref values which have been migrated to user_prefs from local_state,
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // or remove them from local_state outright, if copying is not required.
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int current_version =
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      local_state->GetInteger(prefs::kMultipleProfilePrefMigration);
5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PrefRegistrySimple* registry = static_cast<PrefRegistrySimple*>(
5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      local_state->DeprecatedGetPrefRegistry());
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!(current_version & DNS_PREFS)) {
5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    registry->RegisterListPref(prefs::kDnsStartupPrefetchList);
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->ClearPref(prefs::kDnsStartupPrefetchList);
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    registry->RegisterListPref(prefs::kDnsHostReferralList);
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->ClearPref(prefs::kDnsHostReferralList);
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    current_version |= DNS_PREFS;
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->SetInteger(prefs::kMultipleProfilePrefMigration,
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            current_version);
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefService* user_prefs = profile->GetPrefs();
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!(current_version & WINDOWS_PREFS)) {
5872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (local_state->HasPrefPath(prefs::kBrowserWindowPlacement)) {
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const PrefService::Preference* pref =
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          local_state->FindPreference(prefs::kBrowserWindowPlacement);
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      DCHECK(pref);
5922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      user_prefs->Set(prefs::kBrowserWindowPlacement,
5932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      *(pref->GetValue()));
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->ClearPref(prefs::kBrowserWindowPlacement);
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    current_version |= WINDOWS_PREFS;
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->SetInteger(prefs::kMultipleProfilePrefMigration,
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            current_version);
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!(current_version & GOOGLE_URL_TRACKER_PREFS)) {
6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    registry->RegisterStringPref(prefs::kLastKnownGoogleURL,
6042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 GoogleURLTracker::kDefaultGoogleHomepage);
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (local_state->HasPrefPath(prefs::kLastKnownGoogleURL)) {
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      user_prefs->SetString(prefs::kLastKnownGoogleURL,
6072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            local_state->GetString(prefs::kLastKnownGoogleURL));
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->ClearPref(prefs::kLastKnownGoogleURL);
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    registry->RegisterStringPref(prefs::kLastPromptedGoogleURL,
6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 std::string());
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (local_state->HasPrefPath(prefs::kLastPromptedGoogleURL)) {
6142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      user_prefs->SetString(
6152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          prefs::kLastPromptedGoogleURL,
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          local_state->GetString(prefs::kLastPromptedGoogleURL));
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->ClearPref(prefs::kLastPromptedGoogleURL);
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    current_version |= GOOGLE_URL_TRACKER_PREFS;
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_state->SetInteger(prefs::kMultipleProfilePrefMigration,
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            current_version);
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
6255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !defined(OS_ANDROID)
6261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  local_state->ClearPref(kLegacyProfileResetPromptMemento);
6275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif
6285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
6295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS)
6305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  chromeos::default_pinned_apps_field_trial::MigratePrefs(local_state);
6315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
632cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
633cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(TOOLKIT_VIEWS)
634cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  MigrateBrowserTabStripPrefs(local_state);
635cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chrome
639