summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 23:13:24 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 23:13:24 +0000
commit99152a7e8091125c7be25c458b7219fa9f6192e1 (patch)
treebd5b8d26c38c5fae5f731c092ce5ce14455b2ed0
parent412d3dab6514a8a5d48bd164b1b173fa245d492d (diff)
downloadchromium_src-99152a7e8091125c7be25c458b7219fa9f6192e1.zip
chromium_src-99152a7e8091125c7be25c458b7219fa9f6192e1.tar.gz
chromium_src-99152a7e8091125c7be25c458b7219fa9f6192e1.tar.bz2
Drop more dependencies of ProfileKeyedService infrastructure on chrome.
This extracts AssertFactoriesBuilt code to a file that will stay in chrome. BUG=227219 R=erg@chromium.org Review URL: https://codereview.chromium.org/14967003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199566 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--apps/shortcut_manager_factory.h2
-rw-r--r--chrome/browser/chrome_content_browser_client.cc3
-rw-r--r--chrome/browser/chrome_to_mobile_service_factory.h1
-rw-r--r--chrome/browser/chromeos/app_mode/kiosk_app_update_service.h2
-rw-r--r--chrome/browser/chromeos/login/login_utils_browsertest.cc6
-rw-r--r--chrome/browser/extensions/api/autotest_private/autotest_private_api_factory.h2
-rw-r--r--chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h2
-rw-r--r--chrome/browser/extensions/api/developer_private/developer_private_api_factory.h2
-rw-r--r--chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h2
-rw-r--r--chrome/browser/extensions/api/idle/idle_manager_factory.h2
-rw-r--r--chrome/browser/extensions/api/sync_file_system/extension_sync_event_observer_factory.h2
-rw-r--r--chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h2
-rw-r--r--chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h2
-rw-r--r--chrome/browser/extensions/extension_pref_value_map_factory.h1
-rw-r--r--chrome/browser/extensions/token_cache/token_cache_service_factory.h2
-rw-r--r--chrome/browser/google_apis/drive_notification_manager_factory.h2
-rw-r--r--chrome/browser/managed_mode/managed_user_service_factory.h1
-rw-r--r--chrome/browser/policy/cloud/user_policy_signin_service_factory.h2
-rw-r--r--chrome/browser/predictors/autocomplete_action_predictor_factory.h2
-rw-r--r--chrome/browser/predictors/predictor_database_factory.h2
-rw-r--r--chrome/browser/predictors/resource_prefetch_predictor_factory.h2
-rw-r--r--chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc282
-rw-r--r--chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h35
-rw-r--r--chrome/browser/profiles/profile_dependency_manager.cc283
-rw-r--r--chrome/browser/profiles/profile_dependency_manager.h23
-rw-r--r--chrome/browser/profiles/profile_keyed_base_factory.cc10
-rw-r--r--chrome/browser/profiles/profile_keyed_base_factory.h1
-rw-r--r--chrome/browser/profiles/profile_keyed_service_factory.cc2
-rw-r--r--chrome/browser/profiles/profile_keyed_service_factory.h1
-rw-r--r--chrome/browser/speech/chrome_speech_recognition_preferences.h1
-rw-r--r--chrome/browser/spellchecker/spellcheck_factory.h1
-rw-r--r--chrome/browser/ui/global_error/global_error_service_factory.h1
-rw-r--r--chrome/browser/ui/webui/ntp/app_resource_cache_factory.h1
-rw-r--r--chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h1
-rw-r--r--chrome/chrome_browser.gypi2
-rw-r--r--chrome/test/base/testing_profile.cc6
36 files changed, 402 insertions, 292 deletions
diff --git a/apps/shortcut_manager_factory.h b/apps/shortcut_manager_factory.h
index bed2136..001bb61 100644
--- a/apps/shortcut_manager_factory.h
+++ b/apps/shortcut_manager_factory.h
@@ -9,6 +9,8 @@
template<typename Type> struct DefaultSingletonTraits;
+class Profile;
+
namespace apps {
class ShortcutManager;
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 2c7b4b2..cec8396 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -58,6 +58,7 @@
#include "chrome/browser/prerender/prerender_message_filter.h"
#include "chrome/browser/prerender/prerender_tracker.h"
#include "chrome/browser/printing/printing_message_filter.h"
+#include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_io_data.h"
#include "chrome/browser/profiles/profile_manager.h"
@@ -543,6 +544,8 @@ content::BrowserMainParts* ChromeContentBrowserClient::CreateBrowserMainParts(
main_parts = new ChromeBrowserMainParts(parameters);
#endif
+ chrome::AddProfilesExtraParts(main_parts);
+
// Construct additional browser parts. Stages are called in the order in
// which they are added.
#if defined(TOOLKIT_GTK)
diff --git a/chrome/browser/chrome_to_mobile_service_factory.h b/chrome/browser/chrome_to_mobile_service_factory.h
index 4953079..12168a1 100644
--- a/chrome/browser/chrome_to_mobile_service_factory.h
+++ b/chrome/browser/chrome_to_mobile_service_factory.h
@@ -10,6 +10,7 @@
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
class ChromeToMobileService;
+class Profile;
class ChromeToMobileServiceFactory : public ProfileKeyedServiceFactory {
public:
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_update_service.h b/chrome/browser/chromeos/app_mode/kiosk_app_update_service.h
index 8bde271..bd0601f 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_update_service.h
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_update_service.h
@@ -15,6 +15,8 @@
#include "chrome/browser/profiles/profile_keyed_service.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace chromeos {
// This class enforces automatic restart on app and Chrome updates in app mode.
diff --git a/chrome/browser/chromeos/login/login_utils_browsertest.cc b/chrome/browser/chromeos/login/login_utils_browsertest.cc
index 99d663b..256b99d 100644
--- a/chrome/browser/chromeos/login/login_utils_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_utils_browsertest.cc
@@ -35,6 +35,7 @@
#include "chrome/browser/policy/cloud/device_management_service.h"
#include "chrome/browser/policy/policy_service.h"
#include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
+#include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/rlz/rlz.h"
#include "chrome/common/chrome_notification_types.h"
@@ -434,6 +435,11 @@ class LoginUtilsTest : public testing::Test,
}
void PrepareProfile(const std::string& username) {
+ // Normally this would happen during browser startup, but for tests
+ // we need to trigger creation of Profile-related services.
+ ChromeBrowserMainExtraPartsProfiles::
+ EnsureProfileKeyedServiceFactoriesBuilt();
+
DeviceSettingsTestHelper device_settings_test_helper;
DeviceSettingsService::Get()->SetSessionManager(
&device_settings_test_helper, new MockOwnerKeyUtil());
diff --git a/chrome/browser/extensions/api/autotest_private/autotest_private_api_factory.h b/chrome/browser/extensions/api/autotest_private/autotest_private_api_factory.h
index 0cb296e..cc6dfda 100644
--- a/chrome/browser/extensions/api/autotest_private/autotest_private_api_factory.h
+++ b/chrome/browser/extensions/api/autotest_private/autotest_private_api_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class AutotestPrivateAPI;
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h b/chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h
index 8c5f134..cac8587 100644
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h
+++ b/chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class BluetoothAPI;
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api_factory.h b/chrome/browser/extensions/api/developer_private/developer_private_api_factory.h
index 3c41292..2aff89f 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api_factory.h
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class DeveloperPrivateAPI;
diff --git a/chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h b/chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h
index 3bb9af6..5160d5b 100644
--- a/chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h
+++ b/chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class SuggestedLinksRegistry;
diff --git a/chrome/browser/extensions/api/idle/idle_manager_factory.h b/chrome/browser/extensions/api/idle/idle_manager_factory.h
index b9c7c63..95d1750 100644
--- a/chrome/browser/extensions/api/idle/idle_manager_factory.h
+++ b/chrome/browser/extensions/api/idle/idle_manager_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class IdleManager;
diff --git a/chrome/browser/extensions/api/sync_file_system/extension_sync_event_observer_factory.h b/chrome/browser/extensions/api/sync_file_system/extension_sync_event_observer_factory.h
index c394e77..fe771ad 100644
--- a/chrome/browser/extensions/api/sync_file_system/extension_sync_event_observer_factory.h
+++ b/chrome/browser/extensions/api/sync_file_system/extension_sync_event_observer_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class ExtensionSyncEventObserver;
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h b/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h
index a1311cf..89f359c 100644
--- a/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h
+++ b/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class SystemIndicatorManager;
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h b/chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h
index b1849cf..56c9283 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class TabCaptureRegistry;
diff --git a/chrome/browser/extensions/extension_pref_value_map_factory.h b/chrome/browser/extensions/extension_pref_value_map_factory.h
index 9ec0168..efb0641 100644
--- a/chrome/browser/extensions/extension_pref_value_map_factory.h
+++ b/chrome/browser/extensions/extension_pref_value_map_factory.h
@@ -9,6 +9,7 @@
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
class ExtensionPrefValueMap;
+class Profile;
class ExtensionPrefValueMapFactory : public ProfileKeyedServiceFactory {
public:
diff --git a/chrome/browser/extensions/token_cache/token_cache_service_factory.h b/chrome/browser/extensions/token_cache/token_cache_service_factory.h
index 0d28101..2a99359 100644
--- a/chrome/browser/extensions/token_cache/token_cache_service_factory.h
+++ b/chrome/browser/extensions/token_cache/token_cache_service_factory.h
@@ -9,6 +9,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace extensions {
class TokenCacheService;
} // namespace extensions
diff --git a/chrome/browser/google_apis/drive_notification_manager_factory.h b/chrome/browser/google_apis/drive_notification_manager_factory.h
index fbcfc9a..177c27b 100644
--- a/chrome/browser/google_apis/drive_notification_manager_factory.h
+++ b/chrome/browser/google_apis/drive_notification_manager_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace google_apis {
class DriveNotificationManager;
diff --git a/chrome/browser/managed_mode/managed_user_service_factory.h b/chrome/browser/managed_mode/managed_user_service_factory.h
index 12ef119..1dfb81d 100644
--- a/chrome/browser/managed_mode/managed_user_service_factory.h
+++ b/chrome/browser/managed_mode/managed_user_service_factory.h
@@ -9,6 +9,7 @@
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
class ManagedUserService;
+class Profile;
class ManagedUserServiceFactory : public ProfileKeyedServiceFactory {
public:
diff --git a/chrome/browser/policy/cloud/user_policy_signin_service_factory.h b/chrome/browser/policy/cloud/user_policy_signin_service_factory.h
index cde10e8..a105ebe 100644
--- a/chrome/browser/policy/cloud/user_policy_signin_service_factory.h
+++ b/chrome/browser/policy/cloud/user_policy_signin_service_factory.h
@@ -8,6 +8,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace user_prefs {
class PrefRegistrySyncable;
}
diff --git a/chrome/browser/predictors/autocomplete_action_predictor_factory.h b/chrome/browser/predictors/autocomplete_action_predictor_factory.h
index b1624ab..3e30f6a 100644
--- a/chrome/browser/predictors/autocomplete_action_predictor_factory.h
+++ b/chrome/browser/predictors/autocomplete_action_predictor_factory.h
@@ -9,6 +9,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace predictors {
class AutocompleteActionPredictor;
diff --git a/chrome/browser/predictors/predictor_database_factory.h b/chrome/browser/predictors/predictor_database_factory.h
index 4bfcf5a..e08cdbd 100644
--- a/chrome/browser/predictors/predictor_database_factory.h
+++ b/chrome/browser/predictors/predictor_database_factory.h
@@ -9,6 +9,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace predictors {
class PredictorDatabase;
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_factory.h b/chrome/browser/predictors/resource_prefetch_predictor_factory.h
index f40c38a..147a21c 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_factory.h
+++ b/chrome/browser/predictors/resource_prefetch_predictor_factory.h
@@ -9,6 +9,8 @@
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+class Profile;
+
namespace predictors {
class ResourcePrefetchPredictor;
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
new file mode 100644
index 0000000..d1dee56
--- /dev/null
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -0,0 +1,282 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h"
+
+#include "apps/app_restore_service_factory.h"
+#include "apps/shortcut_manager_factory.h"
+#include "chrome/browser/autofill/autocheckout_whitelist_manager_factory.h"
+#include "chrome/browser/autofill/personal_data_manager_factory.h"
+#include "chrome/browser/background/background_contents_service_factory.h"
+#include "chrome/browser/bookmarks/bookmark_model_factory.h"
+#include "chrome/browser/chrome_browser_main.h"
+#include "chrome/browser/content_settings/cookie_settings.h"
+#include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
+#include "chrome/browser/download/download_service_factory.h"
+#include "chrome/browser/extensions/activity_log.h"
+#include "chrome/browser/extensions/api/alarms/alarm_manager.h"
+#include "chrome/browser/extensions/api/audio/audio_api.h"
+#include "chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h"
+#include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h"
+#include "chrome/browser/extensions/api/commands/command_service.h"
+#include "chrome/browser/extensions/api/cookies/cookies_api.h"
+#include "chrome/browser/extensions/api/dial/dial_api_factory.h"
+#include "chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h"
+#include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
+#include "chrome/browser/extensions/api/font_settings/font_settings_api.h"
+#include "chrome/browser/extensions/api/history/history_api.h"
+#include "chrome/browser/extensions/api/identity/identity_api.h"
+#include "chrome/browser/extensions/api/idle/idle_manager_factory.h"
+#include "chrome/browser/extensions/api/input/input.h"
+#include "chrome/browser/extensions/api/managed_mode_private/managed_mode_private_api.h"
+#include "chrome/browser/extensions/api/management/management_api.h"
+#include "chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h"
+#include "chrome/browser/extensions/api/omnibox/omnibox_api.h"
+#include "chrome/browser/extensions/api/preference/preference_api.h"
+#include "chrome/browser/extensions/api/processes/processes_api.h"
+#include "chrome/browser/extensions/api/push_messaging/push_messaging_api.h"
+#include "chrome/browser/extensions/api/session_restore/session_restore_api.h"
+#include "chrome/browser/extensions/api/spellcheck/spellcheck_api.h"
+#include "chrome/browser/extensions/api/streams_private/streams_private_api.h"
+#include "chrome/browser/extensions/api/system_info/system_info_api.h"
+#include "chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h"
+#include "chrome/browser/extensions/api/tabs/tabs_windows_api.h"
+#include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
+#include "chrome/browser/extensions/extension_system_factory.h"
+#include "chrome/browser/extensions/extension_web_ui_override_registrar.h"
+#include "chrome/browser/extensions/install_tracker_factory.h"
+#include "chrome/browser/extensions/token_cache/token_cache_service_factory.h"
+#include "chrome/browser/favicon/favicon_service_factory.h"
+#include "chrome/browser/geolocation/chrome_geolocation_permission_context_factory.h"
+#include "chrome/browser/google/google_url_tracker_factory.h"
+#include "chrome/browser/history/history_service_factory.h"
+#include "chrome/browser/history/shortcuts_backend_factory.h"
+#include "chrome/browser/notifications/desktop_notification_service_factory.h"
+#include "chrome/browser/password_manager/password_store_factory.h"
+#include "chrome/browser/plugins/plugin_prefs_factory.h"
+#include "chrome/browser/policy/profile_policy_connector_factory.h"
+#include "chrome/browser/predictors/autocomplete_action_predictor_factory.h"
+#include "chrome/browser/predictors/predictor_database_factory.h"
+#include "chrome/browser/predictors/resource_prefetch_predictor_factory.h"
+#include "chrome/browser/prerender/prerender_link_manager_factory.h"
+#include "chrome/browser/prerender/prerender_manager_factory.h"
+#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h"
+#include "chrome/browser/profiles/gaia_info_update_service_factory.h"
+#include "chrome/browser/search_engines/template_url_fetcher_factory.h"
+#include "chrome/browser/search_engines/template_url_service_factory.h"
+#include "chrome/browser/sessions/session_service_factory.h"
+#include "chrome/browser/sessions/tab_restore_service_factory.h"
+#include "chrome/browser/signin/about_signin_internals_factory.h"
+#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/signin/token_service_factory.h"
+#include "chrome/browser/speech/chrome_speech_recognition_preferences.h"
+#include "chrome/browser/speech/extension_api/tts_extension_api.h"
+#include "chrome/browser/spellchecker/spellcheck_factory.h"
+#include "chrome/browser/sync/profile_sync_service_factory.h"
+#include "chrome/browser/themes/theme_service_factory.h"
+#include "chrome/browser/thumbnails/thumbnail_service_factory.h"
+#include "chrome/browser/ui/find_bar/find_bar_state_factory.h"
+#include "chrome/browser/ui/global_error/global_error_service_factory.h"
+#include "chrome/browser/ui/tabs/pinned_tab_service_factory.h"
+#include "chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h"
+#include "chrome/browser/user_style_sheet_watcher_factory.h"
+#include "chrome/browser/webdata/web_data_service_factory.h"
+
+#if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
+#include "chrome/browser/captive_portal/captive_portal_service_factory.h"
+#endif
+
+#if defined(ENABLE_CONFIGURATION_POLICY)
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h"
+#include "chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_factory.h"
+#else
+#include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
+#include "chrome/browser/policy/cloud/user_policy_signin_service_factory.h"
+#endif
+#endif
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/extensions/input_method_api.h"
+#include "chrome/browser/chromeos/extensions/media_player_api.h"
+#include "chrome/browser/chromeos/extensions/networking_private_event_router_factory.h"
+#include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+#if defined(FILE_MANAGER_EXTENSION)
+#include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_api_factory.h"
+#endif
+#endif
+
+#if defined(USE_AURA)
+#include "chrome/browser/ui/gesture_prefs_observer_factory_aura.h"
+#endif
+
+#if !defined(OS_ANDROID)
+#include "chrome/browser/media_galleries/media_galleries_preferences_factory.h"
+#include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_factory.h"
+#endif
+
+namespace chrome {
+
+void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) {
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsProfiles());
+}
+
+} // namespace chrome
+
+ChromeBrowserMainExtraPartsProfiles::ChromeBrowserMainExtraPartsProfiles() {
+}
+
+ChromeBrowserMainExtraPartsProfiles::~ChromeBrowserMainExtraPartsProfiles() {
+}
+
+// This method gets the instance of each ServiceFactory. We do this so that
+// each ServiceFactory initializes itself and registers its dependencies with
+// the global PreferenceDependencyManager. We need to have a complete
+// dependency graph when we create a profile so we can dispatch the profile
+// creation message to the services that want to create their services at
+// profile creation time.
+//
+// TODO(erg): This needs to be something else. I don't think putting every
+// FooServiceFactory here will scale or is desirable long term.
+//
+// static
+void
+ChromeBrowserMainExtraPartsProfiles::EnsureProfileKeyedServiceFactoriesBuilt() {
+ AboutSigninInternalsFactory::GetInstance();
+
+#if defined(ENABLE_BACKGROUND)
+ BackgroundContentsServiceFactory::GetInstance();
+#endif
+ BookmarkModelFactory::GetInstance();
+#if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
+ captive_portal::CaptivePortalServiceFactory::GetInstance();
+#endif
+ ChromeGeolocationPermissionContextFactory::GetInstance();
+#if defined(ENABLE_PRINTING)
+ CloudPrintProxyServiceFactory::GetInstance();
+#endif
+ CookieSettings::Factory::GetInstance();
+#if defined(ENABLE_NOTIFICATIONS)
+ DesktopNotificationServiceFactory::GetInstance();
+#endif
+ DownloadServiceFactory::GetInstance();
+#if defined(ENABLE_EXTENSIONS)
+ apps::AppRestoreServiceFactory::GetInstance();
+ apps::ShortcutManagerFactory::GetInstance();
+ autofill::autocheckout::WhitelistManagerFactory::GetInstance();
+ extensions::ActivityLogFactory::GetInstance();
+ extensions::AlarmManager::GetFactoryInstance();
+ extensions::AudioAPI::GetFactoryInstance();
+ extensions::BookmarksAPI::GetFactoryInstance();
+ extensions::BluetoothAPIFactory::GetInstance();
+ extensions::CommandService::GetFactoryInstance();
+ extensions::CookiesAPI::GetFactoryInstance();
+ extensions::DialAPIFactory::GetInstance();
+ extensions::ExtensionActionAPI::GetFactoryInstance();
+ extensions::ExtensionSystemFactory::GetInstance();
+ extensions::ExtensionWebUIOverrideRegistrar::GetFactoryInstance();
+ extensions::FontSettingsAPI::GetFactoryInstance();
+ extensions::HistoryAPI::GetFactoryInstance();
+ extensions::IdentityAPI::GetFactoryInstance();
+ extensions::IdleManagerFactory::GetInstance();
+ extensions::InstallTrackerFactory::GetInstance();
+#if defined(TOOLKIT_VIEWS)
+ extensions::InputAPI::GetFactoryInstance();
+#endif
+#if defined(OS_CHROMEOS)
+ extensions::InputImeAPI::GetFactoryInstance();
+ extensions::InputMethodAPI::GetFactoryInstance();
+#endif
+ extensions::ManagedModeAPI::GetFactoryInstance();
+ extensions::ManagementAPI::GetFactoryInstance();
+ extensions::MediaGalleriesPrivateAPI::GetFactoryInstance();
+#if defined(OS_CHROMEOS)
+ extensions::MediaPlayerAPI::GetFactoryInstance();
+#endif
+ extensions::OmniboxAPI::GetFactoryInstance();
+ extensions::PreferenceAPI::GetFactoryInstance();
+ extensions::ProcessesAPI::GetFactoryInstance();
+ extensions::PushMessagingAPI::GetFactoryInstance();
+ extensions::SessionRestoreAPI::GetFactoryInstance();
+ extensions::SpellcheckAPI::GetFactoryInstance();
+ extensions::StreamsPrivateAPI::GetFactoryInstance();
+ extensions::SystemInfoAPI::GetFactoryInstance();
+ extensions::SuggestedLinksRegistryFactory::GetInstance();
+ extensions::TabCaptureRegistryFactory::GetInstance();
+ extensions::TabsWindowsAPI::GetFactoryInstance();
+ extensions::TtsAPI::GetFactoryInstance();
+ extensions::WebNavigationAPI::GetFactoryInstance();
+#endif // defined(ENABLE_EXTENSIONS)
+ FaviconServiceFactory::GetInstance();
+#if defined(OS_CHROMEOS) && defined(FILE_MANAGER_EXTENSION)
+ FileBrowserPrivateAPIFactory::GetInstance();
+#endif
+ FindBarStateFactory::GetInstance();
+ GAIAInfoUpdateServiceFactory::GetInstance();
+#if defined(USE_AURA)
+ GesturePrefsObserverFactoryAura::GetInstance();
+#endif
+ GlobalErrorServiceFactory::GetInstance();
+ GoogleURLTrackerFactory::GetInstance();
+ HistoryServiceFactory::GetInstance();
+#if !defined(OS_ANDROID)
+ notifier::ChromeNotifierServiceFactory::GetInstance();
+ MediaGalleriesPreferencesFactory::GetInstance();
+#endif
+#if defined(OS_CHROMEOS)
+ chromeos::NetworkingPrivateEventRouterFactory::GetInstance();
+#endif
+ NTPResourceCacheFactory::GetInstance();
+ PasswordStoreFactory::GetInstance();
+ autofill::PersonalDataManagerFactory::GetInstance();
+#if !defined(OS_ANDROID)
+ PinnedTabServiceFactory::GetInstance();
+#endif
+#if defined(ENABLE_PLUGINS)
+ PluginPrefsFactory::GetInstance();
+#endif
+ policy::ProfilePolicyConnectorFactory::GetInstance();
+#if defined(ENABLE_CONFIGURATION_POLICY)
+#if defined(OS_CHROMEOS)
+ policy::UserCloudPolicyManagerFactoryChromeOS::GetInstance();
+ policy::UserCloudPolicyTokenForwarderFactory::GetInstance();
+#else
+ policy::UserCloudPolicyManagerFactory::GetInstance();
+ policy::UserPolicySigninServiceFactory::GetInstance();
+#endif
+#endif
+ predictors::AutocompleteActionPredictorFactory::GetInstance();
+ predictors::PredictorDatabaseFactory::GetInstance();
+ predictors::ResourcePrefetchPredictorFactory::GetInstance();
+ prerender::PrerenderManagerFactory::GetInstance();
+ prerender::PrerenderLinkManagerFactory::GetInstance();
+ ProfileSyncServiceFactory::GetInstance();
+ ProtocolHandlerRegistryFactory::GetInstance();
+#if defined(ENABLE_SESSION_SERVICE)
+ SessionServiceFactory::GetInstance();
+#endif
+ ShortcutsBackendFactory::GetInstance();
+ ThumbnailServiceFactory::GetInstance();
+ SigninManagerFactory::GetInstance();
+#if defined(ENABLE_INPUT_SPEECH)
+ ChromeSpeechRecognitionPreferences::InitializeFactory();
+#endif
+ SpellcheckServiceFactory::GetInstance();
+ TabRestoreServiceFactory::GetInstance();
+ TemplateURLFetcherFactory::GetInstance();
+ TemplateURLServiceFactory::GetInstance();
+#if defined(ENABLE_THEMES)
+ ThemeServiceFactory::GetInstance();
+#endif
+ TokenCacheServiceFactory::GetInstance();
+ TokenServiceFactory::GetInstance();
+#if !defined(OS_ANDROID)
+ UserStyleSheetWatcherFactory::GetInstance();
+#endif
+ WebDataServiceFactory::GetInstance();
+}
+
+void ChromeBrowserMainExtraPartsProfiles::PreProfileInit() {
+ EnsureProfileKeyedServiceFactoriesBuilt();
+}
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h
new file mode 100644
index 0000000..1058102
--- /dev/null
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h
@@ -0,0 +1,35 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PROFILES_CHROME_BROWSER_MAIN_EXTRA_PARTS_PROFILES_H_
+#define CHROME_BROWSER_PROFILES_CHROME_BROWSER_MAIN_EXTRA_PARTS_PROFILES_H_
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "chrome/browser/chrome_browser_main_extra_parts.h"
+
+class ChromeBrowserMainParts;
+
+namespace chrome {
+void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts);
+}
+
+class ChromeBrowserMainExtraPartsProfiles : public ChromeBrowserMainExtraParts {
+ public:
+ ChromeBrowserMainExtraPartsProfiles();
+ virtual ~ChromeBrowserMainExtraPartsProfiles();
+
+ // Instantiates all chrome ProfileKeyedService factories, which is especially
+ // important for services that should be created at profile creation time
+ // as compared to lazily on first access.
+ static void EnsureProfileKeyedServiceFactoriesBuilt();
+
+ // Overridden from ChromeBrowserMainExtraParts:
+ virtual void PreProfileInit() OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainExtraPartsProfiles);
+};
+
+#endif // CHROME_BROWSER_PROFILES_CHROME_BROWSER_MAIN_EXTRA_PARTS_PROFILES_H_
diff --git a/chrome/browser/profiles/profile_dependency_manager.cc b/chrome/browser/profiles/profile_dependency_manager.cc
index 93e7610..8b9a1fa 100644
--- a/chrome/browser/profiles/profile_dependency_manager.cc
+++ b/chrome/browser/profiles/profile_dependency_manager.cc
@@ -8,119 +8,9 @@
#include <deque>
#include <iterator>
-#include "apps/app_restore_service_factory.h"
-#include "apps/shortcut_manager_factory.h"
-#include "chrome/browser/autofill/autocheckout_whitelist_manager_factory.h"
-#include "chrome/browser/autofill/personal_data_manager_factory.h"
-#include "chrome/browser/background/background_contents_service_factory.h"
-#include "chrome/browser/bookmarks/bookmark_model_factory.h"
-#include "chrome/browser/content_settings/cookie_settings.h"
-#include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
-#include "chrome/browser/download/download_service_factory.h"
-#include "chrome/browser/extensions/activity_log.h"
-#include "chrome/browser/extensions/api/alarms/alarm_manager.h"
-#include "chrome/browser/extensions/api/audio/audio_api.h"
-#include "chrome/browser/extensions/api/bluetooth/bluetooth_api_factory.h"
-#include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h"
-#include "chrome/browser/extensions/api/commands/command_service.h"
-#include "chrome/browser/extensions/api/cookies/cookies_api.h"
-#include "chrome/browser/extensions/api/dial/dial_api_factory.h"
-#include "chrome/browser/extensions/api/discovery/suggested_links_registry_factory.h"
-#include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
-#include "chrome/browser/extensions/api/font_settings/font_settings_api.h"
-#include "chrome/browser/extensions/api/history/history_api.h"
-#include "chrome/browser/extensions/api/identity/identity_api.h"
-#include "chrome/browser/extensions/api/idle/idle_manager_factory.h"
-#include "chrome/browser/extensions/api/input/input.h"
-#include "chrome/browser/extensions/api/managed_mode_private/managed_mode_private_api.h"
-#include "chrome/browser/extensions/api/management/management_api.h"
-#include "chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h"
-#include "chrome/browser/extensions/api/omnibox/omnibox_api.h"
-#include "chrome/browser/extensions/api/preference/preference_api.h"
-#include "chrome/browser/extensions/api/processes/processes_api.h"
-#include "chrome/browser/extensions/api/push_messaging/push_messaging_api.h"
-#include "chrome/browser/extensions/api/session_restore/session_restore_api.h"
-#include "chrome/browser/extensions/api/spellcheck/spellcheck_api.h"
-#include "chrome/browser/extensions/api/streams_private/streams_private_api.h"
-#include "chrome/browser/extensions/api/system_info/system_info_api.h"
-#include "chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory.h"
-#include "chrome/browser/extensions/api/tabs/tabs_windows_api.h"
-#include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
-#include "chrome/browser/extensions/extension_system_factory.h"
-#include "chrome/browser/extensions/extension_web_ui_override_registrar.h"
-#include "chrome/browser/extensions/install_tracker_factory.h"
-#include "chrome/browser/extensions/token_cache/token_cache_service_factory.h"
-#include "chrome/browser/favicon/favicon_service_factory.h"
-#include "chrome/browser/geolocation/chrome_geolocation_permission_context_factory.h"
-#include "chrome/browser/google/google_url_tracker_factory.h"
-#include "chrome/browser/history/history_service_factory.h"
-#include "chrome/browser/history/shortcuts_backend_factory.h"
-#include "chrome/browser/notifications/desktop_notification_service_factory.h"
-#include "chrome/browser/password_manager/password_store_factory.h"
-#include "chrome/browser/plugins/plugin_prefs_factory.h"
-#include "chrome/browser/policy/profile_policy_connector_factory.h"
-#include "chrome/browser/predictors/autocomplete_action_predictor_factory.h"
-#include "chrome/browser/predictors/predictor_database_factory.h"
-#include "chrome/browser/predictors/resource_prefetch_predictor_factory.h"
-#include "chrome/browser/prerender/prerender_link_manager_factory.h"
-#include "chrome/browser/prerender/prerender_manager_factory.h"
-#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h"
-#include "chrome/browser/profiles/gaia_info_update_service_factory.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_keyed_service.h"
-#include "chrome/browser/profiles/profile_keyed_service_factory.h"
-#include "chrome/browser/search_engines/template_url_fetcher_factory.h"
-#include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/browser/sessions/session_service_factory.h"
-#include "chrome/browser/sessions/tab_restore_service_factory.h"
-#include "chrome/browser/signin/about_signin_internals_factory.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/signin/token_service_factory.h"
-#include "chrome/browser/speech/chrome_speech_recognition_preferences.h"
-#include "chrome/browser/speech/extension_api/tts_extension_api.h"
-#include "chrome/browser/spellchecker/spellcheck_factory.h"
-#include "chrome/browser/sync/profile_sync_service_factory.h"
-#include "chrome/browser/themes/theme_service_factory.h"
-#include "chrome/browser/thumbnails/thumbnail_service_factory.h"
-#include "chrome/browser/ui/find_bar/find_bar_state_factory.h"
-#include "chrome/browser/ui/global_error/global_error_service_factory.h"
-#include "chrome/browser/ui/tabs/pinned_tab_service_factory.h"
-#include "chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h"
-#include "chrome/browser/user_style_sheet_watcher_factory.h"
-#include "chrome/browser/webdata/web_data_service_factory.h"
-
-#if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
-#include "chrome/browser/captive_portal/captive_portal_service_factory.h"
-#endif
-
-#if defined(ENABLE_CONFIGURATION_POLICY)
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h"
-#include "chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_factory.h"
-#else
-#include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
-#include "chrome/browser/policy/cloud/user_policy_signin_service_factory.h"
-#endif
-#endif
-
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/extensions/input_method_api.h"
-#include "chrome/browser/chromeos/extensions/media_player_api.h"
-#include "chrome/browser/chromeos/extensions/networking_private_event_router_factory.h"
-#include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
-#if defined(FILE_MANAGER_EXTENSION)
-#include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_api_factory.h"
-#endif
-#endif
-
-#if defined(USE_AURA)
-#include "chrome/browser/ui/gesture_prefs_observer_factory_aura.h"
-#endif
-
-#if !defined(OS_ANDROID)
-#include "chrome/browser/media_galleries/media_galleries_preferences_factory.h"
-#include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_factory.h"
-#endif
+#include "base/bind.h"
+#include "chrome/browser/profiles/profile_keyed_base_factory.h"
+#include "content/public/browser/browser_context.h"
#ifndef NDEBUG
#include "base/command_line.h"
@@ -145,8 +35,8 @@ void ProfileDependencyManager::AddEdge(ProfileKeyedBaseFactory* depended,
dependency_graph_.AddEdge(depended, dependee);
}
-void ProfileDependencyManager::CreateProfileServices(Profile* profile,
- bool is_testing_profile) {
+void ProfileDependencyManager::CreateProfileServices(
+ content::BrowserContext* profile, bool is_testing_profile) {
#ifndef NDEBUG
// Unmark |profile| as dead. This exists because of unit tests, which will
// often have similar stack structures. 0xWhatever might be created, go out
@@ -154,8 +44,6 @@ void ProfileDependencyManager::CreateProfileServices(Profile* profile,
dead_profile_pointers_.erase(profile);
#endif
- AssertFactoriesBuilt();
-
std::vector<DependencyNode*> construction_order;
if (!dependency_graph_.GetConstructionOrder(&construction_order)) {
NOTREACHED();
@@ -184,7 +72,8 @@ void ProfileDependencyManager::CreateProfileServices(Profile* profile,
}
}
-void ProfileDependencyManager::DestroyProfileServices(Profile* profile) {
+void ProfileDependencyManager::DestroyProfileServices(
+ content::BrowserContext* profile) {
std::vector<DependencyNode*> destruction_order;
if (!dependency_graph_.GetDestructionOrder(&destruction_order)) {
NOTREACHED();
@@ -213,7 +102,8 @@ void ProfileDependencyManager::DestroyProfileServices(Profile* profile) {
}
#ifndef NDEBUG
-void ProfileDependencyManager::AssertProfileWasntDestroyed(Profile* profile) {
+void ProfileDependencyManager::AssertProfileWasntDestroyed(
+ content::BrowserContext* profile) {
if (dead_profile_pointers_.find(profile) != dead_profile_pointers_.end()) {
NOTREACHED() << "Attempted to access a Profile that was ShutDown(). This "
<< "is most likely a heap smasher in progress. After "
@@ -228,158 +118,10 @@ ProfileDependencyManager* ProfileDependencyManager::GetInstance() {
return Singleton<ProfileDependencyManager>::get();
}
-ProfileDependencyManager::ProfileDependencyManager() : built_factories_(false) {
+ProfileDependencyManager::ProfileDependencyManager() {
}
-ProfileDependencyManager::~ProfileDependencyManager() {}
-
-// This method gets the instance of each ServiceFactory. We do this so that
-// each ServiceFactory initializes itself and registers its dependencies with
-// the global PreferenceDependencyManager. We need to have a complete
-// dependency graph when we create a profile so we can dispatch the profile
-// creation message to the services that want to create their services at
-// profile creation time.
-//
-// TODO(erg): This needs to be something else. I don't think putting every
-// FooServiceFactory here will scale or is desirable long term.
-void ProfileDependencyManager::AssertFactoriesBuilt() {
- if (built_factories_)
- return;
-
- AboutSigninInternalsFactory::GetInstance();
-
-#if defined(ENABLE_BACKGROUND)
- BackgroundContentsServiceFactory::GetInstance();
-#endif
- BookmarkModelFactory::GetInstance();
-#if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
- captive_portal::CaptivePortalServiceFactory::GetInstance();
-#endif
- ChromeGeolocationPermissionContextFactory::GetInstance();
-#if defined(ENABLE_PRINTING)
- CloudPrintProxyServiceFactory::GetInstance();
-#endif
- CookieSettings::Factory::GetInstance();
-#if defined(ENABLE_NOTIFICATIONS)
- DesktopNotificationServiceFactory::GetInstance();
-#endif
- DownloadServiceFactory::GetInstance();
-#if defined(ENABLE_EXTENSIONS)
- apps::AppRestoreServiceFactory::GetInstance();
- apps::ShortcutManagerFactory::GetInstance();
- autofill::autocheckout::WhitelistManagerFactory::GetInstance();
- extensions::ActivityLogFactory::GetInstance();
- extensions::AlarmManager::GetFactoryInstance();
- extensions::AudioAPI::GetFactoryInstance();
- extensions::BookmarksAPI::GetFactoryInstance();
- extensions::BluetoothAPIFactory::GetInstance();
- extensions::CommandService::GetFactoryInstance();
- extensions::CookiesAPI::GetFactoryInstance();
- extensions::DialAPIFactory::GetInstance();
- extensions::ExtensionActionAPI::GetFactoryInstance();
- extensions::ExtensionSystemFactory::GetInstance();
- extensions::ExtensionWebUIOverrideRegistrar::GetFactoryInstance();
- extensions::FontSettingsAPI::GetFactoryInstance();
- extensions::HistoryAPI::GetFactoryInstance();
- extensions::IdentityAPI::GetFactoryInstance();
- extensions::IdleManagerFactory::GetInstance();
- extensions::InstallTrackerFactory::GetInstance();
-#if defined(TOOLKIT_VIEWS)
- extensions::InputAPI::GetFactoryInstance();
-#endif
-#if defined(OS_CHROMEOS)
- extensions::InputImeAPI::GetFactoryInstance();
- extensions::InputMethodAPI::GetFactoryInstance();
-#endif
- extensions::ManagedModeAPI::GetFactoryInstance();
- extensions::ManagementAPI::GetFactoryInstance();
- extensions::MediaGalleriesPrivateAPI::GetFactoryInstance();
-#if defined(OS_CHROMEOS)
- extensions::MediaPlayerAPI::GetFactoryInstance();
-#endif
- extensions::OmniboxAPI::GetFactoryInstance();
- extensions::PreferenceAPI::GetFactoryInstance();
- extensions::ProcessesAPI::GetFactoryInstance();
- extensions::PushMessagingAPI::GetFactoryInstance();
- extensions::SessionRestoreAPI::GetFactoryInstance();
- extensions::SpellcheckAPI::GetFactoryInstance();
- extensions::StreamsPrivateAPI::GetFactoryInstance();
- extensions::SystemInfoAPI::GetFactoryInstance();
- extensions::SuggestedLinksRegistryFactory::GetInstance();
- extensions::TabCaptureRegistryFactory::GetInstance();
- extensions::TabsWindowsAPI::GetFactoryInstance();
- extensions::TtsAPI::GetFactoryInstance();
- extensions::WebNavigationAPI::GetFactoryInstance();
-#endif // defined(ENABLE_EXTENSIONS)
- FaviconServiceFactory::GetInstance();
-#if defined(OS_CHROMEOS) && defined(FILE_MANAGER_EXTENSION)
- FileBrowserPrivateAPIFactory::GetInstance();
-#endif
- FindBarStateFactory::GetInstance();
- GAIAInfoUpdateServiceFactory::GetInstance();
-#if defined(USE_AURA)
- GesturePrefsObserverFactoryAura::GetInstance();
-#endif
- GlobalErrorServiceFactory::GetInstance();
- GoogleURLTrackerFactory::GetInstance();
- HistoryServiceFactory::GetInstance();
-#if !defined(OS_ANDROID)
- notifier::ChromeNotifierServiceFactory::GetInstance();
- MediaGalleriesPreferencesFactory::GetInstance();
-#endif
-#if defined(OS_CHROMEOS)
- chromeos::NetworkingPrivateEventRouterFactory::GetInstance();
-#endif
- NTPResourceCacheFactory::GetInstance();
- PasswordStoreFactory::GetInstance();
- autofill::PersonalDataManagerFactory::GetInstance();
-#if !defined(OS_ANDROID)
- PinnedTabServiceFactory::GetInstance();
-#endif
-#if defined(ENABLE_PLUGINS)
- PluginPrefsFactory::GetInstance();
-#endif
- policy::ProfilePolicyConnectorFactory::GetInstance();
-#if defined(ENABLE_CONFIGURATION_POLICY)
-#if defined(OS_CHROMEOS)
- policy::UserCloudPolicyManagerFactoryChromeOS::GetInstance();
- policy::UserCloudPolicyTokenForwarderFactory::GetInstance();
-#else
- policy::UserCloudPolicyManagerFactory::GetInstance();
- policy::UserPolicySigninServiceFactory::GetInstance();
-#endif
-#endif
- predictors::AutocompleteActionPredictorFactory::GetInstance();
- predictors::PredictorDatabaseFactory::GetInstance();
- predictors::ResourcePrefetchPredictorFactory::GetInstance();
- prerender::PrerenderManagerFactory::GetInstance();
- prerender::PrerenderLinkManagerFactory::GetInstance();
- ProfileSyncServiceFactory::GetInstance();
- ProtocolHandlerRegistryFactory::GetInstance();
-#if defined(ENABLE_SESSION_SERVICE)
- SessionServiceFactory::GetInstance();
-#endif
- ShortcutsBackendFactory::GetInstance();
- ThumbnailServiceFactory::GetInstance();
- SigninManagerFactory::GetInstance();
-#if defined(ENABLE_INPUT_SPEECH)
- ChromeSpeechRecognitionPreferences::InitializeFactory();
-#endif
- SpellcheckServiceFactory::GetInstance();
- TabRestoreServiceFactory::GetInstance();
- TemplateURLFetcherFactory::GetInstance();
- TemplateURLServiceFactory::GetInstance();
-#if defined(ENABLE_THEMES)
- ThemeServiceFactory::GetInstance();
-#endif
- TokenCacheServiceFactory::GetInstance();
- TokenServiceFactory::GetInstance();
-#if !defined(OS_ANDROID)
- UserStyleSheetWatcherFactory::GetInstance();
-#endif
- WebDataServiceFactory::GetInstance();
-
- built_factories_ = true;
+ProfileDependencyManager::~ProfileDependencyManager() {
}
#ifndef NDEBUG
@@ -391,7 +133,8 @@ std::string ProfileKeyedBaseFactoryGetNodeName(DependencyNode* node) {
} // namespace
-void ProfileDependencyManager::DumpProfileDependencies(Profile* profile) {
+void ProfileDependencyManager::DumpProfileDependencies(
+ content::BrowserContext* profile) {
// Whenever we try to build a destruction ordering, we should also dump a
// dependency graph to "/path/to/profile/profile-dependencies.dot".
if (CommandLine::ForCurrentProcess()->HasSwitch(
diff --git a/chrome/browser/profiles/profile_dependency_manager.h b/chrome/browser/profiles/profile_dependency_manager.h
index 50a76d5..8c216d1 100644
--- a/chrome/browser/profiles/profile_dependency_manager.h
+++ b/chrome/browser/profiles/profile_dependency_manager.h
@@ -12,9 +12,12 @@
#include <set>
#endif
-class Profile;
class ProfileKeyedBaseFactory;
+namespace content {
+class BrowserContext;
+}
+
// A singleton that listens for profile destruction notifications and
// rebroadcasts them to each ProfileKeyedBaseFactory in a safe order based
// on the stated dependencies by each service.
@@ -34,7 +37,8 @@ class ProfileDependencyManager {
// done at this time. (If you want your ProfileKeyedService to be started
// with the Profile, override ProfileKeyedBaseFactory::
// ServiceIsCreatedWithProfile() to return true.)
- void CreateProfileServices(Profile* profile, bool is_testing_profile);
+ void CreateProfileServices(content::BrowserContext* profile,
+ bool is_testing_profile);
// Called by each Profile to alert us that we should destroy services
// associated with it.
@@ -46,13 +50,13 @@ class ProfileDependencyManager {
// - Because this class is a singleton and Singletons can't rely on
// NotificationService in unit tests because NotificationService is
// replaced in many tests.
- void DestroyProfileServices(Profile* profile);
+ void DestroyProfileServices(content::BrowserContext* profile);
#ifndef NDEBUG
// Debugging assertion called as part of GetServiceForProfile in debug
// mode. This will NOTREACHED() whenever the user is trying to access a stale
// Profile*.
- void AssertProfileWasntDestroyed(Profile* profile);
+ void AssertProfileWasntDestroyed(content::BrowserContext* profile);
#endif
static ProfileDependencyManager* GetInstance();
@@ -64,17 +68,10 @@ class ProfileDependencyManager {
ProfileDependencyManager();
virtual ~ProfileDependencyManager();
- // Ensures that all the factories have been created before building the
- // dependency graph.
- void AssertFactoriesBuilt();
-
#ifndef NDEBUG
- void DumpProfileDependencies(Profile* profile);
+ void DumpProfileDependencies(content::BrowserContext* profile);
#endif
- // Whether AssertFactoriesBuilt has been done.
- bool built_factories_;
-
DependencyGraph dependency_graph_;
#ifndef NDEBUG
@@ -82,7 +79,7 @@ class ProfileDependencyManager {
// phase. These pointers are most likely invalid, but we keep track of their
// locations in memory so we can nicely assert if we're asked to do anything
// with them.
- std::set<Profile*> dead_profile_pointers_;
+ std::set<content::BrowserContext*> dead_profile_pointers_;
#endif
};
diff --git a/chrome/browser/profiles/profile_keyed_base_factory.cc b/chrome/browser/profiles/profile_keyed_base_factory.cc
index 5343e16..cf98c94 100644
--- a/chrome/browser/profiles/profile_keyed_base_factory.cc
+++ b/chrome/browser/profiles/profile_keyed_base_factory.cc
@@ -5,10 +5,10 @@
#include "chrome/browser/profiles/profile_keyed_base_factory.h"
#include "base/prefs/pref_service.h"
-#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_dependency_manager.h"
#include "components/user_prefs/pref_registry_syncable.h"
#include "components/user_prefs/user_prefs.h"
+#include "content/public/browser/browser_context.h"
ProfileKeyedBaseFactory::ProfileKeyedBaseFactory(
const char* name, ProfileDependencyManager* manager)
@@ -32,17 +32,15 @@ content::BrowserContext* ProfileKeyedBaseFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
DCHECK(CalledOnValidThread());
- Profile* profile = static_cast<Profile*>(context);
-
#ifndef NDEBUG
- dependency_manager_->AssertProfileWasntDestroyed(profile);
+ dependency_manager_->AssertProfileWasntDestroyed(context);
#endif
// Safe default for the Incognito mode: no service.
- if (profile->IsOffTheRecord())
+ if (context->IsOffTheRecord())
return NULL;
- return profile;
+ return context;
}
void ProfileKeyedBaseFactory::RegisterUserPrefsOnProfile(
diff --git a/chrome/browser/profiles/profile_keyed_base_factory.h b/chrome/browser/profiles/profile_keyed_base_factory.h
index ca11d7a..25e090e 100644
--- a/chrome/browser/profiles/profile_keyed_base_factory.h
+++ b/chrome/browser/profiles/profile_keyed_base_factory.h
@@ -11,7 +11,6 @@
#include "chrome/browser/profiles/dependency_node.h"
class PrefService;
-class Profile;
class ProfileDependencyManager;
namespace content {
diff --git a/chrome/browser/profiles/profile_keyed_service_factory.cc b/chrome/browser/profiles/profile_keyed_service_factory.cc
index b64f073..eab250e 100644
--- a/chrome/browser/profiles/profile_keyed_service_factory.cc
+++ b/chrome/browser/profiles/profile_keyed_service_factory.cc
@@ -8,9 +8,9 @@
#include "base/logging.h"
#include "base/stl_util.h"
-#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_dependency_manager.h"
#include "chrome/browser/profiles/profile_keyed_service.h"
+#include "content/public/browser/browser_context.h"
void ProfileKeyedServiceFactory::SetTestingFactory(
content::BrowserContext* profile, FactoryFunction factory) {
diff --git a/chrome/browser/profiles/profile_keyed_service_factory.h b/chrome/browser/profiles/profile_keyed_service_factory.h
index 973ef6b..78c73ba 100644
--- a/chrome/browser/profiles/profile_keyed_service_factory.h
+++ b/chrome/browser/profiles/profile_keyed_service_factory.h
@@ -12,7 +12,6 @@
#include "chrome/browser/profiles/profile_keyed_base_factory.h"
#include "chrome/browser/profiles/profile_keyed_service.h"
-class Profile;
class ProfileDependencyManager;
class ProfileKeyedService;
diff --git a/chrome/browser/speech/chrome_speech_recognition_preferences.h b/chrome/browser/speech/chrome_speech_recognition_preferences.h
index 8ee5ad4..b18fc2a 100644
--- a/chrome/browser/speech/chrome_speech_recognition_preferences.h
+++ b/chrome/browser/speech/chrome_speech_recognition_preferences.h
@@ -17,6 +17,7 @@
#include "content/public/browser/speech_recognition_preferences.h"
class PrefService;
+class Profile;
namespace base {
class ListValue;
diff --git a/chrome/browser/spellchecker/spellcheck_factory.h b/chrome/browser/spellchecker/spellcheck_factory.h
index 78d05a8..9f1de12 100644
--- a/chrome/browser/spellchecker/spellcheck_factory.h
+++ b/chrome/browser/spellchecker/spellcheck_factory.h
@@ -10,6 +10,7 @@
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
class SpellcheckService;
+class Profile;
// Entry into the SpellCheck system.
//
diff --git a/chrome/browser/ui/global_error/global_error_service_factory.h b/chrome/browser/ui/global_error/global_error_service_factory.h
index 1936e2c..badb03e 100644
--- a/chrome/browser/ui/global_error/global_error_service_factory.h
+++ b/chrome/browser/ui/global_error/global_error_service_factory.h
@@ -11,6 +11,7 @@
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
class GlobalErrorService;
+class Profile;
// Singleton that owns all GlobalErrorService and associates them with
// Profiles. Listens for the Profile's destruction notification and cleans up
diff --git a/chrome/browser/ui/webui/ntp/app_resource_cache_factory.h b/chrome/browser/ui/webui/ntp/app_resource_cache_factory.h
index fd2eb29..1b53d50 100644
--- a/chrome/browser/ui/webui/ntp/app_resource_cache_factory.h
+++ b/chrome/browser/ui/webui/ntp/app_resource_cache_factory.h
@@ -9,6 +9,7 @@
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
class NTPResourceCache;
+class Profile;
// Singleton that owns NTPResourceCaches used by the apps launcher page and
// associates them with Profiles. Listens for the Profile's destruction
diff --git a/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h b/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h
index 16d4319..8d7145b 100644
--- a/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h
+++ b/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h
@@ -9,6 +9,7 @@
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
class NTPResourceCache;
+class Profile;
// Singleton that owns the NTPResourceCaches used by the NTP and associates them
// with Profiles. Listens for the Profile's destruction notification and cleans
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index c6471fa..c70d1de9 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1546,6 +1546,8 @@
'browser/profiles/avatar_menu_model_observer.h',
'browser/profiles/bookmark_model_loaded_observer.cc',
'browser/profiles/bookmark_model_loaded_observer.h',
+ 'browser/profiles/chrome_browser_main_extra_parts_profiles.cc',
+ 'browser/profiles/chrome_browser_main_extra_parts_profiles.h',
'browser/profiles/chrome_version_service.cc',
'browser/profiles/chrome_version_service.h',
'browser/profiles/dependency_graph.cc',
diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc
index 2d4a400..a8b6e85 100644
--- a/chrome/test/base/testing_profile.cc
+++ b/chrome/test/base/testing_profile.cc
@@ -44,6 +44,7 @@
#include "chrome/browser/prefs/browser_prefs.h"
#include "chrome/browser/prefs/pref_service_syncable.h"
#include "chrome/browser/prerender/prerender_manager.h"
+#include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h"
#include "chrome/browser/profiles/profile_dependency_manager.h"
#include "chrome/browser/profiles/storage_partition_descriptor.h"
#include "chrome/browser/search_engines/template_url_fetcher_factory.h"
@@ -277,6 +278,11 @@ void TestingProfile::CreateTempProfileDir() {
}
void TestingProfile::Init() {
+ // Normally this would happen during browser startup, but for tests
+ // we need to trigger creation of Profile-related services.
+ ChromeBrowserMainExtraPartsProfiles::
+ EnsureProfileKeyedServiceFactoriesBuilt();
+
if (prefs_.get())
components::UserPrefs::Set(this, prefs_.get());
else