Home | History | Annotate | Download | only in profiles
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h"
      6 
      7 #include "apps/app_load_service_factory.h"
      8 #include "apps/app_restore_service_factory.h"
      9 #include "apps/shell_window_geometry_cache.h"
     10 #include "chrome/browser/apps/shortcut_manager_factory.h"
     11 #include "chrome/browser/autofill/autocheckout_whitelist_manager_factory.h"
     12 #include "chrome/browser/autofill/personal_data_manager_factory.h"
     13 #include "chrome/browser/background/background_contents_service_factory.h"
     14 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
     15 #include "chrome/browser/chrome_browser_main.h"
     16 #include "chrome/browser/content_settings/cookie_settings.h"
     17 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
     18 #include "chrome/browser/download/download_service_factory.h"
     19 #include "chrome/browser/extensions/activity_log/activity_log.h"
     20 #include "chrome/browser/extensions/api/activity_log_private/activity_log_private_api.h"
     21 #include "chrome/browser/extensions/api/alarms/alarm_manager.h"
     22 #include "chrome/browser/extensions/api/api_resource_manager.h"
     23 #include "chrome/browser/extensions/api/audio/audio_api.h"
     24 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h"
     25 #include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h"
     26 #include "chrome/browser/extensions/api/commands/command_service.h"
     27 #include "chrome/browser/extensions/api/cookies/cookies_api.h"
     28 #include "chrome/browser/extensions/api/developer_private/developer_private_api_factory.h"
     29 #include "chrome/browser/extensions/api/dial/dial_api_factory.h"
     30 #include "chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h"
     31 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
     32 #include "chrome/browser/extensions/api/feedback_private/feedback_private_api.h"
     33 #include "chrome/browser/extensions/api/font_settings/font_settings_api.h"
     34 #include "chrome/browser/extensions/api/history/history_api.h"
     35 #include "chrome/browser/extensions/api/identity/identity_api.h"
     36 #include "chrome/browser/extensions/api/idle/idle_manager_factory.h"
     37 #include "chrome/browser/extensions/api/input/input.h"
     38 #include "chrome/browser/extensions/api/location/location_manager.h"
     39 #include "chrome/browser/extensions/api/management/management_api.h"
     40 #include "chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h"
     41 #include "chrome/browser/extensions/api/omnibox/omnibox_api.h"
     42 #include "chrome/browser/extensions/api/preference/chrome_direct_setting_api.h"
     43 #include "chrome/browser/extensions/api/preference/preference_api.h"
     44 #include "chrome/browser/extensions/api/processes/processes_api.h"
     45 #include "chrome/browser/extensions/api/push_messaging/push_messaging_api.h"
     46 #include "chrome/browser/extensions/api/serial/serial_connection.h"
     47 #include "chrome/browser/extensions/api/session_restore/session_restore_api.h"
     48 #include "chrome/browser/extensions/api/socket/socket.h"
     49 #include "chrome/browser/extensions/api/streams_private/streams_private_api.h"
     50 #include "chrome/browser/extensions/api/system_info/system_info_api.h"
     51 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h"
     52 #include "chrome/browser/extensions/api/tabs/tabs_windows_api.h"
     53 #include "chrome/browser/extensions/api/usb/usb_device_resource.h"
     54 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
     55 #include "chrome/browser/extensions/extension_prefs_factory.h"
     56 #include "chrome/browser/extensions/extension_system_factory.h"
     57 #include "chrome/browser/extensions/extension_web_ui_override_registrar.h"
     58 #include "chrome/browser/extensions/install_tracker_factory.h"
     59 #include "chrome/browser/extensions/plugin_manager.h"
     60 #include "chrome/browser/extensions/token_cache/token_cache_service_factory.h"
     61 #include "chrome/browser/favicon/favicon_service_factory.h"
     62 #include "chrome/browser/geolocation/chrome_geolocation_permission_context_factory.h"
     63 #include "chrome/browser/google/google_url_tracker_factory.h"
     64 #include "chrome/browser/history/history_service_factory.h"
     65 #include "chrome/browser/history/shortcuts_backend_factory.h"
     66 #include "chrome/browser/invalidation/invalidation_service_factory.h"
     67 #include "chrome/browser/media_galleries/media_galleries_preferences_factory.h"
     68 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
     69 #include "chrome/browser/password_manager/password_store_factory.h"
     70 #include "chrome/browser/plugins/plugin_prefs_factory.h"
     71 #include "chrome/browser/policy/profile_policy_connector_factory.h"
     72 #include "chrome/browser/predictors/autocomplete_action_predictor_factory.h"
     73 #include "chrome/browser/predictors/predictor_database_factory.h"
     74 #include "chrome/browser/predictors/resource_prefetch_predictor_factory.h"
     75 #include "chrome/browser/prerender/prerender_link_manager_factory.h"
     76 #include "chrome/browser/prerender/prerender_manager_factory.h"
     77 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h"
     78 #include "chrome/browser/profiles/gaia_info_update_service_factory.h"
     79 #include "chrome/browser/search/instant_service_factory.h"
     80 #include "chrome/browser/search_engines/template_url_fetcher_factory.h"
     81 #include "chrome/browser/search_engines/template_url_service_factory.h"
     82 #include "chrome/browser/sessions/session_service_factory.h"
     83 #include "chrome/browser/sessions/tab_restore_service_factory.h"
     84 #include "chrome/browser/signin/about_signin_internals_factory.h"
     85 #include "chrome/browser/signin/signin_manager_factory.h"
     86 #include "chrome/browser/signin/token_service_factory.h"
     87 #include "chrome/browser/speech/extension_api/tts_extension_api.h"
     88 #include "chrome/browser/sync/profile_sync_service_factory.h"
     89 #include "chrome/browser/themes/theme_service_factory.h"
     90 #include "chrome/browser/thumbnails/thumbnail_service_factory.h"
     91 #include "chrome/browser/ui/find_bar/find_bar_state_factory.h"
     92 #include "chrome/browser/ui/global_error/global_error_service_factory.h"
     93 #include "chrome/browser/ui/tabs/pinned_tab_service_factory.h"
     94 #include "chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h"
     95 #include "chrome/browser/user_style_sheet_watcher_factory.h"
     96 #include "chrome/browser/webdata/web_data_service_factory.h"
     97 
     98 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
     99 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
    100 #endif
    101 
    102 #if defined(ENABLE_CONFIGURATION_POLICY)
    103 #include "chrome/browser/policy/cloud/user_cloud_policy_invalidator_factory.h"
    104 #if defined(OS_CHROMEOS)
    105 #include "chrome/browser/chromeos/policy/recommendation_restorer_factory.h"
    106 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h"
    107 #include "chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_factory.h"
    108 #else
    109 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
    110 #include "chrome/browser/policy/cloud/user_policy_signin_service_factory.h"
    111 #endif
    112 #endif
    113 
    114 #if defined(ENABLE_MANAGED_USERS)
    115 #include "chrome/browser/managed_mode/managed_user_service_factory.h"
    116 #include "chrome/browser/managed_mode/managed_user_sync_service_factory.h"
    117 #endif
    118 
    119 #if defined(OS_CHROMEOS)
    120 #include "chrome/browser/chromeos/extensions/input_method_api.h"
    121 #include "chrome/browser/chromeos/extensions/media_player_api.h"
    122 #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
    123 #include "chrome/browser/extensions/api/networking_private/networking_private_event_router_factory.h"
    124 #if defined(FILE_MANAGER_EXTENSION)
    125 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_api_factory.h"
    126 #endif
    127 #endif
    128 
    129 #if defined(USE_AURA)
    130 #include "chrome/browser/ui/gesture_prefs_observer_factory_aura.h"
    131 #endif
    132 
    133 #if !defined(OS_ANDROID)
    134 #include "chrome/browser/media_galleries/media_galleries_preferences_factory.h"
    135 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_factory.h"
    136 #endif
    137 
    138 #if defined(ENABLE_SPELLCHECK)
    139 #include "chrome/browser/extensions/api/spellcheck/spellcheck_api.h"
    140 #include "chrome/browser/spellchecker/spellcheck_factory.h"
    141 #endif
    142 
    143 namespace chrome {
    144 
    145 void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) {
    146   main_parts->AddParts(new ChromeBrowserMainExtraPartsProfiles());
    147 }
    148 
    149 }  // namespace chrome
    150 
    151 ChromeBrowserMainExtraPartsProfiles::ChromeBrowserMainExtraPartsProfiles() {
    152 }
    153 
    154 ChromeBrowserMainExtraPartsProfiles::~ChromeBrowserMainExtraPartsProfiles() {
    155 }
    156 
    157 // This method gets the instance of each ServiceFactory. We do this so that
    158 // each ServiceFactory initializes itself and registers its dependencies with
    159 // the global PreferenceDependencyManager. We need to have a complete
    160 // dependency graph when we create a profile so we can dispatch the profile
    161 // creation message to the services that want to create their services at
    162 // profile creation time.
    163 //
    164 // TODO(erg): This needs to be something else. I don't think putting every
    165 // FooServiceFactory here will scale or is desirable long term.
    166 //
    167 // static
    168 void ChromeBrowserMainExtraPartsProfiles::
    169 EnsureBrowserContextKeyedServiceFactoriesBuilt() {
    170   AboutSigninInternalsFactory::GetInstance();
    171   autofill::PersonalDataManagerFactory::GetInstance();
    172 #if defined(ENABLE_BACKGROUND)
    173   BackgroundContentsServiceFactory::GetInstance();
    174 #endif
    175   BookmarkModelFactory::GetInstance();
    176 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
    177   captive_portal::CaptivePortalServiceFactory::GetInstance();
    178 #endif
    179   ChromeGeolocationPermissionContextFactory::GetInstance();
    180 #if defined(OS_CHROMEOS)
    181   chromeos::NetworkingPrivateEventRouterFactory::GetInstance();
    182 #endif
    183 #if defined(ENABLE_FULL_PRINTING)
    184   CloudPrintProxyServiceFactory::GetInstance();
    185 #endif
    186   CookieSettings::Factory::GetInstance();
    187 #if defined(ENABLE_NOTIFICATIONS)
    188   DesktopNotificationServiceFactory::GetInstance();
    189 #endif
    190   DownloadServiceFactory::GetInstance();
    191 #if defined(ENABLE_EXTENSIONS)
    192   AppShortcutManagerFactory::GetInstance();
    193   apps::AppLoadServiceFactory::GetInstance();
    194   apps::AppRestoreServiceFactory::GetInstance();
    195   apps::ShellWindowGeometryCache::Factory::GetInstance();
    196   autofill::autocheckout::WhitelistManagerFactory::GetInstance();
    197   extensions::ActivityLogFactory::GetInstance();
    198   extensions::ActivityLogAPI::GetFactoryInstance();
    199   extensions::AlarmManager::GetFactoryInstance();
    200   extensions::ApiResourceManager<extensions::SerialConnection>::
    201       GetFactoryInstance();
    202   extensions::ApiResourceManager<extensions::Socket>::GetFactoryInstance();
    203   extensions::ApiResourceManager<extensions::UsbDeviceResource>::
    204       GetFactoryInstance();
    205   extensions::AudioAPI::GetFactoryInstance();
    206   extensions::BookmarksAPI::GetFactoryInstance();
    207   extensions::BluetoothAPIFactory::GetInstance();
    208   extensions::chromedirectsetting::ChromeDirectSettingAPI::GetFactoryInstance();
    209   extensions::CommandService::GetFactoryInstance();
    210   extensions::CookiesAPI::GetFactoryInstance();
    211   extensions::DeveloperPrivateAPIFactory::GetInstance();
    212   extensions::DialAPIFactory::GetInstance();
    213   extensions::ExtensionActionAPI::GetFactoryInstance();
    214   extensions::ExtensionPrefsFactory::GetInstance();
    215   extensions::ExtensionSystemFactory::GetInstance();
    216   extensions::ExtensionWebUIOverrideRegistrar::GetFactoryInstance();
    217   extensions::FeedbackPrivateAPI::GetFactoryInstance();
    218   extensions::FontSettingsAPI::GetFactoryInstance();
    219   extensions::HistoryAPI::GetFactoryInstance();
    220   extensions::IdentityAPI::GetFactoryInstance();
    221   extensions::IdleManagerFactory::GetInstance();
    222   extensions::InstallTrackerFactory::GetInstance();
    223 #if defined(TOOLKIT_VIEWS)
    224   extensions::InputAPI::GetFactoryInstance();
    225 #endif
    226 #if defined(OS_CHROMEOS)
    227   extensions::InputImeAPI::GetFactoryInstance();
    228   extensions::InputMethodAPI::GetFactoryInstance();
    229 #endif
    230   extensions::LocationManager::GetFactoryInstance();
    231   extensions::ManagementAPI::GetFactoryInstance();
    232   extensions::MediaGalleriesPrivateAPI::GetFactoryInstance();
    233 #if defined(OS_CHROMEOS)
    234   extensions::MediaPlayerAPI::GetFactoryInstance();
    235 #endif
    236   extensions::OmniboxAPI::GetFactoryInstance();
    237 #if defined(ENABLE_PLUGINS)
    238   extensions::PluginManager::GetFactoryInstance();
    239 #endif  // defined(ENABLE_PLUGINS)
    240   extensions::PreferenceAPI::GetFactoryInstance();
    241   extensions::ProcessesAPI::GetFactoryInstance();
    242   extensions::PushMessagingAPI::GetFactoryInstance();
    243   extensions::SessionRestoreAPI::GetFactoryInstance();
    244 #if defined(ENABLE_SPELLCHECK)
    245   extensions::SpellcheckAPI::GetFactoryInstance();
    246 #endif
    247   extensions::StreamsPrivateAPI::GetFactoryInstance();
    248   extensions::SystemInfoAPI::GetFactoryInstance();
    249   extensions::SuggestedLinksRegistryFactory::GetInstance();
    250   extensions::TabCaptureRegistryFactory::GetInstance();
    251   extensions::TabsWindowsAPI::GetFactoryInstance();
    252   extensions::TtsAPI::GetFactoryInstance();
    253   extensions::WebNavigationAPI::GetFactoryInstance();
    254 #endif  // defined(ENABLE_EXTENSIONS)
    255   FaviconServiceFactory::GetInstance();
    256 #if defined(OS_CHROMEOS) && defined(FILE_MANAGER_EXTENSION)
    257   file_manager::FileBrowserPrivateAPIFactory::GetInstance();
    258 #endif
    259   FindBarStateFactory::GetInstance();
    260   GAIAInfoUpdateServiceFactory::GetInstance();
    261 #if defined(USE_AURA)
    262   GesturePrefsObserverFactoryAura::GetInstance();
    263 #endif
    264   GlobalErrorServiceFactory::GetInstance();
    265   GoogleURLTrackerFactory::GetInstance();
    266   HistoryServiceFactory::GetInstance();
    267   invalidation::InvalidationServiceFactory::GetInstance();
    268   InstantServiceFactory::GetInstance();
    269 #if defined(ENABLE_MANAGED_USERS)
    270   ManagedUserServiceFactory::GetInstance();
    271   ManagedUserSyncServiceFactory::GetInstance();
    272 #endif
    273 #if !defined(OS_ANDROID)
    274   MediaGalleriesPreferencesFactory::GetInstance();
    275   notifier::ChromeNotifierServiceFactory::GetInstance();
    276 #endif
    277   NTPResourceCacheFactory::GetInstance();
    278   PasswordStoreFactory::GetInstance();
    279 #if !defined(OS_ANDROID)
    280   PinnedTabServiceFactory::GetInstance();
    281 #endif
    282 #if defined(ENABLE_PLUGINS)
    283   PluginPrefsFactory::GetInstance();
    284 #endif
    285   policy::ProfilePolicyConnectorFactory::GetInstance();
    286 #if defined(ENABLE_CONFIGURATION_POLICY)
    287 #if defined(OS_CHROMEOS)
    288   policy::RecommendationRestorerFactory::GetInstance();
    289   policy::UserCloudPolicyManagerFactoryChromeOS::GetInstance();
    290   policy::UserCloudPolicyTokenForwarderFactory::GetInstance();
    291 #else
    292   policy::UserCloudPolicyManagerFactory::GetInstance();
    293   policy::UserPolicySigninServiceFactory::GetInstance();
    294 #endif
    295   policy::UserCloudPolicyInvalidatorFactory::GetInstance();
    296 #endif
    297   predictors::AutocompleteActionPredictorFactory::GetInstance();
    298   predictors::PredictorDatabaseFactory::GetInstance();
    299   predictors::ResourcePrefetchPredictorFactory::GetInstance();
    300   prerender::PrerenderManagerFactory::GetInstance();
    301   prerender::PrerenderLinkManagerFactory::GetInstance();
    302   ProfileSyncServiceFactory::GetInstance();
    303   ProtocolHandlerRegistryFactory::GetInstance();
    304 #if defined(ENABLE_SESSION_SERVICE)
    305   SessionServiceFactory::GetInstance();
    306 #endif
    307   ShortcutsBackendFactory::GetInstance();
    308   SigninManagerFactory::GetInstance();
    309 #if defined(ENABLE_SPELLCHECK)
    310   SpellcheckServiceFactory::GetInstance();
    311 #endif
    312   ThumbnailServiceFactory::GetInstance();
    313   TabRestoreServiceFactory::GetInstance();
    314   TemplateURLFetcherFactory::GetInstance();
    315   TemplateURLServiceFactory::GetInstance();
    316 #if defined(ENABLE_THEMES)
    317   ThemeServiceFactory::GetInstance();
    318 #endif
    319   TokenCacheServiceFactory::GetInstance();
    320   TokenServiceFactory::GetInstance();
    321 #if !defined(OS_ANDROID)
    322   UserStyleSheetWatcherFactory::GetInstance();
    323 #endif
    324   WebDataServiceFactory::GetInstance();
    325 }
    326 
    327 void ChromeBrowserMainExtraPartsProfiles::PreProfileInit() {
    328   EnsureBrowserContextKeyedServiceFactoriesBuilt();
    329 }
    330