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 0fa857b3fca40d40312848a3ce1643f6e570621e..208541776e98f6737c8b02815402a33c84e83c63 100644 |
--- a/chrome/browser/invalidation/invalidation_service_factory.cc |
+++ b/chrome/browser/invalidation/invalidation_service_factory.cc |
@@ -4,13 +4,19 @@ |
#include "chrome/browser/invalidation/invalidation_service_factory.h" |
-#include "chrome/browser/invalidation/invalidation_frontend.h" |
+#include "base/prefs/pref_registry.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/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/signin/token_service.h" |
#include "chrome/browser/signin/token_service_factory.h" |
#include "components/browser_context_keyed_service/browser_context_dependency_manager.h" |
@@ -18,14 +24,12 @@ class TokenService; |
namespace invalidation { |
-// TODO(rlarocque): Re-enable this once InvalidationFrontend can |
-// extend BrowserContextKeyedService. |
-// // static |
-// InvalidationFrontend* InvalidationServiceFactory::GetForProfile( |
-// Profile* profile) { |
-// return static_cast<InvalidationFrontend*>( |
-// GetInstance()->GetServiceForBrowserContext(profile, true)); |
-// } |
+// static |
+InvalidationService* InvalidationServiceFactory::GetForProfile( |
+ Profile* profile) { |
+ return static_cast<InvalidationService*>( |
+ GetInstance()->GetServiceForBrowserContext(profile, true)); |
+} |
// static |
InvalidationServiceFactory* InvalidationServiceFactory::GetInstance() { |
@@ -35,24 +39,52 @@ InvalidationServiceFactory* InvalidationServiceFactory::GetInstance() { |
InvalidationServiceFactory::InvalidationServiceFactory() |
: BrowserContextKeyedServiceFactory( |
"InvalidationService", |
- BrowserContextDependencyManager::GetInstance()) { |
+ BrowserContextDependencyManager::GetInstance()), |
+ build_fake_invalidators_(false) { |
#if !defined(OS_ANDROID) |
DependsOn(SigninManagerFactory::GetInstance()); |
- DependsOn(TokenServiceFactory::GetInstance()); |
+ DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); |
#endif |
} |
InvalidationServiceFactory::~InvalidationServiceFactory() {} |
-// static |
-BrowserContextKeyedService* |
-InvalidationServiceFactory::BuildP2PInvalidationServiceFor(Profile* profile) { |
+namespace { |
+ |
+BrowserContextKeyedService* BuildP2PInvalidationService( |
+ content::BrowserContext* context) { |
+ Profile* profile = static_cast<Profile*>(context); |
return new P2PInvalidationService(profile); |
} |
+BrowserContextKeyedService* BuildFakeInvalidationService( |
+ content::BrowserContext* context) { |
+ return new FakeInvalidationService(); |
+} |
+ |
+} // namespace |
+ |
+void InvalidationServiceFactory::SetBuildOnlyFakeInvalidatorsForTest( |
+ bool test_mode_enabled) { |
+ build_fake_invalidators_ = test_mode_enabled; |
+} |
+ |
+P2PInvalidationService* |
+InvalidationServiceFactory::BuildAndUseP2PInvalidationServiceForTest( |
+ content::BrowserContext* context) { |
+ BrowserContextKeyedService* service = |
+ SetTestingFactoryAndUse(context, BuildP2PInvalidationService); |
+ return static_cast<P2PInvalidationService*>(service); |
+} |
+ |
BrowserContextKeyedService* InvalidationServiceFactory::BuildServiceInstanceFor( |
content::BrowserContext* context) const { |
Profile* profile = static_cast<Profile*>(context); |
+ |
+ if (build_fake_invalidators_) { |
+ return BuildFakeInvalidationService(context); |
+ } |
+ |
#if defined(OS_ANDROID) |
InvalidationServiceAndroid* service = new InvalidationServiceAndroid(profile); |
return service; |
@@ -60,12 +92,22 @@ BrowserContextKeyedService* InvalidationServiceFactory::BuildServiceInstanceFor( |
SigninManagerBase* signin_manager = |
SigninManagerFactory::GetForProfile(profile); |
TokenService* token_service = TokenServiceFactory::GetForProfile(profile); |
+ OAuth2TokenService* oauth2_token_service = |
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
TiclInvalidationService* service = new TiclInvalidationService( |
- signin_manager, token_service, profile); |
+ signin_manager, |
+ token_service, |
+ oauth2_token_service, |
+ profile); |
service->Init(); |
return service; |
#endif |
} |
+void InvalidationServiceFactory::RegisterUserPrefs( |
+ user_prefs::PrefRegistrySyncable* registry) { |
+ InvalidatorStorage::RegisterUserPrefs(registry); |
+} |
+ |
} // namespace invalidation |