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 8992429400615cc7b3875715daf041e7e764ab6a..b0907b574002ebbdda5db4353ebb4d576161ca38 100644 |
--- a/chrome/browser/invalidation/invalidation_service_factory.cc |
+++ b/chrome/browser/invalidation/invalidation_service_factory.cc |
@@ -5,16 +5,19 @@ |
#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/profile_invalidation_auth_provider.h" |
#include "chrome/browser/invalidation/ticl_invalidation_service.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/services/gcm/gcm_profile_service_factory.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/keyed_service/content/browser_context_dependency_manager.h" |
#include "components/signin/core/profile_oauth2_token_service.h" |
@@ -22,6 +25,13 @@ |
#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 |
@@ -45,6 +55,7 @@ InvalidationServiceFactory::InvalidationServiceFactory() |
DependsOn(SigninManagerFactory::GetInstance()); |
DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); |
DependsOn(gcm::GCMProfileServiceFactory::GetInstance()); |
+ DependsOn(LoginUIServiceFactory::GetInstance()); |
#endif |
} |
@@ -63,20 +74,32 @@ KeyedService* InvalidationServiceFactory::BuildServiceInstanceFor( |
return testing_factory_(context); |
#if defined(OS_ANDROID) |
- InvalidationServiceAndroid* service = new InvalidationServiceAndroid( |
- profile, |
- new InvalidationControllerAndroid()); |
- return service; |
+ return new InvalidationServiceAndroid(profile, |
+ new InvalidationControllerAndroid()); |
#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::IsInitialized() && |
+ 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))); |
+ } |
+ |
+ TiclInvalidationService* service = |
+ new TiclInvalidationService(auth_provider.Pass(), profile); |
service->Init(); |
return service; |
#endif |