Index: sync/notifier/non_blocking_invalidation_notifier.cc |
diff --git a/sync/notifier/non_blocking_invalidation_notifier.cc b/sync/notifier/non_blocking_invalidation_notifier.cc |
index ac0f76a2cb37fcaec0419add599e046f6adab1e3..c561c35892ec76b3455fa809977a5985da7be056 100644 |
--- a/sync/notifier/non_blocking_invalidation_notifier.cc |
+++ b/sync/notifier/non_blocking_invalidation_notifier.cc |
@@ -4,6 +4,8 @@ |
#include "sync/notifier/non_blocking_invalidation_notifier.h" |
+#include <cstddef> |
+ |
#include "base/location.h" |
#include "base/logging.h" |
#include "base/memory/scoped_ptr.h" |
@@ -89,12 +91,12 @@ void NonBlockingInvalidationNotifier::Core::Initialize( |
initial_invalidation_state, |
invalidation_state_tracker, |
client_info)); |
+ invalidation_notifier_->RegisterHandler(this); |
} |
- |
void NonBlockingInvalidationNotifier::Core::Teardown() { |
DCHECK(network_task_runner_->BelongsToCurrentThread()); |
- invalidation_notifier_->UpdateRegisteredIds(this, ObjectIdSet()); |
+ invalidation_notifier_->UnregisterHandler(this); |
invalidation_notifier_.reset(); |
network_task_runner_ = NULL; |
} |
@@ -183,21 +185,33 @@ NonBlockingInvalidationNotifier::~NonBlockingInvalidationNotifier() { |
} |
} |
+void NonBlockingInvalidationNotifier::RegisterHandler( |
+ SyncNotifierObserver* handler) { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ registrar_.RegisterHandler(handler); |
+} |
+ |
void NonBlockingInvalidationNotifier::UpdateRegisteredIds( |
- SyncNotifierObserver* handler, const ObjectIdSet& ids) { |
+ SyncNotifierObserver* handler, |
+ const ObjectIdSet& ids) { |
DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
- const ObjectIdSet& all_registered_ids = |
- helper_.UpdateRegisteredIds(handler, ids); |
+ registrar_.UpdateRegisteredIds(handler, ids); |
if (!network_task_runner_->PostTask( |
FROM_HERE, |
base::Bind( |
&NonBlockingInvalidationNotifier::Core::UpdateRegisteredIds, |
core_.get(), |
- all_registered_ids))) { |
+ registrar_.GetAllRegisteredIds()))) { |
NOTREACHED(); |
} |
} |
+void NonBlockingInvalidationNotifier::UnregisterHandler( |
+ SyncNotifierObserver* handler) { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ registrar_.UnregisterHandler(handler); |
+} |
+ |
void NonBlockingInvalidationNotifier::SetUniqueId( |
const std::string& unique_id) { |
DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
@@ -241,20 +255,20 @@ void NonBlockingInvalidationNotifier::SendNotification( |
void NonBlockingInvalidationNotifier::OnNotificationsEnabled() { |
DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
- helper_.EmitOnNotificationsEnabled(); |
+ registrar_.EmitOnNotificationsEnabled(); |
} |
void NonBlockingInvalidationNotifier::OnNotificationsDisabled( |
NotificationsDisabledReason reason) { |
DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
- helper_.EmitOnNotificationsDisabled(reason); |
+ registrar_.EmitOnNotificationsDisabled(reason); |
} |
void NonBlockingInvalidationNotifier::OnIncomingNotification( |
const ObjectIdPayloadMap& id_payloads, |
IncomingNotificationSource source) { |
DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
- helper_.DispatchInvalidationsToHandlers(id_payloads, source); |
+ registrar_.DispatchInvalidationsToHandlers(id_payloads, source); |
} |
} // namespace syncer |