Index: chrome/browser/invalidation/profile_invalidation_auth_provider.cc |
diff --git a/chrome/browser/invalidation/profile_invalidation_auth_provider.cc b/chrome/browser/invalidation/profile_invalidation_auth_provider.cc |
index 468520d60d69d4a67da5292a7810db0a8defcf2c..9c5b5da2b30a963697e6782bdfccafc98a5fd1ea 100644 |
--- a/chrome/browser/invalidation/profile_invalidation_auth_provider.cc |
+++ b/chrome/browser/invalidation/profile_invalidation_auth_provider.cc |
@@ -17,10 +17,13 @@ ProfileInvalidationAuthProvider::ProfileInvalidationAuthProvider( |
token_service_(token_service), |
login_ui_service_(login_ui_service) { |
signin_manager_->AddObserver(this); |
+ SigninManagerFactory::GetInstance()->AddObserver(this); |
} |
ProfileInvalidationAuthProvider::~ProfileInvalidationAuthProvider() { |
- signin_manager_->RemoveObserver(this); |
+ SigninManagerFactory::GetInstance()->RemoveObserver(this); |
+ if (signin_manager_) |
+ signin_manager_->RemoveObserver(this); |
} |
std::string ProfileInvalidationAuthProvider::GetAccountId() { |
@@ -41,4 +44,12 @@ void ProfileInvalidationAuthProvider::GoogleSignedOut( |
FireInvalidationAuthLogout(); |
} |
+void ProfileInvalidationAuthProvider::SigninManagerShutdown( |
+ SigninManagerBase* manager) { |
+ if (manager == signin_manager_) { |
+ signin_manager_->RemoveObserver(this); |
+ signin_manager_ = NULL; |
+ } |
+} |
+ |
} // namespace invalidation |