OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // The SyncedNotificationAppInfoService brings down read only metadata from the | 5 // The SyncedNotificationAppInfoService brings down read only metadata from the |
6 // sync server with information about the services sending synced notifications. | 6 // sync server with information about the services sending synced notifications. |
7 | 7 |
8 #include "chrome/browser/notifications/sync_notifier/synced_notification_app_inf
o_service.h" | 8 #include "chrome/browser/notifications/sync_notifier/synced_notification_app_inf
o_service.h" |
9 | 9 |
10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 SyncedNotificationAppInfoService::MergeDataAndStartSyncing( | 35 SyncedNotificationAppInfoService::MergeDataAndStartSyncing( |
36 syncer::ModelType type, | 36 syncer::ModelType type, |
37 const syncer::SyncDataList& initial_sync_data, | 37 const syncer::SyncDataList& initial_sync_data, |
38 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, | 38 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, |
39 scoped_ptr<syncer::SyncErrorFactory> error_handler) { | 39 scoped_ptr<syncer::SyncErrorFactory> error_handler) { |
40 thread_checker_.CalledOnValidThread(); | 40 thread_checker_.CalledOnValidThread(); |
41 DCHECK_EQ(syncer::SYNCED_NOTIFICATION_APP_INFO, type); | 41 DCHECK_EQ(syncer::SYNCED_NOTIFICATION_APP_INFO, type); |
42 syncer::SyncMergeResult merge_result(syncer::SYNCED_NOTIFICATION_APP_INFO); | 42 syncer::SyncMergeResult merge_result(syncer::SYNCED_NOTIFICATION_APP_INFO); |
43 | 43 |
44 // There should only be one sync data in the list for this data type. | 44 // There should only be one sync data in the list for this data type. |
45 if (initial_sync_data.size() != 1 && initial_sync_data.size() != 0) { | 45 if (initial_sync_data.size() > 1) { |
46 LOG(ERROR) << "Too many app infos over sync"; | 46 LOG(ERROR) << "Too many app infos over sync"; |
47 } | 47 } |
48 | 48 |
49 for (syncer::SyncDataList::const_iterator it = initial_sync_data.begin(); | 49 // TODO(petewil): Today we can only handle a single object, so we simply check |
50 it != initial_sync_data.end(); | 50 // for a non-empty list. If in the future we can ever handle more, convert |
51 ++it) { | 51 // this whole block to be a loop over all of |initial_sync_data|. |
52 const syncer::SyncData& sync_data = *it; | 52 if (!initial_sync_data.empty()) { |
| 53 const syncer::SyncData& sync_data = initial_sync_data.front(); |
53 DCHECK_EQ(syncer::SYNCED_NOTIFICATION_APP_INFO, sync_data.GetDataType()); | 54 DCHECK_EQ(syncer::SYNCED_NOTIFICATION_APP_INFO, sync_data.GetDataType()); |
54 | 55 |
55 const sync_pb::SyncedNotificationAppInfoSpecifics& specifics = | 56 const sync_pb::SyncedNotificationAppInfoSpecifics& specifics = |
56 sync_data.GetSpecifics().synced_notification_app_info(); | 57 sync_data.GetSpecifics().synced_notification_app_info(); |
57 | 58 |
58 // Store our sync data, so GetAllSyncData can give it back later. | 59 // Store our sync data, so GetAllSyncData can give it back later. |
59 sync_data_ = sync_data; | 60 sync_data_ = sync_data; |
60 | 61 |
61 size_t app_info_count = specifics.synced_notification_app_info_size(); | 62 size_t app_info_count = specifics.synced_notification_app_info_size(); |
62 | 63 |
63 // The SyncedNotificationAppInfo is a repeated field, process each one. | 64 // The SyncedNotificationAppInfo is a repeated field, process each one. |
64 for (size_t app_info_index = 0; | 65 for (size_t app_info_index = 0; |
65 app_info_index < app_info_count; | 66 app_info_index < app_info_count; |
66 ++app_info_index) { | 67 ++app_info_index) { |
67 const sync_pb::SyncedNotificationAppInfo app_info( | 68 const sync_pb::SyncedNotificationAppInfo app_info( |
68 specifics.synced_notification_app_info(app_info_index)); | 69 specifics.synced_notification_app_info(app_info_index)); |
69 | 70 |
70 ProcessIncomingAppInfoProtobuf(app_info); | 71 ProcessIncomingAppInfoProtobuf(app_info); |
71 } | 72 } |
72 | |
73 // TODO(petewil): Today we can only handle a single object, so we break | |
74 // here. In the future if we can ever handle more, remove the next line. | |
75 break; | |
76 } | 73 } |
77 | 74 |
78 return merge_result; | 75 return merge_result; |
79 } | 76 } |
80 | 77 |
81 void SyncedNotificationAppInfoService::StopSyncing(syncer::ModelType type) { | 78 void SyncedNotificationAppInfoService::StopSyncing(syncer::ModelType type) { |
82 DCHECK_EQ(syncer::SYNCED_NOTIFICATION_APP_INFO, type); | 79 DCHECK_EQ(syncer::SYNCED_NOTIFICATION_APP_INFO, type); |
83 // Implementation is not required, since this is not a user selectable sync | 80 // Implementation is not required, since this is not a user selectable sync |
84 // type. | 81 // type. |
85 } | 82 } |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 } | 233 } |
237 | 234 |
238 // Add a new app info to our data structure. This takes ownership | 235 // Add a new app info to our data structure. This takes ownership |
239 // of the passed in pointer. | 236 // of the passed in pointer. |
240 void SyncedNotificationAppInfoService::Add( | 237 void SyncedNotificationAppInfoService::Add( |
241 scoped_ptr<SyncedNotificationAppInfo> app_info) { | 238 scoped_ptr<SyncedNotificationAppInfo> app_info) { |
242 sending_service_infos_.push_back(app_info.release()); | 239 sending_service_infos_.push_back(app_info.release()); |
243 } | 240 } |
244 | 241 |
245 } // namespace notifier | 242 } // namespace notifier |
OLD | NEW |