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 |
deleted file mode 100644 |
index fb1e3a615b00bc3ae5e009095f2b02245399b8d8..0000000000000000000000000000000000000000 |
--- a/chrome/browser/drive/drive_notification_manager.cc |
+++ /dev/null |
@@ -1,160 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/drive/drive_notification_manager.h" |
- |
-#include "base/metrics/histogram.h" |
-#include "chrome/browser/drive/drive_notification_observer.h" |
-#include "components/invalidation/public/invalidation_service.h" |
-#include "components/invalidation/public/object_id_invalidation_map.h" |
-#include "google/cacheinvalidation/types.pb.h" |
- |
-namespace drive { |
- |
-namespace { |
- |
-// The polling interval time is used when XMPP is disabled. |
-const int kFastPollingIntervalInSecs = 60; |
- |
-// The polling interval time is used when XMPP is enabled. Theoretically |
-// polling should be unnecessary if XMPP is enabled, but just in case. |
-const int kSlowPollingIntervalInSecs = 300; |
- |
-// The sync invalidation object ID for Google Drive. |
-const char kDriveInvalidationObjectId[] = "CHANGELOG"; |
- |
-} // namespace |
- |
-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(); |
-} |
- |
-DriveNotificationManager::~DriveNotificationManager() {} |
- |
-void DriveNotificationManager::Shutdown() { |
- // Unregister for Drive notifications. |
- 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_ = NULL; |
-} |
- |
-void DriveNotificationManager::OnInvalidatorStateChange( |
- syncer::InvalidatorState state) { |
- push_notification_enabled_ = (state == syncer::INVALIDATIONS_ENABLED); |
- if (push_notification_enabled_) { |
- DVLOG(1) << "XMPP Notifications enabled"; |
- } else { |
- DVLOG(1) << "XMPP Notifications disabled (state=" << state << ")"; |
- } |
- FOR_EACH_OBSERVER(DriveNotificationObserver, observers_, |
- OnPushNotificationEnabled(push_notification_enabled_)); |
-} |
- |
-void DriveNotificationManager::OnIncomingInvalidation( |
- const syncer::ObjectIdInvalidationMap& invalidation_map) { |
- DVLOG(2) << "XMPP Drive Notification Received"; |
- syncer::ObjectIdSet ids = invalidation_map.GetObjectIds(); |
- DCHECK_EQ(1U, ids.size()); |
- const invalidation::ObjectId object_id( |
- ipc::invalidation::ObjectSource::COSMO_CHANGELOG, |
- kDriveInvalidationObjectId); |
- DCHECK_EQ(1U, ids.count(object_id)); |
- |
- // This effectively disables 'local acks'. It tells the invalidations system |
- // to not bother saving invalidations across restarts for us. |
- // See crbug.com/320878. |
- invalidation_map.AcknowledgeAll(); |
- NotifyObserversToUpdate(NOTIFICATION_XMPP); |
-} |
- |
-std::string DriveNotificationManager::GetOwnerName() const { return "Drive"; } |
- |
-void DriveNotificationManager::AddObserver( |
- DriveNotificationObserver* observer) { |
- observers_.AddObserver(observer); |
-} |
- |
-void DriveNotificationManager::RemoveObserver( |
- DriveNotificationObserver* observer) { |
- observers_.RemoveObserver(observer); |
-} |
- |
-void DriveNotificationManager::RestartPollingTimer() { |
- const int interval_secs = (push_notification_enabled_ ? |
- kSlowPollingIntervalInSecs : |
- kFastPollingIntervalInSecs); |
- polling_timer_.Stop(); |
- polling_timer_.Start( |
- FROM_HERE, |
- base::TimeDelta::FromSeconds(interval_secs), |
- base::Bind(&DriveNotificationManager::NotifyObserversToUpdate, |
- weak_ptr_factory_.GetWeakPtr(), |
- NOTIFICATION_POLLING)); |
-} |
- |
-void DriveNotificationManager::NotifyObserversToUpdate( |
- NotificationSource source) { |
- DVLOG(1) << "Notifying observers: " << NotificationSourceToString(source); |
- FOR_EACH_OBSERVER(DriveNotificationObserver, observers_, |
- OnNotificationReceived()); |
- if (!observers_notified_) { |
- UMA_HISTOGRAM_BOOLEAN("Drive.PushNotificationInitiallyEnabled", |
- push_notification_enabled_); |
- } |
- observers_notified_ = true; |
- |
- // Note that polling_timer_ is not a repeating timer. Restarting manually |
- // here is better as XMPP may be received right before the polling timer is |
- // fired (i.e. we don't notify observers twice in a row). |
- RestartPollingTimer(); |
-} |
- |
-void DriveNotificationManager::RegisterDriveNotifications() { |
- DCHECK(!push_notification_enabled_); |
- |
- if (!invalidation_service_) |
- return; |
- |
- invalidation_service_->RegisterInvalidationHandler(this); |
- syncer::ObjectIdSet ids; |
- ids.insert(invalidation::ObjectId( |
- ipc::invalidation::ObjectSource::COSMO_CHANGELOG, |
- kDriveInvalidationObjectId)); |
- CHECK(invalidation_service_->UpdateRegisteredInvalidationIds(this, ids)); |
- push_notification_registered_ = true; |
- OnInvalidatorStateChange(invalidation_service_->GetInvalidatorState()); |
- |
- UMA_HISTOGRAM_BOOLEAN("Drive.PushNotificationRegistered", |
- push_notification_registered_); |
-} |
- |
-// static |
-std::string DriveNotificationManager::NotificationSourceToString( |
- NotificationSource source) { |
- switch (source) { |
- case NOTIFICATION_XMPP: |
- return "NOTIFICATION_XMPP"; |
- case NOTIFICATION_POLLING: |
- return "NOTIFICATION_POLLING"; |
- } |
- |
- NOTREACHED(); |
- return ""; |
-} |
- |
-} // namespace drive |