Chromium Code Reviews| 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 78212d21b3f69bce073b10f088aaf66194effaaa..7f06470de843293259250564f4ca696d411c9e08 100644 |
| --- a/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc |
| +++ b/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc |
| @@ -10,6 +10,7 @@ |
| #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; |
| @@ -25,11 +26,11 @@ class ChromeSyncNotificationBridge::Core |
| // All member functions below must be called on the sync task runner. |
| - void AddObserver(syncer::SyncNotifierObserver* observer); |
| - void RemoveObserver(syncer::SyncNotifierObserver* observer); |
| + void UpdateRegisteredIds(syncer::SyncNotifierObserver* handler, |
| + const syncer::ObjectIdSet& ids); |
| void EmitNotification( |
| - syncer::ModelTypePayloadMap payload_map, |
| + const syncer::ObjectIdPayloadMap& payload_map, |
| syncer::IncomingNotificationSource notification_source); |
| private: |
| @@ -41,8 +42,7 @@ class ChromeSyncNotificationBridge::Core |
| const scoped_refptr<base::SequencedTaskRunner> sync_task_runner_; |
| // Used only on |sync_task_runner_|. |
| - syncer::ModelTypeSet enabled_types_; |
|
akalin
2012/07/21 01:09:47
remove model-type-set include also?
dcheng
2012/07/21 14:06:53
That's still used in UpdateEnabledTypes.
|
| - ObserverList<syncer::SyncNotifierObserver> observers_; |
|
akalin
2012/07/21 01:09:47
remove observerlist include
dcheng
2012/07/21 14:06:53
Done.
|
| + syncer::SyncNotifierHelper helper_; |
| }; |
| ChromeSyncNotificationBridge::Core::Core( |
| @@ -57,25 +57,18 @@ ChromeSyncNotificationBridge::Core::~Core() { |
| sync_task_runner_->RunsTasksOnCurrentThread()); |
| } |
| -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()); |
|
akalin
2012/07/21 01:09:47
DCHECK(sync_task_runner_->RunsTasksOnCurrentThread
dcheng
2012/07/21 14:06:53
UpdateRegisteredIds has the corresponding DCHECK?
|
| - observers_.RemoveObserver(observer); |
| + helper_.UpdateRegisteredIds(handler, ids); |
| } |
| void ChromeSyncNotificationBridge::Core::EmitNotification( |
| - syncer::ModelTypePayloadMap payload_map, |
| + const syncer::ObjectIdPayloadMap& payload_map, |
| syncer::IncomingNotificationSource notification_source) { |
| DCHECK(sync_task_runner_->RunsTasksOnCurrentThread()); |
| - FOR_EACH_OBSERVER( |
| - syncer::SyncNotifierObserver, observers_, |
| - OnIncomingNotification(payload_map, notification_source)); |
| + helper_.DispatchInvalidationsToHandlers(payload_map, notification_source); |
| } |
| ChromeSyncNotificationBridge::ChromeSyncNotificationBridge( |
| @@ -99,16 +92,11 @@ void ChromeSyncNotificationBridge::UpdateEnabledTypes( |
| enabled_types_ = 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( |
| @@ -140,7 +128,9 @@ void ChromeSyncNotificationBridge::Observe( |
| sync_task_runner_->PostTask( |
| FROM_HERE, |
| base::Bind(&Core::EmitNotification, |
| - core_, payload_map, notification_source)); |
| + core_, |
| + ModelTypePayloadMapToObjectIdPayloadMap(payload_map), |
| + notification_source)); |
| } |
| } // namespace browser_sync |