Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(504)

Unified Diff: sync/notifier/non_blocking_invalidation_notifier.cc

Issue 10702074: Refactor sync-specific parts out of SyncNotifier/SyncNotifierObserver (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 cf5e51ab7c221038c6cbefa3e9fda7ce3efad6f7..bff69c9d20281552e26d6448a25f7d24ca702aa4 100644
--- a/sync/notifier/non_blocking_invalidation_notifier.cc
+++ b/sync/notifier/non_blocking_invalidation_notifier.cc
@@ -35,18 +35,19 @@ class NonBlockingInvalidationNotifier::Core
invalidation_state_tracker,
const std::string& client_info);
void Teardown();
+ void ReloadHandlers(const ObjectIdSet& ids);
void SetUniqueId(const std::string& unique_id);
void SetStateDeprecated(const std::string& state);
void UpdateCredentials(const std::string& email, const std::string& token);
- void UpdateEnabledTypes(syncer::ModelTypeSet enabled_types);
// SyncNotifierObserver implementation (all called on I/O thread by
// InvalidationNotifier).
+ virtual ObjectIdSet GetHandledIds() OVERRIDE;
virtual void OnNotificationsEnabled() OVERRIDE;
virtual void OnNotificationsDisabled(
NotificationsDisabledReason reason) OVERRIDE;
virtual void OnIncomingNotification(
- const syncer::ModelTypePayloadMap& type_payloads,
+ const ObjectIdPayloadMap& id_payloads,
IncomingNotificationSource source) OVERRIDE;
private:
@@ -59,6 +60,7 @@ class NonBlockingInvalidationNotifier::Core
const syncer::WeakHandle<SyncNotifierObserver> delegate_observer_;
scoped_ptr<InvalidationNotifier> invalidation_notifier_;
scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
+ ObjectIdSet registered_ids_;
DISALLOW_COPY_AND_ASSIGN(Core);
};
@@ -93,17 +95,24 @@ void NonBlockingInvalidationNotifier::Core::Initialize(
initial_invalidation_state,
invalidation_state_tracker,
client_info));
- invalidation_notifier_->AddObserver(this);
+ invalidation_notifier_->AddHandler(this);
}
void NonBlockingInvalidationNotifier::Core::Teardown() {
DCHECK(network_task_runner_->BelongsToCurrentThread());
- invalidation_notifier_->RemoveObserver(this);
+ invalidation_notifier_->RemoveHandler(this);
invalidation_notifier_.reset();
network_task_runner_ = NULL;
}
+void NonBlockingInvalidationNotifier::Core::ReloadHandlers(
+ const ObjectIdSet& ids) {
+ DCHECK(network_task_runner_->BelongsToCurrentThread());
+ registered_ids_ = ids;
+ invalidation_notifier_->ReloadHandlers();
+}
+
void NonBlockingInvalidationNotifier::Core::SetUniqueId(
const std::string& unique_id) {
DCHECK(network_task_runner_->BelongsToCurrentThread());
@@ -122,10 +131,9 @@ void NonBlockingInvalidationNotifier::Core::UpdateCredentials(
invalidation_notifier_->UpdateCredentials(email, token);
}
-void NonBlockingInvalidationNotifier::Core::UpdateEnabledTypes(
- syncer::ModelTypeSet enabled_types) {
+ObjectIdSet NonBlockingInvalidationNotifier::Core::GetHandledIds() {
DCHECK(network_task_runner_->BelongsToCurrentThread());
- invalidation_notifier_->UpdateEnabledTypes(enabled_types);
+ return registered_ids_;
}
void NonBlockingInvalidationNotifier::Core::OnNotificationsEnabled() {
@@ -142,12 +150,11 @@ void NonBlockingInvalidationNotifier::Core::OnNotificationsDisabled(
}
void NonBlockingInvalidationNotifier::Core::OnIncomingNotification(
- const syncer::ModelTypePayloadMap& type_payloads,
- IncomingNotificationSource source) {
+ const ObjectIdPayloadMap& id_payloads, IncomingNotificationSource source) {
DCHECK(network_task_runner_->BelongsToCurrentThread());
delegate_observer_.Call(FROM_HERE,
&SyncNotifierObserver::OnIncomingNotification,
- type_payloads,
+ id_payloads,
source);
}
@@ -190,16 +197,27 @@ NonBlockingInvalidationNotifier::~NonBlockingInvalidationNotifier() {
}
}
-void NonBlockingInvalidationNotifier::AddObserver(
+void NonBlockingInvalidationNotifier::AddHandler(
SyncNotifierObserver* observer) {
DCHECK(parent_task_runner_->BelongsToCurrentThread());
- observers_.AddObserver(observer);
+ InvalidationNotifierBase::AddHandler(observer);
}
-void NonBlockingInvalidationNotifier::RemoveObserver(
+void NonBlockingInvalidationNotifier::RemoveHandler(
SyncNotifierObserver* observer) {
DCHECK(parent_task_runner_->BelongsToCurrentThread());
- observers_.RemoveObserver(observer);
+ InvalidationNotifierBase::RemoveHandler(observer);
+}
+
+void NonBlockingInvalidationNotifier::ReloadHandlers() {
+ DCHECK(parent_task_runner_->BelongsToCurrentThread());
+ const ObjectIdSet& ids_to_register = UpdateObjectIdObserverMap();
+ if (!network_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&NonBlockingInvalidationNotifier::Core::ReloadHandlers,
+ core_.get(), ids_to_register))) {
+ NOTREACHED();
+ }
}
void NonBlockingInvalidationNotifier::SetUniqueId(
@@ -236,17 +254,6 @@ void NonBlockingInvalidationNotifier::UpdateCredentials(
}
}
-void NonBlockingInvalidationNotifier::UpdateEnabledTypes(
- syncer::ModelTypeSet enabled_types) {
- DCHECK(parent_task_runner_->BelongsToCurrentThread());
- if (!network_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&NonBlockingInvalidationNotifier::Core::UpdateEnabledTypes,
- core_.get(), enabled_types))) {
- NOTREACHED();
- }
-}
-
void NonBlockingInvalidationNotifier::SendNotification(
syncer::ModelTypeSet changed_types) {
DCHECK(parent_task_runner_->BelongsToCurrentThread());
@@ -254,25 +261,28 @@ void NonBlockingInvalidationNotifier::SendNotification(
// need to forward on the call.
}
+ObjectIdSet NonBlockingInvalidationNotifier::GetHandledIds() {
+ DCHECK(parent_task_runner_->BelongsToCurrentThread());
+ return ObjectIdSet();
dcheng 2012/07/10 19:15:25 I need to figure out why the unit test is passing
+}
void NonBlockingInvalidationNotifier::OnNotificationsEnabled() {
DCHECK(parent_task_runner_->BelongsToCurrentThread());
- FOR_EACH_OBSERVER(SyncNotifierObserver, observers_,
+ FOR_EACH_OBSERVER(SyncNotifierObserver, observers(),
OnNotificationsEnabled());
}
void NonBlockingInvalidationNotifier::OnNotificationsDisabled(
NotificationsDisabledReason reason) {
DCHECK(parent_task_runner_->BelongsToCurrentThread());
- FOR_EACH_OBSERVER(SyncNotifierObserver, observers_,
+ FOR_EACH_OBSERVER(SyncNotifierObserver, observers(),
OnNotificationsDisabled(reason));
}
void NonBlockingInvalidationNotifier::OnIncomingNotification(
- const syncer::ModelTypePayloadMap& type_payloads,
+ const ObjectIdPayloadMap& id_payloads,
IncomingNotificationSource source) {
DCHECK(parent_task_runner_->BelongsToCurrentThread());
- FOR_EACH_OBSERVER(SyncNotifierObserver, observers_,
- OnIncomingNotification(type_payloads, source));
+ DispatchInvalidationsToObservers(id_payloads, source);
}
} // namespace syncer

Powered by Google App Engine
This is Rietveld 408576698