| 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 "components/sync/base/model_type.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
| 11 #include "base/values.h" | 11 #include "base/values.h" |
| 12 #include "sync/protocol/app_notification_specifics.pb.h" | 12 #include "components/sync/protocol/app_notification_specifics.pb.h" |
| 13 #include "sync/protocol/app_setting_specifics.pb.h" | 13 #include "components/sync/protocol/app_setting_specifics.pb.h" |
| 14 #include "sync/protocol/app_specifics.pb.h" | 14 #include "components/sync/protocol/app_specifics.pb.h" |
| 15 #include "sync/protocol/autofill_specifics.pb.h" | 15 #include "components/sync/protocol/autofill_specifics.pb.h" |
| 16 #include "sync/protocol/bookmark_specifics.pb.h" | 16 #include "components/sync/protocol/bookmark_specifics.pb.h" |
| 17 #include "sync/protocol/extension_setting_specifics.pb.h" | 17 #include "components/sync/protocol/extension_setting_specifics.pb.h" |
| 18 #include "sync/protocol/extension_specifics.pb.h" | 18 #include "components/sync/protocol/extension_specifics.pb.h" |
| 19 #include "sync/protocol/nigori_specifics.pb.h" | 19 #include "components/sync/protocol/nigori_specifics.pb.h" |
| 20 #include "sync/protocol/password_specifics.pb.h" | 20 #include "components/sync/protocol/password_specifics.pb.h" |
| 21 #include "sync/protocol/preference_specifics.pb.h" | 21 #include "components/sync/protocol/preference_specifics.pb.h" |
| 22 #include "sync/protocol/search_engine_specifics.pb.h" | 22 #include "components/sync/protocol/search_engine_specifics.pb.h" |
| 23 #include "sync/protocol/session_specifics.pb.h" | 23 #include "components/sync/protocol/session_specifics.pb.h" |
| 24 #include "sync/protocol/sync.pb.h" | 24 #include "components/sync/protocol/sync.pb.h" |
| 25 #include "sync/protocol/theme_specifics.pb.h" | 25 #include "components/sync/protocol/theme_specifics.pb.h" |
| 26 #include "sync/protocol/typed_url_specifics.pb.h" | 26 #include "components/sync/protocol/typed_url_specifics.pb.h" |
| 27 #include "sync/syncable/syncable_proto_util.h" | 27 #include "components/sync/syncable/syncable_proto_util.h" |
| 28 | 28 |
| 29 namespace syncer { | 29 namespace syncer { |
| 30 | 30 |
| 31 struct ModelTypeInfo { | 31 struct ModelTypeInfo { |
| 32 const ModelType model_type; | 32 const ModelType model_type; |
| 33 // Model Type notification string. | 33 // Model Type notification string. |
| 34 // This needs to match the corresponding proto message name in sync.proto | 34 // This needs to match the corresponding proto message name in sync.proto |
| 35 const char* const notification_type; | 35 const char* const notification_type; |
| 36 // Root tag for Model Type | 36 // Root tag for Model Type |
| 37 // This should be the same as the model type but all lowercase. | 37 // This should be the same as the model type but all lowercase. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 62 {PASSWORDS, "PASSWORD", "passwords", "Passwords", | 62 {PASSWORDS, "PASSWORD", "passwords", "Passwords", |
| 63 sync_pb::EntitySpecifics::kPasswordFieldNumber, 4}, | 63 sync_pb::EntitySpecifics::kPasswordFieldNumber, 4}, |
| 64 {AUTOFILL_PROFILE, "AUTOFILL_PROFILE", "autofill_profiles", | 64 {AUTOFILL_PROFILE, "AUTOFILL_PROFILE", "autofill_profiles", |
| 65 "Autofill Profiles", sync_pb::EntitySpecifics::kAutofillProfileFieldNumber, | 65 "Autofill Profiles", sync_pb::EntitySpecifics::kAutofillProfileFieldNumber, |
| 66 5}, | 66 5}, |
| 67 {AUTOFILL, "AUTOFILL", "autofill", "Autofill", | 67 {AUTOFILL, "AUTOFILL", "autofill", "Autofill", |
| 68 sync_pb::EntitySpecifics::kAutofillFieldNumber, 6}, | 68 sync_pb::EntitySpecifics::kAutofillFieldNumber, 6}, |
| 69 {AUTOFILL_WALLET_DATA, "AUTOFILL_WALLET", "autofill_wallet", | 69 {AUTOFILL_WALLET_DATA, "AUTOFILL_WALLET", "autofill_wallet", |
| 70 "Autofill Wallet", sync_pb::EntitySpecifics::kAutofillWalletFieldNumber, | 70 "Autofill Wallet", sync_pb::EntitySpecifics::kAutofillWalletFieldNumber, |
| 71 34}, | 71 34}, |
| 72 {AUTOFILL_WALLET_METADATA, "WALLET_METADATA", | 72 {AUTOFILL_WALLET_METADATA, "WALLET_METADATA", "autofill_wallet_metadata", |
| 73 "autofill_wallet_metadata", "Autofill Wallet Metadata", | 73 "Autofill Wallet Metadata", |
| 74 sync_pb::EntitySpecifics::kWalletMetadataFieldNumber, 35}, | 74 sync_pb::EntitySpecifics::kWalletMetadataFieldNumber, 35}, |
| 75 {THEMES, "THEME", "themes", "Themes", | 75 {THEMES, "THEME", "themes", "Themes", |
| 76 sync_pb::EntitySpecifics::kThemeFieldNumber, 7}, | 76 sync_pb::EntitySpecifics::kThemeFieldNumber, 7}, |
| 77 {TYPED_URLS, "TYPED_URL", "typed_urls", "Typed URLs", | 77 {TYPED_URLS, "TYPED_URL", "typed_urls", "Typed URLs", |
| 78 sync_pb::EntitySpecifics::kTypedUrlFieldNumber, 8}, | 78 sync_pb::EntitySpecifics::kTypedUrlFieldNumber, 8}, |
| 79 {EXTENSIONS, "EXTENSION", "extensions", "Extensions", | 79 {EXTENSIONS, "EXTENSION", "extensions", "Extensions", |
| 80 sync_pb::EntitySpecifics::kExtensionFieldNumber, 9}, | 80 sync_pb::EntitySpecifics::kExtensionFieldNumber, 9}, |
| 81 {SEARCH_ENGINES, "SEARCH_ENGINE", "search_engines", "Search Engines", | 81 {SEARCH_ENGINES, "SEARCH_ENGINE", "search_engines", "Search Engines", |
| 82 sync_pb::EntitySpecifics::kSearchEngineFieldNumber, 10}, | 82 sync_pb::EntitySpecifics::kSearchEngineFieldNumber, 10}, |
| 83 {SESSIONS, "SESSION", "sessions", "Sessions", | 83 {SESSIONS, "SESSION", "sessions", "Sessions", |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 | 142 |
| 143 static_assert(arraysize(kModelTypeInfoMap) == MODEL_TYPE_COUNT, | 143 static_assert(arraysize(kModelTypeInfoMap) == MODEL_TYPE_COUNT, |
| 144 "kModelTypeInfoMap should have MODEL_TYPE_COUNT elements"); | 144 "kModelTypeInfoMap should have MODEL_TYPE_COUNT elements"); |
| 145 | 145 |
| 146 // Notes: | 146 // Notes: |
| 147 // 1) This list must contain exactly the same elements as the set returned by | 147 // 1) This list must contain exactly the same elements as the set returned by |
| 148 // UserSelectableTypes(). | 148 // UserSelectableTypes(). |
| 149 // 2) This list must be in the same order as the respective values in the | 149 // 2) This list must be in the same order as the respective values in the |
| 150 // ModelType enum. | 150 // ModelType enum. |
| 151 const char* kUserSelectableDataTypeNames[] = { | 151 const char* kUserSelectableDataTypeNames[] = { |
| 152 "bookmarks", | 152 "bookmarks", "preferences", "passwords", "autofill", "themes", |
| 153 "preferences", | 153 "typedUrls", "extensions", "apps", "tabs", |
| 154 "passwords", | |
| 155 "autofill", | |
| 156 "themes", | |
| 157 "typedUrls", | |
| 158 "extensions", | |
| 159 "apps", | |
| 160 "tabs", | |
| 161 }; | 154 }; |
| 162 | 155 |
| 163 static_assert( | 156 static_assert( |
| 164 37 == MODEL_TYPE_COUNT, | 157 37 == MODEL_TYPE_COUNT, |
| 165 "update kUserSelectableDataTypeName to match UserSelectableTypes"); | 158 "update kUserSelectableDataTypeName to match UserSelectableTypes"); |
| 166 | 159 |
| 167 void AddDefaultFieldValue(ModelType datatype, | 160 void AddDefaultFieldValue(ModelType datatype, |
| 168 sync_pb::EntitySpecifics* specifics) { | 161 sync_pb::EntitySpecifics* specifics) { |
| 169 if (!ProtocolTypes().Has(datatype)) { | 162 if (!ProtocolTypes().Has(datatype)) { |
| 170 NOTREACHED() << "Only protocol types have field values."; | 163 NOTREACHED() << "Only protocol types have field values."; |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 std::unique_ptr<base::ListValue> ModelTypeSetToValue(ModelTypeSet model_types) { | 667 std::unique_ptr<base::ListValue> ModelTypeSetToValue(ModelTypeSet model_types) { |
| 675 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 668 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
| 676 for (ModelTypeSet::Iterator it = model_types.First(); it.Good(); it.Inc()) { | 669 for (ModelTypeSet::Iterator it = model_types.First(); it.Good(); it.Inc()) { |
| 677 value->AppendString(ModelTypeToString(it.Get())); | 670 value->AppendString(ModelTypeToString(it.Get())); |
| 678 } | 671 } |
| 679 return value; | 672 return value; |
| 680 } | 673 } |
| 681 | 674 |
| 682 ModelTypeSet ModelTypeSetFromValue(const base::ListValue& value) { | 675 ModelTypeSet ModelTypeSetFromValue(const base::ListValue& value) { |
| 683 ModelTypeSet result; | 676 ModelTypeSet result; |
| 684 for (base::ListValue::const_iterator i = value.begin(); | 677 for (base::ListValue::const_iterator i = value.begin(); i != value.end(); |
| 685 i != value.end(); ++i) { | 678 ++i) { |
| 686 result.Put(ModelTypeFromValue(**i)); | 679 result.Put(ModelTypeFromValue(**i)); |
| 687 } | 680 } |
| 688 return result; | 681 return result; |
| 689 } | 682 } |
| 690 | 683 |
| 691 // TODO(zea): remove all hardcoded tags in model associators and have them use | 684 // TODO(zea): remove all hardcoded tags in model associators and have them use |
| 692 // this instead. | 685 // this instead. |
| 693 // NOTE: Proxy types should return empty strings (so that we don't NOTREACHED | 686 // NOTE: Proxy types should return empty strings (so that we don't NOTREACHED |
| 694 // in tests when we verify they have no root node). | 687 // in tests when we verify they have no root node). |
| 695 std::string ModelTypeToRootTag(ModelType type) { | 688 std::string ModelTypeToRootTag(ModelType type) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 bool TypeSupportsHierarchy(ModelType model_type) { | 748 bool TypeSupportsHierarchy(ModelType model_type) { |
| 756 // TODO(stanisc): crbug/438313: Should this also include TOP_LEVEL_FOLDER? | 749 // TODO(stanisc): crbug/438313: Should this also include TOP_LEVEL_FOLDER? |
| 757 return model_type == BOOKMARKS; | 750 return model_type == BOOKMARKS; |
| 758 } | 751 } |
| 759 | 752 |
| 760 bool TypeSupportsOrdering(ModelType model_type) { | 753 bool TypeSupportsOrdering(ModelType model_type) { |
| 761 return model_type == BOOKMARKS; | 754 return model_type == BOOKMARKS; |
| 762 } | 755 } |
| 763 | 756 |
| 764 } // namespace syncer | 757 } // namespace syncer |
| OLD | NEW |