Index: chrome/browser/services/gcm/gcm_profile_service.cc |
diff --git a/chrome/browser/services/gcm/gcm_profile_service.cc b/chrome/browser/services/gcm/gcm_profile_service.cc |
index 0539acc212bc5dcee3ad535f239acc9b35705254..c0fc8529a9bf134541b7d173242c18d1c8cdf896 100644 |
--- a/chrome/browser/services/gcm/gcm_profile_service.cc |
+++ b/chrome/browser/services/gcm/gcm_profile_service.cc |
@@ -16,6 +16,9 @@ |
#include "components/gcm_driver/gcm_driver_android.h" |
#else |
#include "base/bind.h" |
+#if defined(OS_CHROMEOS) |
+#include "chrome/browser/services/gcm/chromeos_gcm_connection_observer.h" |
+#endif |
#include "base/files/file_path.h" |
#include "base/memory/weak_ptr.h" |
#include "chrome/browser/services/gcm/gcm_account_tracker.h" |
@@ -167,6 +170,11 @@ GCMProfileService::GCMProfileService( |
profile_->GetPath().Append(chrome::kGCMStoreDirname), |
profile_->GetRequestContext()); |
+#ifdef CHROMEOS |
+ chromeos_connection_observer_.reset(new gcm::ChromeOSGCMConnectionObserver); |
+ driver_->AddConnectionObserver(chromeos_connection_observer_.get()); |
+#endif |
+ |
identity_observer_.reset(new IdentityObserver( |
profile, static_cast<gcm::GCMDriverDesktop*>(driver_.get()))); |
} |
@@ -202,6 +210,10 @@ void GCMProfileService::Shutdown() { |
#if !defined(OS_ANDROID) |
identity_observer_.reset(); |
#endif // !defined(OS_ANDROID) |
+#if defined(OS_CHROMEOS) |
+ driver_->RemoveConnectionObserver(chromeos_connection_observer_.get()); |
+ chromeos_connection_observer_.reset(); |
+#endif |
if (driver_) { |
driver_->Shutdown(); |