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 "sync/internal_api/public/base/model_type.h" | 5 #include "sync/internal_api/public/base/model_type.h" |
6 | 6 |
7 #include "base/string_split.h" | 7 #include "base/string_split.h" |
8 #include "base/values.h" | 8 #include "base/values.h" |
9 #include "sync/engine/syncproto.h" | |
10 #include "sync/protocol/app_notification_specifics.pb.h" | 9 #include "sync/protocol/app_notification_specifics.pb.h" |
11 #include "sync/protocol/app_setting_specifics.pb.h" | 10 #include "sync/protocol/app_setting_specifics.pb.h" |
12 #include "sync/protocol/app_specifics.pb.h" | 11 #include "sync/protocol/app_specifics.pb.h" |
13 #include "sync/protocol/autofill_specifics.pb.h" | 12 #include "sync/protocol/autofill_specifics.pb.h" |
14 #include "sync/protocol/bookmark_specifics.pb.h" | 13 #include "sync/protocol/bookmark_specifics.pb.h" |
15 #include "sync/protocol/extension_setting_specifics.pb.h" | 14 #include "sync/protocol/extension_setting_specifics.pb.h" |
16 #include "sync/protocol/extension_specifics.pb.h" | 15 #include "sync/protocol/extension_specifics.pb.h" |
17 #include "sync/protocol/nigori_specifics.pb.h" | 16 #include "sync/protocol/nigori_specifics.pb.h" |
18 #include "sync/protocol/password_specifics.pb.h" | 17 #include "sync/protocol/password_specifics.pb.h" |
19 #include "sync/protocol/preference_specifics.pb.h" | 18 #include "sync/protocol/preference_specifics.pb.h" |
20 #include "sync/protocol/search_engine_specifics.pb.h" | 19 #include "sync/protocol/search_engine_specifics.pb.h" |
21 #include "sync/protocol/session_specifics.pb.h" | 20 #include "sync/protocol/session_specifics.pb.h" |
22 #include "sync/protocol/sync.pb.h" | 21 #include "sync/protocol/sync.pb.h" |
23 #include "sync/protocol/theme_specifics.pb.h" | 22 #include "sync/protocol/theme_specifics.pb.h" |
24 #include "sync/protocol/typed_url_specifics.pb.h" | 23 #include "sync/protocol/typed_url_specifics.pb.h" |
| 24 #include "sync/syncable/syncable_proto_util.h" |
25 | 25 |
26 namespace syncer { | 26 namespace syncer { |
27 | 27 |
28 void AddDefaultFieldValue(ModelType datatype, | 28 void AddDefaultFieldValue(ModelType datatype, |
29 sync_pb::EntitySpecifics* specifics) { | 29 sync_pb::EntitySpecifics* specifics) { |
30 switch (datatype) { | 30 switch (datatype) { |
31 case BOOKMARKS: | 31 case BOOKMARKS: |
32 specifics->mutable_bookmark(); | 32 specifics->mutable_bookmark(); |
33 break; | 33 break; |
34 case PASSWORDS: | 34 case PASSWORDS: |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 default: | 138 default: |
139 NOTREACHED() << "No known extension for model type."; | 139 NOTREACHED() << "No known extension for model type."; |
140 return 0; | 140 return 0; |
141 } | 141 } |
142 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of " | 142 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of " |
143 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681"; | 143 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681"; |
144 return 0; | 144 return 0; |
145 } | 145 } |
146 | 146 |
147 // Note: keep this consistent with GetModelType in syncable.cc! | 147 // Note: keep this consistent with GetModelType in syncable.cc! |
148 ModelType GetModelType(const sync_pb::SyncEntity& sync_pb_entity) { | 148 ModelType GetModelType(const sync_pb::SyncEntity& sync_entity) { |
149 const syncer::SyncEntity& sync_entity = | 149 DCHECK(!IsRoot(sync_entity)); // Root shouldn't ever go over the wire. |
150 static_cast<const syncer::SyncEntity&>(sync_pb_entity); | |
151 DCHECK(!sync_entity.id().IsRoot()); // Root shouldn't ever go over the wire. | |
152 | 150 |
153 if (sync_entity.deleted()) | 151 if (sync_entity.deleted()) |
154 return UNSPECIFIED; | 152 return UNSPECIFIED; |
155 | 153 |
156 // Backwards compatibility with old (pre-specifics) protocol. | 154 // Backwards compatibility with old (pre-specifics) protocol. |
157 if (sync_entity.has_bookmarkdata()) | 155 if (sync_entity.has_bookmarkdata()) |
158 return BOOKMARKS; | 156 return BOOKMARKS; |
159 | 157 |
160 ModelType specifics_type = GetModelTypeFromSpecifics(sync_entity.specifics()); | 158 ModelType specifics_type = GetModelTypeFromSpecifics(sync_entity.specifics()); |
161 if (specifics_type != UNSPECIFIED) | 159 if (specifics_type != UNSPECIFIED) |
162 return specifics_type; | 160 return specifics_type; |
163 | 161 |
164 // Loose check for server-created top-level folders that aren't | 162 // Loose check for server-created top-level folders that aren't |
165 // bound to a particular model type. | 163 // bound to a particular model type. |
166 if (!sync_entity.server_defined_unique_tag().empty() && | 164 if (!sync_entity.server_defined_unique_tag().empty() && |
167 sync_entity.IsFolder()) { | 165 IsFolder(sync_entity)) { |
168 return TOP_LEVEL_FOLDER; | 166 return TOP_LEVEL_FOLDER; |
169 } | 167 } |
170 | 168 |
171 // This is an item of a datatype we can't understand. Maybe it's | 169 // This is an item of a datatype we can't understand. Maybe it's |
172 // from the future? Either we mis-encoded the object, or the | 170 // from the future? Either we mis-encoded the object, or the |
173 // server sent us entries it shouldn't have. | 171 // server sent us entries it shouldn't have. |
174 NOTREACHED() << "Unknown datatype in sync proto."; | 172 NOTREACHED() << "Unknown datatype in sync proto."; |
175 return UNSPECIFIED; | 173 return UNSPECIFIED; |
176 } | 174 } |
177 | 175 |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 *model_type = UNSPECIFIED; | 531 *model_type = UNSPECIFIED; |
534 return false; | 532 return false; |
535 } | 533 } |
536 } | 534 } |
537 | 535 |
538 bool IsRealDataType(ModelType model_type) { | 536 bool IsRealDataType(ModelType model_type) { |
539 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT; | 537 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT; |
540 } | 538 } |
541 | 539 |
542 } // namespace syncer | 540 } // namespace syncer |
OLD | NEW |