| Index: chrome/browser/drive/drive_notification_manager.cc
|
| diff --git a/chrome/browser/drive/drive_notification_manager.cc b/chrome/browser/drive/drive_notification_manager.cc
|
| index ae94124e7bcc6545caa00099a9bbb232b7fd72ff..198c0148ecb35690202e1c99743bd46bd230c328 100644
|
| --- a/chrome/browser/drive/drive_notification_manager.cc
|
| +++ b/chrome/browser/drive/drive_notification_manager.cc
|
| @@ -8,7 +8,6 @@
|
| #include "chrome/browser/drive/drive_notification_observer.h"
|
| #include "chrome/browser/invalidation/invalidation_service.h"
|
| #include "chrome/browser/invalidation/invalidation_service_factory.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| #include "google/cacheinvalidation/types.pb.h"
|
|
|
| namespace drive {
|
| @@ -27,13 +26,15 @@ const char kDriveInvalidationObjectId[] = "CHANGELOG";
|
|
|
| } // namespace
|
|
|
| -DriveNotificationManager::DriveNotificationManager(Profile* profile)
|
| - : profile_(profile),
|
| +DriveNotificationManager::DriveNotificationManager(
|
| + invalidation::InvalidationService* invalidation_service)
|
| + : invalidation_service_(invalidation_service),
|
| push_notification_registered_(false),
|
| push_notification_enabled_(false),
|
| observers_notified_(false),
|
| polling_timer_(true /* retain_user_task */, false /* is_repeating */),
|
| weak_ptr_factory_(this) {
|
| + DCHECK(invalidation_service_);
|
| RegisterDriveNotifications();
|
| RestartPollingTimer();
|
| }
|
| @@ -42,16 +43,14 @@ DriveNotificationManager::~DriveNotificationManager() {}
|
|
|
| void DriveNotificationManager::Shutdown() {
|
| // Unregister for Drive notifications.
|
| - invalidation::InvalidationService* invalidation_service =
|
| - invalidation::InvalidationServiceFactory::GetForProfile(profile_);
|
| - if (!invalidation_service || !push_notification_registered_) {
|
| + if (!invalidation_service_ || !push_notification_registered_)
|
| return;
|
| - }
|
|
|
| // We unregister the handler without updating unregistering our IDs on
|
| // purpose. See the class comment on the InvalidationService interface for
|
| // more information.
|
| - invalidation_service->UnregisterInvalidationHandler(this);
|
| + invalidation_service_->UnregisterInvalidationHandler(this);
|
| + invalidation_service_ = NULL;
|
| }
|
|
|
| void DriveNotificationManager::OnInvalidatorStateChange(
|
| @@ -77,10 +76,8 @@ void DriveNotificationManager::OnIncomingInvalidation(
|
|
|
| // TODO(dcheng): Only acknowledge the invalidation once the fetch has
|
| // completed. http://crbug.com/156843
|
| - invalidation::InvalidationService* invalidation_service =
|
| - invalidation::InvalidationServiceFactory::GetForProfile(profile_);
|
| - DCHECK(invalidation_service);
|
| - invalidation_service->AcknowledgeInvalidation(
|
| + DCHECK(invalidation_service_);
|
| + invalidation_service_->AcknowledgeInvalidation(
|
| invalidation_map.begin()->first,
|
| invalidation_map.begin()->second.ack_handle);
|
|
|
| @@ -130,19 +127,17 @@ void DriveNotificationManager::NotifyObserversToUpdate(
|
| void DriveNotificationManager::RegisterDriveNotifications() {
|
| DCHECK(!push_notification_enabled_);
|
|
|
| - invalidation::InvalidationService* invalidation_service =
|
| - invalidation::InvalidationServiceFactory::GetForProfile(profile_);
|
| - if (!invalidation_service)
|
| + if (!invalidation_service_)
|
| return;
|
|
|
| - invalidation_service->RegisterInvalidationHandler(this);
|
| + invalidation_service_->RegisterInvalidationHandler(this);
|
| syncer::ObjectIdSet ids;
|
| ids.insert(invalidation::ObjectId(
|
| ipc::invalidation::ObjectSource::COSMO_CHANGELOG,
|
| kDriveInvalidationObjectId));
|
| - invalidation_service->UpdateRegisteredInvalidationIds(this, ids);
|
| + invalidation_service_->UpdateRegisteredInvalidationIds(this, ids);
|
| push_notification_registered_ = true;
|
| - OnInvalidatorStateChange(invalidation_service->GetInvalidatorState());
|
| + OnInvalidatorStateChange(invalidation_service_->GetInvalidatorState());
|
|
|
| UMA_HISTOGRAM_BOOLEAN("Drive.PushNotificationRegistered",
|
| push_notification_registered_);
|
|
|