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 9936fa08f020e93b0eff6fe86a1dcbecc3f81db8..35e2781d571c2c0f32fa605014a9ca3c1050191f 100644 |
| --- a/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc |
| +++ b/chrome/browser/sync/glue/chrome_sync_notification_bridge.cc |
| @@ -14,9 +14,7 @@ using content::BrowserThread; |
| namespace browser_sync { |
| ChromeSyncNotificationBridge::ChromeSyncNotificationBridge( |
| - const Profile* profile) |
| - : observers_( |
| - new ObserverListThreadSafe<syncer::SyncNotifierObserver>()) { |
| + const Profile* profile) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DCHECK(profile); |
| registrar_.Add(this, chrome::NOTIFICATION_SYNC_REFRESH_LOCAL, |
| @@ -33,14 +31,11 @@ void ChromeSyncNotificationBridge::UpdateEnabledTypes( |
| enabled_types_ = types; |
| } |
| -void ChromeSyncNotificationBridge::AddObserver( |
| - syncer::SyncNotifierObserver* observer) { |
| - observers_->AddObserver(observer); |
| -} |
| - |
| -void ChromeSyncNotificationBridge::RemoveObserver( |
| - syncer::SyncNotifierObserver* observer) { |
| - observers_->RemoveObserver(observer); |
| +void ChromeSyncNotificationBridge::UpdateRegisteredIds( |
| + syncer::SyncNotifierObserver* handler, |
| + const syncer::ObjectIdSet& ids) { |
| + base::AutoLock locker_(helper_lock_); |
| + helper_.UpdateRegisteredIds(handler, ids); |
| } |
| void ChromeSyncNotificationBridge::Observe( |
| @@ -69,9 +64,10 @@ void ChromeSyncNotificationBridge::Observe( |
| syncer::ModelTypePayloadMapFromEnumSet(enabled_types_, std::string()); |
| } |
| - observers_->Notify( |
| - &syncer::SyncNotifierObserver::OnIncomingNotification, |
| - payload_map, notification_source); |
| + base::AutoLock locker_(helper_lock_); |
| + helper_.DispatchInvalidationsToHandlers( |
|
akalin
2012/07/19 00:42:06
this won't work. the invalidations must happen on
dcheng
2012/07/19 18:31:05
I don't quite understand the issue. Why isn't it a
akalin
2012/07/19 23:07:26
ObserverListThreadSafe guarantees that notificatio
dcheng
2012/07/20 00:57:04
Ah. My fault for not looking at the implementation
|
| + ModelTypePayloadMapToObjectIdPayloadMap(payload_map), |
| + notification_source); |
| } |
| } // namespace browser_sync |