| Index: chrome/browser/sync/glue/chrome_sync_notification_bridge.cc
|
| diff --git a/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc b/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc
|
| index 76b62bf4755e72e2aaa8fe8d45fbeff07700514d..31db8e2da4443d733b4e32e7b0ea16017d908219 100644
|
| --- a/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc
|
| +++ b/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc
|
| @@ -6,10 +6,10 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/location.h"
|
| -#include "base/observer_list.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/notification_service.h"
|
| +#include "sync/notifier/sync_notifier_helper.h"
|
| #include "sync/notifier/sync_notifier_observer.h"
|
|
|
| using content::BrowserThread;
|
| @@ -26,8 +26,8 @@ class ChromeSyncNotificationBridge::Core
|
| // All member functions below must be called on the sync task runner.
|
|
|
| void UpdateEnabledTypes(syncer::ModelTypeSet enabled_types);
|
| - void AddObserver(syncer::SyncNotifierObserver* observer);
|
| - void RemoveObserver(syncer::SyncNotifierObserver* observer);
|
| + void UpdateRegisteredIds(syncer::SyncNotifierObserver* handler,
|
| + const syncer::ObjectIdSet& ids);
|
|
|
| void EmitNotification(
|
| const syncer::ModelTypePayloadMap& payload_map,
|
| @@ -43,7 +43,7 @@ class ChromeSyncNotificationBridge::Core
|
|
|
| // Used only on |sync_task_runner_|.
|
| syncer::ModelTypeSet enabled_types_;
|
| - ObserverList<syncer::SyncNotifierObserver> observers_;
|
| + syncer::SyncNotifierHelper helper_;
|
| };
|
|
|
| ChromeSyncNotificationBridge::Core::Core(
|
| @@ -64,16 +64,11 @@ void ChromeSyncNotificationBridge::Core::UpdateEnabledTypes(
|
| enabled_types_ = types;
|
| }
|
|
|
| -void ChromeSyncNotificationBridge::Core::AddObserver(
|
| - syncer::SyncNotifierObserver* observer) {
|
| +void ChromeSyncNotificationBridge::Core::UpdateRegisteredIds(
|
| + syncer::SyncNotifierObserver* handler,
|
| + const syncer::ObjectIdSet& ids) {
|
| DCHECK(sync_task_runner_->RunsTasksOnCurrentThread());
|
| - observers_.AddObserver(observer);
|
| -}
|
| -
|
| -void ChromeSyncNotificationBridge::Core::RemoveObserver(
|
| - syncer::SyncNotifierObserver* observer) {
|
| - DCHECK(sync_task_runner_->RunsTasksOnCurrentThread());
|
| - observers_.RemoveObserver(observer);
|
| + helper_.UpdateRegisteredIds(handler, ids);
|
| }
|
|
|
| void ChromeSyncNotificationBridge::Core::EmitNotification(
|
| @@ -85,9 +80,9 @@ void ChromeSyncNotificationBridge::Core::EmitNotification(
|
| syncer::ModelTypePayloadMapFromEnumSet(enabled_types_, std::string()) :
|
| payload_map;
|
|
|
| - FOR_EACH_OBSERVER(
|
| - syncer::SyncNotifierObserver, observers_,
|
| - OnIncomingNotification(effective_payload_map, notification_source));
|
| + helper_.DispatchInvalidationsToHandlers(
|
| + ModelTypePayloadMapToObjectIdPayloadMap(effective_payload_map),
|
| + notification_source);
|
| }
|
|
|
| ChromeSyncNotificationBridge::ChromeSyncNotificationBridge(
|
| @@ -111,16 +106,11 @@ void ChromeSyncNotificationBridge::UpdateEnabledTypes(
|
| core_->UpdateEnabledTypes(types);
|
| }
|
|
|
| -void ChromeSyncNotificationBridge::AddObserver(
|
| - syncer::SyncNotifierObserver* observer) {
|
| - DCHECK(sync_task_runner_->RunsTasksOnCurrentThread());
|
| - core_->AddObserver(observer);
|
| -}
|
| -
|
| -void ChromeSyncNotificationBridge::RemoveObserver(
|
| - syncer::SyncNotifierObserver* observer) {
|
| +void ChromeSyncNotificationBridge::UpdateRegisteredIds(
|
| + syncer::SyncNotifierObserver* handler,
|
| + const syncer::ObjectIdSet& ids) {
|
| DCHECK(sync_task_runner_->RunsTasksOnCurrentThread());
|
| - core_->RemoveObserver(observer);
|
| + core_->UpdateRegisteredIds(handler, ids);
|
| }
|
|
|
| void ChromeSyncNotificationBridge::Observe(
|
|
|