Index: chrome/browser/services/gcm/gcm_profile_service_factory.cc |
diff --git a/chrome/browser/services/gcm/gcm_profile_service_factory.cc b/chrome/browser/services/gcm/gcm_profile_service_factory.cc |
index 561a2fd272166a24798efb71ae4edd7426ea994b..dbbe54c16587226cf164e6856048e56f10e0dc4a 100644 |
--- a/chrome/browser/services/gcm/gcm_profile_service_factory.cc |
+++ b/chrome/browser/services/gcm/gcm_profile_service_factory.cc |
@@ -7,10 +7,14 @@ |
#include "base/memory/scoped_ptr.h" |
#include "chrome/browser/profiles/incognito_helpers.h" |
#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/services/gcm/gcm_profile_service.h" |
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
#include "chrome/browser/signin/signin_manager_factory.h" |
+#include "chrome/common/channel_info.h" |
+#include "components/gcm_driver/gcm_profile_service.h" |
#include "components/keyed_service/content/browser_context_dependency_manager.h" |
+#include "components/signin/core/browser/profile_identity_provider.h" |
+#include "components/signin/core/browser/signin_manager.h" |
+#include "content/public/browser/browser_thread.h" |
#if !defined(OS_ANDROID) |
#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" |
@@ -51,12 +55,31 @@ GCMProfileServiceFactory::~GCMProfileServiceFactory() { |
KeyedService* GCMProfileServiceFactory::BuildServiceInstanceFor( |
content::BrowserContext* context) const { |
+ Profile* profile = Profile::FromBrowserContext(context); |
+ DCHECK(!profile->IsOffTheRecord()); |
+ |
+ base::SequencedWorkerPool* worker_pool = |
+ content::BrowserThread::GetBlockingPool(); |
+ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner( |
+ worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( |
+ worker_pool->GetSequenceToken(), |
+ base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
#if defined(OS_ANDROID) |
- return new GCMProfileService(Profile::FromBrowserContext(context)); |
+ return new GCMProfileService(profile->GetPath(), blocking_task_runner); |
#else |
return new GCMProfileService( |
- Profile::FromBrowserContext(context), |
- scoped_ptr<GCMClientFactory>(new GCMClientFactory)); |
+ profile->GetPrefs(), profile->GetPath(), profile->GetRequestContext(), |
+ chrome::GetChannel(), |
+ scoped_ptr<ProfileIdentityProvider>(new ProfileIdentityProvider( |
+ SigninManagerFactory::GetForProfile(profile), |
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile), |
+ LoginUIServiceFactory::GetShowLoginPopupCallbackForProfile(profile))), |
+ scoped_ptr<GCMClientFactory>(new GCMClientFactory), |
+ content::BrowserThread::GetMessageLoopProxyForThread( |
+ content::BrowserThread::UI), |
+ content::BrowserThread::GetMessageLoopProxyForThread( |
+ content::BrowserThread::IO), |
+ blocking_task_runner); |
#endif |
} |