diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-24 00:41:43 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-24 00:41:43 +0000 |
commit | 4f6944c63cd597ea42968a03e1a54623a2b914c3 (patch) | |
tree | 8fdfd6c5021bc8f3e76184a36a3cfcb9625d70bf | |
parent | f069e841e7f515bde48bb5f5c9203db4cad3b6d6 (diff) | |
download | chromium_src-4f6944c63cd597ea42968a03e1a54623a2b914c3.zip chromium_src-4f6944c63cd597ea42968a03e1a54623a2b914c3.tar.gz chromium_src-4f6944c63cd597ea42968a03e1a54623a2b914c3.tar.bz2 |
Profiles: Add a --dump-profile-graph option when !NDEBUG.
--dump-profile-graph will create a text file in the profile directory
in graphviz format. The graph is the dumped dependency graph.
BUG=none
R=mirandac
TBR=jhawkins,sky,abodenha,tim
Review URL: http://codereview.chromium.org/9200017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118765 0039d316-1c4b-4281-b951-d872f2087c98
28 files changed, 163 insertions, 55 deletions
diff --git a/chrome/browser/autocomplete/network_action_predictor_factory.cc b/chrome/browser/autocomplete/network_action_predictor_factory.cc index 0f0611a..252e920 100644 --- a/chrome/browser/autocomplete/network_action_predictor_factory.cc +++ b/chrome/browser/autocomplete/network_action_predictor_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -21,7 +21,8 @@ NetworkActionPredictorFactory* NetworkActionPredictorFactory::GetInstance() { } NetworkActionPredictorFactory::NetworkActionPredictorFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("NetworkActionPredictor", + ProfileDependencyManager::GetInstance()) { // TODO(erg): When HistoryService is PKSFized, uncomment this. // DependsOn(HistoryServiceFactory::GetInstance()); } diff --git a/chrome/browser/autofill/personal_data_manager_factory.cc b/chrome/browser/autofill/personal_data_manager_factory.cc index 1b91b44..6ea4ded 100644 --- a/chrome/browser/autofill/personal_data_manager_factory.cc +++ b/chrome/browser/autofill/personal_data_manager_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -22,7 +22,8 @@ PersonalDataManagerFactory* PersonalDataManagerFactory::GetInstance() { } PersonalDataManagerFactory::PersonalDataManagerFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("PersonalDataManager", + ProfileDependencyManager::GetInstance()) { // TODO(erg): For Shutdown() order, we need to: // DependsOn(WebDataServiceFactory::GetInstance()); } diff --git a/chrome/browser/background/background_contents_service_factory.cc b/chrome/browser/background/background_contents_service_factory.cc index 026f6c3..9157af6 100644 --- a/chrome/browser/background/background_contents_service_factory.cc +++ b/chrome/browser/background/background_contents_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -25,7 +25,8 @@ BackgroundContentsServiceFactory* BackgroundContentsServiceFactory:: } BackgroundContentsServiceFactory::BackgroundContentsServiceFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("BackgroundContentsService", + ProfileDependencyManager::GetInstance()) { } BackgroundContentsServiceFactory::~BackgroundContentsServiceFactory() { diff --git a/chrome/browser/content_settings/cookie_settings.cc b/chrome/browser/content_settings/cookie_settings.cc index 5d929ce..6a18498 100644 --- a/chrome/browser/content_settings/cookie_settings.cc +++ b/chrome/browser/content_settings/cookie_settings.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -74,7 +74,8 @@ CookieSettingsWrapper* CookieSettings::Factory::GetWrapperForProfile( } CookieSettings::Factory::Factory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("CookieSettings", + ProfileDependencyManager::GetInstance()) { } ProfileKeyedService* CookieSettings::Factory::BuildServiceInstanceFor( diff --git a/chrome/browser/download/download_service_factory.cc b/chrome/browser/download/download_service_factory.cc index 473597c..c011fca 100644 --- a/chrome/browser/download/download_service_factory.cc +++ b/chrome/browser/download/download_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -20,8 +20,8 @@ DownloadServiceFactory* DownloadServiceFactory::GetInstance() { } DownloadServiceFactory::DownloadServiceFactory() - : ProfileKeyedServiceFactory( - ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("DownloadService", + ProfileDependencyManager::GetInstance()) { // TODO(rdsmith): For Shutdown() order we need to: // DependsOn(HistoryServiceDataFactory::GetInstance()); } diff --git a/chrome/browser/intents/web_intents_registry_factory.cc b/chrome/browser/intents/web_intents_registry_factory.cc index f582842..2b22286 100644 --- a/chrome/browser/intents/web_intents_registry_factory.cc +++ b/chrome/browser/intents/web_intents_registry_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -14,7 +14,8 @@ WebIntentsRegistry* WebIntentsRegistryFactory::GetForProfile(Profile* profile) { } WebIntentsRegistryFactory::WebIntentsRegistryFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("WebIntentsRegistry", + ProfileDependencyManager::GetInstance()) { // TODO(erg): For Shutdown() order, we need to: // DependsOn(WebDataServiceFactory::GetInstance()); // DependsOn(ExtensionServiceFactory::GetInstance()); diff --git a/chrome/browser/notifications/desktop_notification_service_factory.cc b/chrome/browser/notifications/desktop_notification_service_factory.cc index f4402ab..f3d0b3b 100644 --- a/chrome/browser/notifications/desktop_notification_service_factory.cc +++ b/chrome/browser/notifications/desktop_notification_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -27,7 +27,8 @@ DesktopNotificationServiceFactory* DesktopNotificationServiceFactory:: } DesktopNotificationServiceFactory::DesktopNotificationServiceFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("DesktopNotificationService", + ProfileDependencyManager::GetInstance()) { } DesktopNotificationServiceFactory::~DesktopNotificationServiceFactory() { diff --git a/chrome/browser/plugin_prefs_factory.cc b/chrome/browser/plugin_prefs_factory.cc index f43d261..588f974 100644 --- a/chrome/browser/plugin_prefs_factory.cc +++ b/chrome/browser/plugin_prefs_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -48,7 +48,8 @@ void PluginPrefsFactory::ForceRegisterPrefsForTest(PrefService* prefs) { } PluginPrefsFactory::PluginPrefsFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("PluginPrefs", + ProfileDependencyManager::GetInstance()) { } PluginPrefsFactory::~PluginPrefsFactory() {} diff --git a/chrome/browser/prerender/prerender_manager_factory.cc b/chrome/browser/prerender/prerender_manager_factory.cc index d759df4..8f0c6f3 100644 --- a/chrome/browser/prerender/prerender_manager_factory.cc +++ b/chrome/browser/prerender/prerender_manager_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -30,7 +30,8 @@ PrerenderManagerFactory* PrerenderManagerFactory::GetInstance() { } PrerenderManagerFactory::PrerenderManagerFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("PrerenderManager", + ProfileDependencyManager::GetInstance()) { } PrerenderManagerFactory::~PrerenderManagerFactory() { diff --git a/chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.cc b/chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.cc index fe8126f..5934c59 100644 --- a/chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.cc +++ b/chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -19,8 +19,8 @@ CloudPrintProxyServiceFactory* CloudPrintProxyServiceFactory::GetInstance() { } CloudPrintProxyServiceFactory::CloudPrintProxyServiceFactory() - : ProfileKeyedServiceFactory( - ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("CloudPrintProxyService", + ProfileDependencyManager::GetInstance()) { } CloudPrintProxyServiceFactory::~CloudPrintProxyServiceFactory() { diff --git a/chrome/browser/profiles/profile_dependency_manager.cc b/chrome/browser/profiles/profile_dependency_manager.cc index d6617e5..0d53c7b 100644 --- a/chrome/browser/profiles/profile_dependency_manager.cc +++ b/chrome/browser/profiles/profile_dependency_manager.cc @@ -32,6 +32,12 @@ #include "chrome/browser/ui/global_error_service_factory.h" #include "chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h" +#ifndef NDEBUG +#include "base/command_line.h" +#include "base/file_util.h" +#include "chrome/common/chrome_switches.h" +#endif + class Profile; void ProfileDependencyManager::AddComponent( @@ -78,7 +84,7 @@ void ProfileDependencyManager::CreateProfileServices(Profile* profile, AssertFactoriesBuilt(); if (destruction_order_.empty()) - BuildDestructionOrder(); + BuildDestructionOrder(profile); // Iterate in reverse destruction order for creation. for (std::vector<ProfileKeyedServiceFactory*>::reverse_iterator rit = @@ -101,7 +107,7 @@ void ProfileDependencyManager::CreateProfileServices(Profile* profile, void ProfileDependencyManager::DestroyProfileServices(Profile* profile) { if (destruction_order_.empty()) - BuildDestructionOrder(); + BuildDestructionOrder(profile); for (std::vector<ProfileKeyedServiceFactory*>::const_iterator it = destruction_order_.begin(); it != destruction_order_.end(); ++it) { @@ -182,7 +188,19 @@ void ProfileDependencyManager::AssertFactoriesBuilt() { built_factories_ = true; } -void ProfileDependencyManager::BuildDestructionOrder() { +void ProfileDependencyManager::BuildDestructionOrder(Profile* profile) { +#if !defined(NDEBUG) + // 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( + switches::kDumpProfileDependencyGraph)) { + FilePath dot_file = + profile->GetPath().AppendASCII("profile-dependencies.dot"); + std::string contents = DumpGraphvizDependency(); + file_util::WriteFile(dot_file, contents.c_str(), contents.size()); + } +#endif + // Step 1: Build a set of nodes with no incoming edges. std::deque<ProfileKeyedServiceFactory*> queue; std::copy(all_components_.begin(), @@ -233,3 +251,50 @@ void ProfileDependencyManager::BuildDestructionOrder() { std::reverse(output.begin(), output.end()); destruction_order_ = output; } + +#if !defined(NDEBUG) + +std::string ProfileDependencyManager::DumpGraphvizDependency() { + std::string result("digraph {\n"); + + // Make a copy of all components. + std::deque<ProfileKeyedServiceFactory*> components; + std::copy(all_components_.begin(), + all_components_.end(), + std::back_inserter(components)); + + // State all dependencies and remove |second| so we don't generate an + // implicit dependency on the Profile hard coded node. + std::deque<ProfileKeyedServiceFactory*>::iterator components_end = + components.end(); + result.append(" /* Dependencies */\n"); + for (EdgeMap::const_iterator it = edges_.begin(); it != edges_.end(); ++it) { + result.append(" "); + result.append(it->second->name()); + result.append(" -> "); + result.append(it->first->name()); + result.append(";\n"); + + components_end = std::remove(components.begin(), components_end, + it->second); + } + components.erase(components_end, components.end()); + + // Every node that doesn't depend on anything else will implicitly depend on + // the Profile. + result.append("\n /* Toplevel attachments */\n"); + for (std::deque<ProfileKeyedServiceFactory*>::const_iterator it = + components.begin(); it != components.end(); ++it) { + result.append(" "); + result.append((*it)->name()); + result.append(" -> Profile;\n"); + } + + result.append("\n /* Toplevel profile */\n"); + result.append(" Profile [shape=box];\n"); + + result.append("}\n"); + return result; +} + +#endif diff --git a/chrome/browser/profiles/profile_dependency_manager.h b/chrome/browser/profiles/profile_dependency_manager.h index b0b3ec9..3ad0634 100644 --- a/chrome/browser/profiles/profile_dependency_manager.h +++ b/chrome/browser/profiles/profile_dependency_manager.h @@ -12,6 +12,7 @@ #ifndef NDEBUG #include <set> +#include <string> #endif class Profile; @@ -75,7 +76,12 @@ class ProfileDependencyManager { // Using the dependency graph defined in |edges_|, fills |destruction_order_| // so that Observe() can notify each ProfileKeyedServiceFactory in order. - void BuildDestructionOrder(); + void BuildDestructionOrder(Profile* profile); + +#ifndef NDEBUG + // Creates a dot file with our dependency information. + std::string DumpGraphvizDependency(); +#endif std::vector<ProfileKeyedServiceFactory*> all_components_; diff --git a/chrome/browser/profiles/profile_dependency_manager_unittest.cc b/chrome/browser/profiles/profile_dependency_manager_unittest.cc index 3b99963..3a113ea 100644 --- a/chrome/browser/profiles/profile_dependency_manager_unittest.cc +++ b/chrome/browser/profiles/profile_dependency_manager_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -36,7 +36,7 @@ class TestService : public ProfileKeyedServiceFactory { TestService(const std::string& name, std::vector<std::string>* fill_on_shutdown, ProfileDependencyManager* manager) - : ProfileKeyedServiceFactory(manager), + : ProfileKeyedServiceFactory("TestService", manager), name_(name), fill_on_shutdown_(fill_on_shutdown) { } diff --git a/chrome/browser/profiles/profile_keyed_service_factory.cc b/chrome/browser/profiles/profile_keyed_service_factory.cc index 886308d..88b187e 100644 --- a/chrome/browser/profiles/profile_keyed_service_factory.cc +++ b/chrome/browser/profiles/profile_keyed_service_factory.cc @@ -72,8 +72,12 @@ void ProfileKeyedServiceFactory::RegisterUserPrefsOnProfile(Profile* profile) { } ProfileKeyedServiceFactory::ProfileKeyedServiceFactory( - ProfileDependencyManager* manager) - : dependency_manager_(manager) { + const char* name, ProfileDependencyManager* manager) + : dependency_manager_(manager) +#ifndef NDEBUG + , service_name_(name) +#endif +{ dependency_manager_->AddComponent(this); } diff --git a/chrome/browser/profiles/profile_keyed_service_factory.h b/chrome/browser/profiles/profile_keyed_service_factory.h index ab5eceb..30c99c1 100644 --- a/chrome/browser/profiles/profile_keyed_service_factory.h +++ b/chrome/browser/profiles/profile_keyed_service_factory.h @@ -46,6 +46,11 @@ class ProfileKeyedServiceFactory { // attached to a single |profile|. void RegisterUserPrefsOnProfile(Profile* profile); +#ifndef NDEBUG + // Returns our name. We don't keep track of this in release mode. + const char* name() const { return service_name_; } +#endif + protected: // ProfileKeyedServiceFactories must communicate with a // ProfileDependencyManager. For all non-test code, write your subclass @@ -53,9 +58,11 @@ class ProfileKeyedServiceFactory { // // MyServiceFactory::MyServiceFactory() // : ProfileKeyedServiceFactory( + // "MyService", // ProfileDependencyManager::GetInstance()) // {} - explicit ProfileKeyedServiceFactory(ProfileDependencyManager* manager); + explicit ProfileKeyedServiceFactory(const char* name, + ProfileDependencyManager* manager); virtual ~ProfileKeyedServiceFactory(); // Common implementation that maps |profile| to some service object. Deals @@ -132,6 +139,13 @@ class ProfileKeyedServiceFactory { // this will always be ProfileDependencyManager::GetInstance(), but unit // tests will want to use their own copy. ProfileDependencyManager* dependency_manager_; + +#if !defined(NDEBUG) + // A static string passed in to our constructor. Should be unique across all + // services. This is used only for debugging in debug mode. (We can print + // pretty graphs with GraphViz with this information.) + const char* service_name_; +#endif }; #endif // CHROME_BROWSER_PROFILES_PROFILE_KEYED_SERVICE_FACTORY_H_ diff --git a/chrome/browser/protector/protector_service_factory.cc b/chrome/browser/protector/protector_service_factory.cc index c11cbdc..504673c 100644 --- a/chrome/browser/protector/protector_service_factory.cc +++ b/chrome/browser/protector/protector_service_factory.cc @@ -23,7 +23,8 @@ ProtectorServiceFactory* ProtectorServiceFactory::GetInstance() { } ProtectorServiceFactory::ProtectorServiceFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("ProtectorService", + ProfileDependencyManager::GetInstance()) { DependsOn(GlobalErrorServiceFactory::GetInstance()); DependsOn(TemplateURLServiceFactory::GetInstance()); } diff --git a/chrome/browser/search_engines/template_url_service_factory.cc b/chrome/browser/search_engines/template_url_service_factory.cc index 6733c39..cd5a4f7 100644 --- a/chrome/browser/search_engines/template_url_service_factory.cc +++ b/chrome/browser/search_engines/template_url_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -19,8 +19,8 @@ TemplateURLServiceFactory* TemplateURLServiceFactory::GetInstance() { } TemplateURLServiceFactory::TemplateURLServiceFactory() - : ProfileKeyedServiceFactory( - ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("TemplateURLServiceFactory", + ProfileDependencyManager::GetInstance()) { // TODO(erg): For Shutdown() order, we need to: // DependsOn(WebDataServiceFactory::GetInstance()); // DependsOn(HistoryService::GetInstance()); diff --git a/chrome/browser/sessions/session_service_factory.cc b/chrome/browser/sessions/session_service_factory.cc index 8f1ba30..3705d93 100644 --- a/chrome/browser/sessions/session_service_factory.cc +++ b/chrome/browser/sessions/session_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -40,8 +40,8 @@ SessionServiceFactory* SessionServiceFactory::GetInstance() { } SessionServiceFactory::SessionServiceFactory() - : ProfileKeyedServiceFactory( - ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("SessionService", + ProfileDependencyManager::GetInstance()) { } SessionServiceFactory::~SessionServiceFactory() { diff --git a/chrome/browser/sessions/tab_restore_service_factory.cc b/chrome/browser/sessions/tab_restore_service_factory.cc index b35ffab..e0fea58 100644 --- a/chrome/browser/sessions/tab_restore_service_factory.cc +++ b/chrome/browser/sessions/tab_restore_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -25,8 +25,8 @@ TabRestoreServiceFactory* TabRestoreServiceFactory::GetInstance() { } TabRestoreServiceFactory::TabRestoreServiceFactory() - : ProfileKeyedServiceFactory( - ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("TabRestoreService", + ProfileDependencyManager::GetInstance()) { } TabRestoreServiceFactory::~TabRestoreServiceFactory() { diff --git a/chrome/browser/signin/signin_manager_factory.cc b/chrome/browser/signin/signin_manager_factory.cc index c32ba9f..0ded6ee 100644 --- a/chrome/browser/signin/signin_manager_factory.cc +++ b/chrome/browser/signin/signin_manager_factory.cc @@ -10,7 +10,8 @@ #include "chrome/common/pref_names.h" SigninManagerFactory::SigninManagerFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("SigninManager", + ProfileDependencyManager::GetInstance()) { // TODO(atwilson): SigninManager depends on TokenService - when this is // converted to the ProfileKeyedService framework, uncomment this dependency. // DependsOn(TokenServiceFactory::GetInstance()); diff --git a/chrome/browser/speech/speech_input_extension_manager.cc b/chrome/browser/speech/speech_input_extension_manager.cc index 146d2993..ec1aebc 100644 --- a/chrome/browser/speech/speech_input_extension_manager.cc +++ b/chrome/browser/speech/speech_input_extension_manager.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -118,7 +118,8 @@ SpeechInputExtensionManagerWrapper* } SpeechInputExtensionManager::Factory::Factory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("SpeechInputExtensionManager", + ProfileDependencyManager::GetInstance()) { } SpeechInputExtensionManager::Factory::~Factory() { diff --git a/chrome/browser/sync/profile_sync_service_factory.cc b/chrome/browser/sync/profile_sync_service_factory.cc index 451aedc..fa225a0 100644 --- a/chrome/browser/sync/profile_sync_service_factory.cc +++ b/chrome/browser/sync/profile_sync_service_factory.cc @@ -37,7 +37,8 @@ ProfileSyncService* ProfileSyncServiceFactory::GetForProfile( } ProfileSyncServiceFactory::ProfileSyncServiceFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("ProfileSyncService", + ProfileDependencyManager::GetInstance()) { // The ProfileSyncService depends on various SyncableServices being around // when it is shut down. Specify those dependencies here to build the proper diff --git a/chrome/browser/tabs/pinned_tab_service_factory.cc b/chrome/browser/tabs/pinned_tab_service_factory.cc index 70407ad..e8e8daa 100644 --- a/chrome/browser/tabs/pinned_tab_service_factory.cc +++ b/chrome/browser/tabs/pinned_tab_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -19,7 +19,8 @@ void PinnedTabServiceFactory::InitForProfile(Profile* profile) { } PinnedTabServiceFactory::PinnedTabServiceFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("PinnedTabService", + ProfileDependencyManager::GetInstance()) { } PinnedTabServiceFactory::~PinnedTabServiceFactory() { diff --git a/chrome/browser/themes/theme_service_factory.cc b/chrome/browser/themes/theme_service_factory.cc index 965eede..5c73a05 100644 --- a/chrome/browser/themes/theme_service_factory.cc +++ b/chrome/browser/themes/theme_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -35,8 +35,8 @@ ThemeServiceFactory* ThemeServiceFactory::GetInstance() { } ThemeServiceFactory::ThemeServiceFactory() - : ProfileKeyedServiceFactory( - ProfileDependencyManager::GetInstance()) + : ProfileKeyedServiceFactory("ThemeService", + ProfileDependencyManager::GetInstance()) {} ThemeServiceFactory::~ThemeServiceFactory() {} diff --git a/chrome/browser/ui/global_error_service_factory.cc b/chrome/browser/ui/global_error_service_factory.cc index e2c69a5..fc7fb57 100644 --- a/chrome/browser/ui/global_error_service_factory.cc +++ b/chrome/browser/ui/global_error_service_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -19,7 +19,8 @@ GlobalErrorServiceFactory* GlobalErrorServiceFactory::GetInstance() { } GlobalErrorServiceFactory::GlobalErrorServiceFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { + : ProfileKeyedServiceFactory("GlobalErrorService", + ProfileDependencyManager::GetInstance()) { } GlobalErrorServiceFactory::~GlobalErrorServiceFactory() { diff --git a/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.cc b/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.cc index d7d047c..ac1a25a 100644 --- a/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.cc +++ b/chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -20,8 +20,8 @@ NTPResourceCacheFactory* NTPResourceCacheFactory::GetInstance() { } NTPResourceCacheFactory::NTPResourceCacheFactory() - : ProfileKeyedServiceFactory( - ProfileDependencyManager::GetInstance()) + : ProfileKeyedServiceFactory("NTPResourceCache", + ProfileDependencyManager::GetInstance()) {} NTPResourceCacheFactory::~NTPResourceCacheFactory() {} diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 63988f8..c61f073 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc @@ -1348,6 +1348,10 @@ const char kWebSocketLiveExperimentHost[] = "websocket-live-experiment-host"; // Enables overriding the path of file manager extension. const char kFileManagerExtensionPath[] = "filemgr-ext-path"; + +// Dumps dependency information about our profile services into a dot file in +// the profile directory. +const char kDumpProfileDependencyGraph[] = "dump-profile-graph"; #endif // NDEBUG // Controls print preview in the browser process. diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index efd81cb..f061f02 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h @@ -385,6 +385,7 @@ extern const char kTouchDevices[]; extern const char kOAuthHostUrl[]; extern const char kWebSocketLiveExperimentHost[]; extern const char kFileManagerExtensionPath[]; +extern const char kDumpProfileDependencyGraph[]; #endif #if defined(GOOGLE_CHROME_BUILD) |