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( |