Chromium Code Reviews| Index: chrome/browser/history/history_service_factory.cc |
| diff --git a/chrome/browser/history/history_service_factory.cc b/chrome/browser/history/history_service_factory.cc |
| index f871104c706be657fe280104870650ba27c89302..90c9271f37487362ad615d8d5973456005638415 100644 |
| --- a/chrome/browser/history/history_service_factory.cc |
| +++ b/chrome/browser/history/history_service_factory.cc |
| @@ -6,12 +6,15 @@ |
| #include "base/prefs/pref_service.h" |
| #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| +#include "chrome/browser/history/chrome_history_client.h" |
| #include "chrome/browser/history/history_service.h" |
| #include "chrome/browser/profiles/incognito_helpers.h" |
| #include "chrome/common/pref_names.h" |
| #include "components/bookmarks/core/browser/bookmark_model.h" |
| #include "components/keyed_service/content/browser_context_dependency_manager.h" |
| +using history::ChromeHistoryClient; |
| + |
| // static |
| HistoryService* HistoryServiceFactory::GetForProfile( |
| Profile* profile, Profile::ServiceAccessType sat) { |
| @@ -20,8 +23,9 @@ HistoryService* HistoryServiceFactory::GetForProfile( |
| sat != Profile::EXPLICIT_ACCESS) |
| return NULL; |
| - return static_cast<HistoryService*>( |
| + ChromeHistoryClient* history_client = static_cast<ChromeHistoryClient*>( |
| GetInstance()->GetServiceForBrowserContext(profile, true)); |
| + return history_client ? history_client->history_service() : NULL; |
| } |
| // static |
| @@ -33,15 +37,17 @@ HistoryServiceFactory::GetForProfileIfExists( |
| sat != Profile::EXPLICIT_ACCESS) |
| return NULL; |
| - return static_cast<HistoryService*>( |
| + ChromeHistoryClient* history_client = static_cast<ChromeHistoryClient*>( |
| GetInstance()->GetServiceForBrowserContext(profile, false)); |
| + return history_client ? history_client->history_service() : NULL; |
| } |
| // static |
| HistoryService* |
| HistoryServiceFactory::GetForProfileWithoutCreating(Profile* profile) { |
| - return static_cast<HistoryService*>( |
| + ChromeHistoryClient* history_client = static_cast<ChromeHistoryClient*>( |
| GetInstance()->GetServiceForBrowserContext(profile, false)); |
| + return history_client ? history_client->history_service() : NULL; |
| } |
| // static |
| @@ -67,12 +73,12 @@ HistoryServiceFactory::~HistoryServiceFactory() { |
| KeyedService* HistoryServiceFactory::BuildServiceInstanceFor( |
| content::BrowserContext* context) const { |
| Profile* profile = static_cast<Profile*>(context); |
| - HistoryService* history_service = new HistoryService(profile); |
| - if (!history_service->Init(profile->GetPath(), |
| - BookmarkModelFactory::GetForProfile(profile))) { |
| + ChromeHistoryClient* history_client = new ChromeHistoryClient(profile); |
| + HistoryService* history_service = history_client->history_service(); |
| + if (!history_service->Init(profile->GetPath())) { |
| return NULL; |
|
Jiang Jiang
2014/05/19 21:51:50
Isn't it leaking |history_client|?
sdefresne
2014/05/23 10:02:49
It was originally leaking the history_service. Add
|
| } |
| - return history_service; |
| + return history_client; |
| } |
| content::BrowserContext* HistoryServiceFactory::GetBrowserContextToUse( |