Index: chrome/browser/invalidation/invalidation_service_factory.cc |
diff --git a/chrome/browser/invalidation/invalidation_service_factory.cc b/chrome/browser/invalidation/invalidation_service_factory.cc |
index 32bbaf5dc225964405619e7dc6ce03bfeb6eb75a..da86a84e52a637b83ba7d5fb02eeea18bdad95fe 100644 |
--- a/chrome/browser/invalidation/invalidation_service_factory.cc |
+++ b/chrome/browser/invalidation/invalidation_service_factory.cc |
@@ -5,23 +5,33 @@ |
#include "chrome/browser/invalidation/invalidation_service_factory.h" |
#include "base/prefs/pref_registry.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/invalidation/fake_invalidation_service.h" |
#include "chrome/browser/invalidation/invalidation_service.h" |
#include "chrome/browser/invalidation/invalidation_service_android.h" |
#include "chrome/browser/invalidation/invalidator_storage.h" |
#include "chrome/browser/invalidation/p2p_invalidation_service.h" |
+#include "chrome/browser/invalidation/profile_invalidation_auth_provider.h" |
#include "chrome/browser/invalidation/ticl_invalidation_service.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/signin/profile_oauth2_token_service.h" |
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
#include "chrome/browser/signin/signin_manager.h" |
#include "chrome/browser/signin/signin_manager_factory.h" |
+#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" |
#include "components/browser_context_keyed_service/browser_context_dependency_manager.h" |
#if defined(OS_ANDROID) |
#include "chrome/browser/invalidation/invalidation_controller_android.h" |
#endif // defined(OS_ANDROID) |
+#if defined(OS_CHROMEOS) |
+#include "chrome/browser/chromeos/login/user_manager.h" |
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
+#include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h" |
+#include "chrome/browser/invalidation/device_invalidation_auth_provider_chromeos.h" |
+#endif |
+ |
namespace invalidation { |
// static |
@@ -44,6 +54,7 @@ InvalidationServiceFactory::InvalidationServiceFactory() |
#if !defined(OS_ANDROID) |
DependsOn(SigninManagerFactory::GetInstance()); |
DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); |
+ DependsOn(LoginUIServiceFactory::GetInstance()); |
#endif |
} |
@@ -54,7 +65,14 @@ namespace { |
BrowserContextKeyedService* BuildP2PInvalidationService( |
content::BrowserContext* context) { |
Profile* profile = static_cast<Profile*>(context); |
- return new P2PInvalidationService(profile); |
+ return new P2PInvalidationService( |
+ profile, |
+ make_scoped_ptr<InvalidationAuthProvider>( |
+ new ProfileInvalidationAuthProvider( |
+ SigninManagerFactory::GetForProfile(profile), |
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile), |
+ LoginUIServiceFactory::GetForProfile(profile), |
+ profile))); |
} |
BrowserContextKeyedService* BuildFakeInvalidationService( |
@@ -91,15 +109,28 @@ BrowserContextKeyedService* InvalidationServiceFactory::BuildServiceInstanceFor( |
new InvalidationControllerAndroid()); |
return service; |
#else |
- SigninManagerBase* signin_manager = |
- SigninManagerFactory::GetForProfile(profile); |
- ProfileOAuth2TokenService* oauth2_token_service = |
- ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
- |
- TiclInvalidationService* service = new TiclInvalidationService( |
- signin_manager, |
- oauth2_token_service, |
- profile); |
+ scoped_ptr<InvalidationAuthProvider> auth_provider; |
+ |
+#if defined(OS_CHROMEOS) |
+ policy::BrowserPolicyConnectorChromeOS* connector = |
+ g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
+ if (chromeos::UserManager::Get()->IsLoggedInAsKioskApp() && |
+ connector->IsEnterpriseManaged()) { |
+ auth_provider.reset(new DeviceInvalidationAuthProvider( |
+ chromeos::DeviceOAuth2TokenServiceFactory::Get())); |
+ } |
+#endif |
+ |
+ if (!auth_provider) { |
+ auth_provider.reset(new ProfileInvalidationAuthProvider( |
+ SigninManagerFactory::GetForProfile(profile), |
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile), |
+ LoginUIServiceFactory::GetForProfile(profile), |
+ profile)); |
+ } |
+ |
+ TiclInvalidationService* service = |
+ new TiclInvalidationService(auth_provider.Pass(), profile); |
service->Init(); |
return service; |
#endif |