| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync/glue/chrome_sync_notification_bridge.h" | 5 #include "chrome/browser/sync/glue/chrome_sync_notification_bridge.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 void InitializeOnSyncThread(); | 30 void InitializeOnSyncThread(); |
| 31 void CleanupOnSyncThread(); | 31 void CleanupOnSyncThread(); |
| 32 | 32 |
| 33 void UpdateEnabledTypes(syncer::ModelTypeSet enabled_types); | 33 void UpdateEnabledTypes(syncer::ModelTypeSet enabled_types); |
| 34 void RegisterHandler(syncer::SyncNotifierObserver* handler); | 34 void RegisterHandler(syncer::SyncNotifierObserver* handler); |
| 35 void UpdateRegisteredIds(syncer::SyncNotifierObserver* handler, | 35 void UpdateRegisteredIds(syncer::SyncNotifierObserver* handler, |
| 36 const syncer::ObjectIdSet& ids); | 36 const syncer::ObjectIdSet& ids); |
| 37 void UnregisterHandler(syncer::SyncNotifierObserver* handler); | 37 void UnregisterHandler(syncer::SyncNotifierObserver* handler); |
| 38 | 38 |
| 39 void EmitNotification( | 39 void EmitNotification( |
| 40 const syncer::ModelTypePayloadMap& payload_map, | 40 const syncer::ModelTypeStateMap& state_map, |
| 41 syncer::IncomingNotificationSource notification_source); | 41 syncer::IncomingNotificationSource notification_source); |
| 42 | 42 |
| 43 private: | 43 private: |
| 44 friend class base::RefCountedThreadSafe<Core>; | 44 friend class base::RefCountedThreadSafe<Core>; |
| 45 | 45 |
| 46 // Destroyed on the UI thread or on |sync_task_runner_|. | 46 // Destroyed on the UI thread or on |sync_task_runner_|. |
| 47 ~Core(); | 47 ~Core(); |
| 48 | 48 |
| 49 const scoped_refptr<base::SequencedTaskRunner> sync_task_runner_; | 49 const scoped_refptr<base::SequencedTaskRunner> sync_task_runner_; |
| 50 | 50 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 notifier_registrar_->UpdateRegisteredIds(handler, ids); | 93 notifier_registrar_->UpdateRegisteredIds(handler, ids); |
| 94 } | 94 } |
| 95 | 95 |
| 96 void ChromeSyncNotificationBridge::Core::UnregisterHandler( | 96 void ChromeSyncNotificationBridge::Core::UnregisterHandler( |
| 97 syncer::SyncNotifierObserver* handler) { | 97 syncer::SyncNotifierObserver* handler) { |
| 98 DCHECK(sync_task_runner_->RunsTasksOnCurrentThread()); | 98 DCHECK(sync_task_runner_->RunsTasksOnCurrentThread()); |
| 99 notifier_registrar_->UnregisterHandler(handler); | 99 notifier_registrar_->UnregisterHandler(handler); |
| 100 } | 100 } |
| 101 | 101 |
| 102 void ChromeSyncNotificationBridge::Core::EmitNotification( | 102 void ChromeSyncNotificationBridge::Core::EmitNotification( |
| 103 const syncer::ModelTypePayloadMap& payload_map, | 103 const syncer::ModelTypeStateMap& state_map, |
| 104 syncer::IncomingNotificationSource notification_source) { | 104 syncer::IncomingNotificationSource notification_source) { |
| 105 DCHECK(sync_task_runner_->RunsTasksOnCurrentThread()); | 105 DCHECK(sync_task_runner_->RunsTasksOnCurrentThread()); |
| 106 const syncer::ModelTypePayloadMap& effective_payload_map = | 106 const syncer::ModelTypeStateMap& effective_state_map = |
| 107 payload_map.empty() ? | 107 state_map.empty() ? |
| 108 syncer::ModelTypePayloadMapFromEnumSet(enabled_types_, std::string()) : | 108 syncer::ModelTypeStateMapFromEnumSet(enabled_types_, std::string()) : |
| 109 payload_map; | 109 state_map; |
| 110 | 110 |
| 111 notifier_registrar_->DispatchInvalidationsToHandlers( | 111 notifier_registrar_->DispatchInvalidationsToHandlers( |
| 112 ModelTypePayloadMapToObjectIdPayloadMap(effective_payload_map), | 112 ModelTypeStateMapToObjectIdStateMap(effective_state_map), |
| 113 notification_source); | 113 notification_source); |
| 114 } | 114 } |
| 115 | 115 |
| 116 ChromeSyncNotificationBridge::ChromeSyncNotificationBridge( | 116 ChromeSyncNotificationBridge::ChromeSyncNotificationBridge( |
| 117 const Profile* profile, | 117 const Profile* profile, |
| 118 const scoped_refptr<base::SequencedTaskRunner>& sync_task_runner) | 118 const scoped_refptr<base::SequencedTaskRunner>& sync_task_runner) |
| 119 : sync_task_runner_(sync_task_runner), | 119 : sync_task_runner_(sync_task_runner), |
| 120 core_(new Core(sync_task_runner_)) { | 120 core_(new Core(sync_task_runner_)) { |
| 121 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 121 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 122 DCHECK(profile); | 122 DCHECK(profile); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 syncer::IncomingNotificationSource notification_source; | 174 syncer::IncomingNotificationSource notification_source; |
| 175 if (type == chrome::NOTIFICATION_SYNC_REFRESH_LOCAL) { | 175 if (type == chrome::NOTIFICATION_SYNC_REFRESH_LOCAL) { |
| 176 notification_source = syncer::LOCAL_NOTIFICATION; | 176 notification_source = syncer::LOCAL_NOTIFICATION; |
| 177 } else if (type == chrome::NOTIFICATION_SYNC_REFRESH_REMOTE) { | 177 } else if (type == chrome::NOTIFICATION_SYNC_REFRESH_REMOTE) { |
| 178 notification_source = syncer::REMOTE_NOTIFICATION; | 178 notification_source = syncer::REMOTE_NOTIFICATION; |
| 179 } else { | 179 } else { |
| 180 NOTREACHED() << "Unexpected notification type: " << type; | 180 NOTREACHED() << "Unexpected notification type: " << type; |
| 181 return; | 181 return; |
| 182 } | 182 } |
| 183 | 183 |
| 184 content::Details<const syncer::ModelTypePayloadMap> | 184 content::Details<const syncer::ModelTypeStateMap> |
| 185 payload_details(details); | 185 state_details(details); |
| 186 const syncer::ModelTypePayloadMap& payload_map = *(payload_details.ptr()); | 186 const syncer::ModelTypeStateMap& state_map = *(state_details.ptr()); |
| 187 if (!sync_task_runner_->PostTask( | 187 if (!sync_task_runner_->PostTask( |
| 188 FROM_HERE, | 188 FROM_HERE, |
| 189 base::Bind(&Core::EmitNotification, | 189 base::Bind(&Core::EmitNotification, |
| 190 core_, payload_map, notification_source))) { | 190 core_, state_map, notification_source))) { |
| 191 NOTREACHED(); | 191 NOTREACHED(); |
| 192 } | 192 } |
| 193 } | 193 } |
| 194 | 194 |
| 195 } // namespace browser_sync | 195 } // namespace browser_sync |
| OLD | NEW |