Chromium Code Reviews| 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..6be69066331892110cae0f3e1933c7d02cf9dfb2 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,11 +185,18 @@ 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); |
| + const ObjectIdSet& all_registered_ids = registrar_.GetAllRegisteredIds(); |
|
msw
2012/08/09 05:20:26
nit: pass directly to Bind, nix local?
akalin
2012/08/10 01:28:08
Done.
|
| if (!network_task_runner_->PostTask( |
| FROM_HERE, |
| base::Bind( |
| @@ -198,6 +207,12 @@ void NonBlockingInvalidationNotifier::UpdateRegisteredIds( |
| } |
| } |
| +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 +256,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 |