Index: chrome/browser/android/blimp/blimp_client_context_factory.cc |
diff --git a/chrome/browser/android/blimp/blimp_client_context_factory.cc b/chrome/browser/android/blimp/blimp_client_context_factory.cc |
index f070d66dc70599e0bdac4d5e49ebfd7d6a267e2e..6e6190d9e22d9ad33fba127431e4c3a107ce59b2 100644 |
--- a/chrome/browser/android/blimp/blimp_client_context_factory.cc |
+++ b/chrome/browser/android/blimp/blimp_client_context_factory.cc |
@@ -4,10 +4,16 @@ |
#include "chrome/browser/android/blimp/blimp_client_context_factory.h" |
+#include "base/memory/ptr_util.h" |
#include "base/memory/singleton.h" |
#include "base/supports_user_data.h" |
#include "blimp/client/public/blimp_client_context.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
+#include "chrome/browser/signin/signin_manager_factory.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_context.h" |
#include "content/public/browser/browser_thread.h" |
@@ -27,15 +33,30 @@ BlimpClientContextFactory::GetForBrowserContext( |
BlimpClientContextFactory::BlimpClientContextFactory() |
: BrowserContextKeyedServiceFactory( |
"blimp::client::BlimpClientContext", |
- BrowserContextDependencyManager::GetInstance()) {} |
+ BrowserContextDependencyManager::GetInstance()) { |
+} |
BlimpClientContextFactory::~BlimpClientContextFactory() {} |
KeyedService* BlimpClientContextFactory::BuildServiceInstanceFor( |
content::BrowserContext* context) const { |
- return blimp::client::BlimpClientContext::Create( |
+ Profile* profile = static_cast<Profile*>(context); |
+ |
+ KeyedService* blimp_context = blimp::client::BlimpClientContext::Create( |
content::BrowserThread::GetTaskRunnerForThread( |
content::BrowserThread::IO)); |
+ |
+ // Create OAuth2 token authenticator. |
+ std::unique_ptr<IdentityProvider> identity_provider = |
+ base::WrapUnique<IdentityProvider>(new ProfileIdentityProvider( |
+ SigninManagerFactory::GetForProfile(profile), |
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile), |
+ base::Closure())); |
+ |
+ static_cast<blimp::client::BlimpClientContext*>(blimp_context) |
+ ->CreateAuthenticator(std::move(identity_provider)); |
+ |
+ return blimp_context; |
} |
content::BrowserContext* BlimpClientContextFactory::GetBrowserContextToUse( |