| 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 |