| Index: sync/syncable/model_type.cc
|
| diff --git a/sync/syncable/model_type.cc b/sync/syncable/model_type.cc
|
| index 3ef7bac67f48b629cede84a5a5a86ed19dbaed00..113124958c08cb8f1d4bac88aa64c2360f2c00cf 100644
|
| --- a/sync/syncable/model_type.cc
|
| +++ b/sync/syncable/model_type.cc
|
| @@ -25,6 +25,110 @@
|
|
|
| namespace syncer {
|
|
|
| +struct ModelTypeInfo {
|
| + const ModelType model_type;
|
| + const char* const notification_type; // Model Type notification string.
|
| + const char* const root_tag; // Root tag for Model Type
|
| + const char* const model_type_string; // String value for Model Type
|
| + const int specifics_field_number; // SpecificsFieldNumber for Model Type
|
| + // Histogram value should be unique for the Model Type, Existing histogram
|
| + // values should never be modified without updating "SyncModelTypes" enum in
|
| + // histograms.xml to maintain backward compatibility.
|
| + const int model_type_histogram_val;
|
| +};
|
| +
|
| +// Below struct entries are in the same order as their definition in the
|
| +// ModelType enum. Don't forget to update the ModelType enum when you make
|
| +// changes to this list.
|
| +const ModelTypeInfo kModelTypeInfoMap[] = {
|
| + {UNSPECIFIED, "", "", "Unspecified", -1, 0},
|
| + {TOP_LEVEL_FOLDER, "", "", "Top Level Folder", -1, 1},
|
| + {BOOKMARKS, "BOOKMARK", "bookmarks", "Bookmarks",
|
| + sync_pb::EntitySpecifics::kBookmarkFieldNumber, 2},
|
| + {PREFERENCES, "PREFERENCE", "preferences", "Preferences",
|
| + sync_pb::EntitySpecifics::kPreferenceFieldNumber, 3},
|
| + {PASSWORDS, "PASSWORD", "passwords", "Passwords",
|
| + sync_pb::EntitySpecifics::kPasswordFieldNumber, 4},
|
| + {AUTOFILL_PROFILE, "AUTOFILL_PROFILE", "autofill_profiles",
|
| + "Autofill Profiles", sync_pb::EntitySpecifics::kAutofillProfileFieldNumber,
|
| + 5},
|
| + {AUTOFILL, "AUTOFILL", "autofill", "Autofill",
|
| + sync_pb::EntitySpecifics::kAutofillFieldNumber, 6},
|
| + {AUTOFILL_WALLET_DATA, "AUTOFILL_WALLET", "autofill_wallet",
|
| + "Autofill Wallet", sync_pb::EntitySpecifics::kAutofillWalletFieldNumber,
|
| + 34},
|
| + {AUTOFILL_WALLET_METADATA, "AUTOFILL_WALLET_METADATA",
|
| + "autofill_wallet_metadata", "Autofill Wallet Metadata",
|
| + sync_pb::EntitySpecifics::kWalletMetadataFieldNumber, 35},
|
| + {THEMES, "THEME", "themes", "Themes",
|
| + sync_pb::EntitySpecifics::kThemeFieldNumber, 7},
|
| + {TYPED_URLS, "TYPED_URL", "typed_urls", "Typed URLs",
|
| + sync_pb::EntitySpecifics::kTypedUrlFieldNumber, 8},
|
| + {EXTENSIONS, "EXTENSION", "extensions", "Extensions",
|
| + sync_pb::EntitySpecifics::kExtensionFieldNumber, 9},
|
| + {SEARCH_ENGINES, "SEARCH_ENGINE", "search_engines", "Search Engines",
|
| + sync_pb::EntitySpecifics::kSearchEngineFieldNumber, 10},
|
| + {SESSIONS, "SESSION", "sessions", "Sessions",
|
| + sync_pb::EntitySpecifics::kSessionFieldNumber, 11},
|
| + {APPS, "APP", "apps", "Apps", sync_pb::EntitySpecifics::kAppFieldNumber,
|
| + 12},
|
| + {APP_SETTINGS, "APP_SETTING", "app_settings", "App settings",
|
| + sync_pb::EntitySpecifics::kAppSettingFieldNumber, 13},
|
| + {EXTENSION_SETTINGS, "EXTENSION_SETTING", "extension_settings",
|
| + "Extension settings",
|
| + sync_pb::EntitySpecifics::kExtensionSettingFieldNumber, 14},
|
| + {APP_NOTIFICATIONS, "APP_NOTIFICATION", "app_notifications",
|
| + "App Notifications", sync_pb::EntitySpecifics::kAppNotificationFieldNumber,
|
| + 15},
|
| + {HISTORY_DELETE_DIRECTIVES, "HISTORY_DELETE_DIRECTIVE",
|
| + "history_delete_directives", "History Delete Directives",
|
| + sync_pb::EntitySpecifics::kHistoryDeleteDirectiveFieldNumber, 16},
|
| + {SYNCED_NOTIFICATIONS, "SYNCED_NOTIFICATION", "synced_notifications",
|
| + "Synced Notifications",
|
| + sync_pb::EntitySpecifics::kSyncedNotificationFieldNumber, 20},
|
| + {SYNCED_NOTIFICATION_APP_INFO, "SYNCED_NOTIFICATION_APP_INFO",
|
| + "synced_notification_app_info", "Synced Notification App Info",
|
| + sync_pb::EntitySpecifics::kSyncedNotificationAppInfoFieldNumber, 31},
|
| + {DICTIONARY, "DICTIONARY", "dictionary", "Dictionary",
|
| + sync_pb::EntitySpecifics::kDictionaryFieldNumber, 22},
|
| + {FAVICON_IMAGES, "FAVICON_IMAGE", "favicon_images", "Favicon Images",
|
| + sync_pb::EntitySpecifics::kFaviconImageFieldNumber, 23},
|
| + {FAVICON_TRACKING, "FAVICON_TRACKING", "favicon_tracking",
|
| + "Favicon Tracking", sync_pb::EntitySpecifics::kFaviconTrackingFieldNumber,
|
| + 24},
|
| + {DEVICE_INFO, "DEVICE_INFO", "device_info", "Device Info",
|
| + sync_pb::EntitySpecifics::kDeviceInfoFieldNumber, 18},
|
| + {PRIORITY_PREFERENCES, "PRIORITY_PREFERENCE", "priority_preferences",
|
| + "Priority Preferences",
|
| + sync_pb::EntitySpecifics::kPriorityPreferenceFieldNumber, 21},
|
| + {SUPERVISED_USER_SETTINGS, "MANAGED_USER_SETTING", "managed_user_settings",
|
| + "Managed User Settings",
|
| + sync_pb::EntitySpecifics::kManagedUserSettingFieldNumber, 26},
|
| + {SUPERVISED_USERS, "MANAGED_USER", "managed_users", "Managed Users",
|
| + sync_pb::EntitySpecifics::kManagedUserFieldNumber, 27},
|
| + {SUPERVISED_USER_SHARED_SETTINGS, "MANAGED_USER_SHARED_SETTING",
|
| + "managed_user_shared_settings", "Managed User Shared Settings",
|
| + sync_pb::EntitySpecifics::kManagedUserSharedSettingFieldNumber, 30},
|
| + {ARTICLES, "ARTICLE", "articles", "Articles",
|
| + sync_pb::EntitySpecifics::kArticleFieldNumber, 28},
|
| + {APP_LIST, "APP_LIST", "app_list", "App List",
|
| + sync_pb::EntitySpecifics::kAppListFieldNumber, 29},
|
| + {WIFI_CREDENTIALS, "WIFI_CREDENTIAL", "wifi_credentials",
|
| + "WiFi Credentials", sync_pb::EntitySpecifics::kWifiCredentialFieldNumber,
|
| + 32},
|
| + {SUPERVISED_USER_WHITELISTS, "MANAGED_USER_WHITELIST",
|
| + "managed_user_whitelists", "Managed User Whitelists",
|
| + sync_pb::EntitySpecifics::kManagedUserWhitelistFieldNumber, 33},
|
| + {PROXY_TABS, "", "", "Tabs", -1, 25},
|
| + {NIGORI, "NIGORI", "nigori", "Encryption keys",
|
| + sync_pb::EntitySpecifics::kNigoriFieldNumber, 17},
|
| + {EXPERIMENTS, "EXPERIMENTS", "experiments", "Experiments",
|
| + sync_pb::EntitySpecifics::kExperimentsFieldNumber, 19},
|
| +};
|
| +
|
| +static_assert(arraysize(kModelTypeInfoMap) == MODEL_TYPE_COUNT,
|
| + "kModelTypeInfoMap should have MODEL_TYPE_COUNT elements");
|
| +
|
| // Notes:
|
| // 1) This list must contain exactly the same elements as the set returned by
|
| // UserSelectableTypes().
|
| @@ -171,77 +275,10 @@ ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) {
|
| int GetSpecificsFieldNumberFromModelType(ModelType model_type) {
|
| DCHECK(ProtocolTypes().Has(model_type))
|
| << "Only protocol types have field values.";
|
| - switch (model_type) {
|
| - case BOOKMARKS:
|
| - return sync_pb::EntitySpecifics::kBookmarkFieldNumber;
|
| - case PASSWORDS:
|
| - return sync_pb::EntitySpecifics::kPasswordFieldNumber;
|
| - case PREFERENCES:
|
| - return sync_pb::EntitySpecifics::kPreferenceFieldNumber;
|
| - case AUTOFILL:
|
| - return sync_pb::EntitySpecifics::kAutofillFieldNumber;
|
| - case AUTOFILL_PROFILE:
|
| - return sync_pb::EntitySpecifics::kAutofillProfileFieldNumber;
|
| - case AUTOFILL_WALLET_DATA:
|
| - return sync_pb::EntitySpecifics::kAutofillWalletFieldNumber;
|
| - case AUTOFILL_WALLET_METADATA:
|
| - return sync_pb::EntitySpecifics::kWalletMetadataFieldNumber;
|
| - case THEMES:
|
| - return sync_pb::EntitySpecifics::kThemeFieldNumber;
|
| - case TYPED_URLS:
|
| - return sync_pb::EntitySpecifics::kTypedUrlFieldNumber;
|
| - case EXTENSIONS:
|
| - return sync_pb::EntitySpecifics::kExtensionFieldNumber;
|
| - case NIGORI:
|
| - return sync_pb::EntitySpecifics::kNigoriFieldNumber;
|
| - case SEARCH_ENGINES:
|
| - return sync_pb::EntitySpecifics::kSearchEngineFieldNumber;
|
| - case SESSIONS:
|
| - return sync_pb::EntitySpecifics::kSessionFieldNumber;
|
| - case APPS:
|
| - return sync_pb::EntitySpecifics::kAppFieldNumber;
|
| - case APP_LIST:
|
| - return sync_pb::EntitySpecifics::kAppListFieldNumber;
|
| - case APP_SETTINGS:
|
| - return sync_pb::EntitySpecifics::kAppSettingFieldNumber;
|
| - case EXTENSION_SETTINGS:
|
| - return sync_pb::EntitySpecifics::kExtensionSettingFieldNumber;
|
| - case APP_NOTIFICATIONS:
|
| - return sync_pb::EntitySpecifics::kAppNotificationFieldNumber;
|
| - case HISTORY_DELETE_DIRECTIVES:
|
| - return sync_pb::EntitySpecifics::kHistoryDeleteDirectiveFieldNumber;
|
| - case SYNCED_NOTIFICATIONS:
|
| - return sync_pb::EntitySpecifics::kSyncedNotificationFieldNumber;
|
| - case SYNCED_NOTIFICATION_APP_INFO:
|
| - return sync_pb::EntitySpecifics::kSyncedNotificationAppInfoFieldNumber;
|
| - case DEVICE_INFO:
|
| - return sync_pb::EntitySpecifics::kDeviceInfoFieldNumber;
|
| - case EXPERIMENTS:
|
| - return sync_pb::EntitySpecifics::kExperimentsFieldNumber;
|
| - case PRIORITY_PREFERENCES:
|
| - return sync_pb::EntitySpecifics::kPriorityPreferenceFieldNumber;
|
| - case DICTIONARY:
|
| - return sync_pb::EntitySpecifics::kDictionaryFieldNumber;
|
| - case FAVICON_IMAGES:
|
| - return sync_pb::EntitySpecifics::kFaviconImageFieldNumber;
|
| - case FAVICON_TRACKING:
|
| - return sync_pb::EntitySpecifics::kFaviconTrackingFieldNumber;
|
| - case SUPERVISED_USER_SETTINGS:
|
| - return sync_pb::EntitySpecifics::kManagedUserSettingFieldNumber;
|
| - case SUPERVISED_USERS:
|
| - return sync_pb::EntitySpecifics::kManagedUserFieldNumber;
|
| - case SUPERVISED_USER_SHARED_SETTINGS:
|
| - return sync_pb::EntitySpecifics::kManagedUserSharedSettingFieldNumber;
|
| - case SUPERVISED_USER_WHITELISTS:
|
| - return sync_pb::EntitySpecifics::kManagedUserWhitelistFieldNumber;
|
| - case ARTICLES:
|
| - return sync_pb::EntitySpecifics::kArticleFieldNumber;
|
| - case WIFI_CREDENTIALS:
|
| - return sync_pb::EntitySpecifics::kWifiCredentialFieldNumber;
|
| - default:
|
| - NOTREACHED() << "No known extension for model type.";
|
| - return 0;
|
| - }
|
| + if (ProtocolTypes().Has(model_type))
|
| + return kModelTypeInfoMap[model_type].specifics_field_number;
|
| + NOTREACHED() << "No known extension for model type.";
|
| + return 0;
|
| }
|
|
|
| FullModelTypeSet ToFullModelTypeSet(ModelTypeSet in) {
|
| @@ -534,82 +571,8 @@ const char* ModelTypeToString(ModelType model_type) {
|
| // This is used in serialization routines as well as for displaying debug
|
| // information. Do not attempt to change these string values unless you know
|
| // what you're doing.
|
| - switch (model_type) {
|
| - case TOP_LEVEL_FOLDER:
|
| - return "Top Level Folder";
|
| - case UNSPECIFIED:
|
| - return "Unspecified";
|
| - case BOOKMARKS:
|
| - return "Bookmarks";
|
| - case PREFERENCES:
|
| - return "Preferences";
|
| - case PASSWORDS:
|
| - return "Passwords";
|
| - case AUTOFILL:
|
| - return "Autofill";
|
| - case THEMES:
|
| - return "Themes";
|
| - case TYPED_URLS:
|
| - return "Typed URLs";
|
| - case EXTENSIONS:
|
| - return "Extensions";
|
| - case NIGORI:
|
| - return "Encryption keys";
|
| - case SEARCH_ENGINES:
|
| - return "Search Engines";
|
| - case SESSIONS:
|
| - return "Sessions";
|
| - case APPS:
|
| - return "Apps";
|
| - case APP_LIST:
|
| - return "App List";
|
| - case AUTOFILL_PROFILE:
|
| - return "Autofill Profiles";
|
| - case APP_SETTINGS:
|
| - return "App settings";
|
| - case EXTENSION_SETTINGS:
|
| - return "Extension settings";
|
| - case APP_NOTIFICATIONS:
|
| - return "App Notifications";
|
| - case HISTORY_DELETE_DIRECTIVES:
|
| - return "History Delete Directives";
|
| - case SYNCED_NOTIFICATIONS:
|
| - return "Synced Notifications";
|
| - case SYNCED_NOTIFICATION_APP_INFO:
|
| - return "Synced Notification App Info";
|
| - case DEVICE_INFO:
|
| - return "Device Info";
|
| - case EXPERIMENTS:
|
| - return "Experiments";
|
| - case PRIORITY_PREFERENCES:
|
| - return "Priority Preferences";
|
| - case DICTIONARY:
|
| - return "Dictionary";
|
| - case FAVICON_IMAGES:
|
| - return "Favicon Images";
|
| - case FAVICON_TRACKING:
|
| - return "Favicon Tracking";
|
| - case SUPERVISED_USER_SETTINGS:
|
| - return "Managed User Settings";
|
| - case SUPERVISED_USERS:
|
| - return "Managed Users";
|
| - case SUPERVISED_USER_SHARED_SETTINGS:
|
| - return "Managed User Shared Settings";
|
| - case SUPERVISED_USER_WHITELISTS:
|
| - return "Managed User Whitelists";
|
| - case ARTICLES:
|
| - return "Articles";
|
| - case WIFI_CREDENTIALS:
|
| - return "WiFi Credentials";
|
| - case PROXY_TABS:
|
| - return "Tabs";
|
| - case AUTOFILL_WALLET_DATA:
|
| - return "Autofill Wallet";
|
| - case AUTOFILL_WALLET_METADATA:
|
| - return "Autofill Wallet Metadata";
|
| - default:
|
| - break;
|
| - }
|
| + if (model_type >= UNSPECIFIED && model_type < MODEL_TYPE_COUNT)
|
| + return kModelTypeInfoMap[model_type].model_type_string;
|
| NOTREACHED() << "No known extension for model type.";
|
| return "INVALID";
|
| }
|
| @@ -621,83 +584,8 @@ const char* ModelTypeToString(ModelType model_type) {
|
| // Don't forget to update the "SyncModelTypes" enum in histograms.xml when you
|
| // make changes to this list.
|
| int ModelTypeToHistogramInt(ModelType model_type) {
|
| - switch (model_type) {
|
| - case UNSPECIFIED:
|
| - return 0;
|
| - case TOP_LEVEL_FOLDER:
|
| - return 1;
|
| - case BOOKMARKS:
|
| - return 2;
|
| - case PREFERENCES:
|
| - return 3;
|
| - case PASSWORDS:
|
| - return 4;
|
| - case AUTOFILL_PROFILE:
|
| - return 5;
|
| - case AUTOFILL:
|
| - return 6;
|
| - case THEMES:
|
| - return 7;
|
| - case TYPED_URLS:
|
| - return 8;
|
| - case EXTENSIONS:
|
| - return 9;
|
| - case SEARCH_ENGINES:
|
| - return 10;
|
| - case SESSIONS:
|
| - return 11;
|
| - case APPS:
|
| - return 12;
|
| - case APP_SETTINGS:
|
| - return 13;
|
| - case EXTENSION_SETTINGS:
|
| - return 14;
|
| - case APP_NOTIFICATIONS:
|
| - return 15;
|
| - case HISTORY_DELETE_DIRECTIVES:
|
| - return 16;
|
| - case NIGORI:
|
| - return 17;
|
| - case DEVICE_INFO:
|
| - return 18;
|
| - case EXPERIMENTS:
|
| - return 19;
|
| - case SYNCED_NOTIFICATIONS:
|
| - return 20;
|
| - case PRIORITY_PREFERENCES:
|
| - return 21;
|
| - case DICTIONARY:
|
| - return 22;
|
| - case FAVICON_IMAGES:
|
| - return 23;
|
| - case FAVICON_TRACKING:
|
| - return 24;
|
| - case PROXY_TABS:
|
| - return 25;
|
| - case SUPERVISED_USER_SETTINGS:
|
| - return 26;
|
| - case SUPERVISED_USERS:
|
| - return 27;
|
| - case ARTICLES:
|
| - return 28;
|
| - case APP_LIST:
|
| - return 29;
|
| - case SUPERVISED_USER_SHARED_SETTINGS:
|
| - return 30;
|
| - case SYNCED_NOTIFICATION_APP_INFO:
|
| - return 31;
|
| - case WIFI_CREDENTIALS:
|
| - return 32;
|
| - case SUPERVISED_USER_WHITELISTS:
|
| - return 33;
|
| - case AUTOFILL_WALLET_DATA:
|
| - return 34;
|
| - case AUTOFILL_WALLET_METADATA:
|
| - return 35;
|
| - // Silence a compiler warning.
|
| - case MODEL_TYPE_COUNT:
|
| - return 0;
|
| - }
|
| + if (model_type >= UNSPECIFIED && model_type < MODEL_TYPE_COUNT)
|
| + return kModelTypeInfoMap[model_type].model_type_histogram_val;
|
| return 0;
|
| }
|
|
|
| @@ -729,77 +617,15 @@ ModelType ModelTypeFromValue(const base::Value& value) {
|
| }
|
|
|
| ModelType ModelTypeFromString(const std::string& model_type_string) {
|
| - if (model_type_string == "Bookmarks")
|
| - return BOOKMARKS;
|
| - else if (model_type_string == "Preferences")
|
| - return PREFERENCES;
|
| - else if (model_type_string == "Passwords")
|
| - return PASSWORDS;
|
| - else if (model_type_string == "Autofill")
|
| - return AUTOFILL;
|
| - else if (model_type_string == "Autofill Profiles")
|
| - return AUTOFILL_PROFILE;
|
| - else if (model_type_string == "Autofill Wallet")
|
| - return AUTOFILL_WALLET_DATA;
|
| - else if (model_type_string == "Autofill Wallet Metadata")
|
| - return AUTOFILL_WALLET_METADATA;
|
| - else if (model_type_string == "Themes")
|
| - return THEMES;
|
| - else if (model_type_string == "Typed URLs")
|
| - return TYPED_URLS;
|
| - else if (model_type_string == "Extensions")
|
| - return EXTENSIONS;
|
| - else if (model_type_string == "Encryption keys")
|
| - return NIGORI;
|
| - else if (model_type_string == "Search Engines")
|
| - return SEARCH_ENGINES;
|
| - else if (model_type_string == "Sessions")
|
| - return SESSIONS;
|
| - else if (model_type_string == "Apps")
|
| - return APPS;
|
| - else if (model_type_string == "App List")
|
| - return APP_LIST;
|
| - else if (model_type_string == "App settings")
|
| - return APP_SETTINGS;
|
| - else if (model_type_string == "Extension settings")
|
| - return EXTENSION_SETTINGS;
|
| - else if (model_type_string == "App Notifications")
|
| - return APP_NOTIFICATIONS;
|
| - else if (model_type_string == "History Delete Directives")
|
| - return HISTORY_DELETE_DIRECTIVES;
|
| - else if (model_type_string == "Synced Notifications")
|
| - return SYNCED_NOTIFICATIONS;
|
| - else if (model_type_string == "Synced Notification App Info")
|
| - return SYNCED_NOTIFICATION_APP_INFO;
|
| - else if (model_type_string == "Device Info")
|
| - return DEVICE_INFO;
|
| - else if (model_type_string == "Experiments")
|
| - return EXPERIMENTS;
|
| - else if (model_type_string == "Priority Preferences")
|
| - return PRIORITY_PREFERENCES;
|
| - else if (model_type_string == "Dictionary")
|
| - return DICTIONARY;
|
| - else if (model_type_string == "Favicon Images")
|
| - return FAVICON_IMAGES;
|
| - else if (model_type_string == "Favicon Tracking")
|
| - return FAVICON_TRACKING;
|
| - else if (model_type_string == "Managed User Settings")
|
| - return SUPERVISED_USER_SETTINGS;
|
| - else if (model_type_string == "Managed Users")
|
| - return SUPERVISED_USERS;
|
| - else if (model_type_string == "Managed User Shared Settings")
|
| - return SUPERVISED_USER_SHARED_SETTINGS;
|
| - else if (model_type_string == "Managed User Whitelists")
|
| - return SUPERVISED_USER_WHITELISTS;
|
| - else if (model_type_string == "Articles")
|
| - return ARTICLES;
|
| - else if (model_type_string == "WiFi Credentials")
|
| - return WIFI_CREDENTIALS;
|
| - else if (model_type_string == "Tabs")
|
| - return PROXY_TABS;
|
| - else
|
| - NOTREACHED() << "No known model type corresponding to "
|
| - << model_type_string << ".";
|
| + if (model_type_string != "Unspecified" &&
|
| + model_type_string != "Top Level Folder") {
|
| + for (size_t i = 0; i < arraysize(kModelTypeInfoMap); ++i) {
|
| + if (kModelTypeInfoMap[i].model_type_string == model_type_string)
|
| + return kModelTypeInfoMap[i].model_type;
|
| + }
|
| + }
|
| + NOTREACHED() << "No known model type corresponding to " << model_type_string
|
| + << ".";
|
| return UNSPECIFIED;
|
| }
|
|
|
| @@ -860,229 +686,19 @@ ModelTypeSet ModelTypeSetFromValue(const base::ListValue& value) {
|
| // NOTE: Proxy types should return empty strings (so that we don't NOTREACHED
|
| // in tests when we verify they have no root node).
|
| std::string ModelTypeToRootTag(ModelType type) {
|
| - switch (type) {
|
| - case BOOKMARKS:
|
| - return "google_chrome_bookmarks";
|
| - case PREFERENCES:
|
| - return "google_chrome_preferences";
|
| - case PASSWORDS:
|
| - return "google_chrome_passwords";
|
| - case AUTOFILL:
|
| - return "google_chrome_autofill";
|
| - case THEMES:
|
| - return "google_chrome_themes";
|
| - case TYPED_URLS:
|
| - return "google_chrome_typed_urls";
|
| - case EXTENSIONS:
|
| - return "google_chrome_extensions";
|
| - case NIGORI:
|
| - return "google_chrome_nigori";
|
| - case SEARCH_ENGINES:
|
| - return "google_chrome_search_engines";
|
| - case SESSIONS:
|
| - return "google_chrome_sessions";
|
| - case APPS:
|
| - return "google_chrome_apps";
|
| - case APP_LIST:
|
| - return "google_chrome_app_list";
|
| - case AUTOFILL_PROFILE:
|
| - return "google_chrome_autofill_profiles";
|
| - case AUTOFILL_WALLET_DATA:
|
| - return "google_chrome_autofill_wallet";
|
| - case AUTOFILL_WALLET_METADATA:
|
| - return "google_chrome_autofill_wallet_metadata";
|
| - case APP_SETTINGS:
|
| - return "google_chrome_app_settings";
|
| - case EXTENSION_SETTINGS:
|
| - return "google_chrome_extension_settings";
|
| - case APP_NOTIFICATIONS:
|
| - return "google_chrome_app_notifications";
|
| - case HISTORY_DELETE_DIRECTIVES:
|
| - return "google_chrome_history_delete_directives";
|
| - case SYNCED_NOTIFICATIONS:
|
| - return "google_chrome_synced_notifications";
|
| - case SYNCED_NOTIFICATION_APP_INFO:
|
| - return "google_chrome_synced_notification_app_info";
|
| - case DEVICE_INFO:
|
| - return "google_chrome_device_info";
|
| - case EXPERIMENTS:
|
| - return "google_chrome_experiments";
|
| - case PRIORITY_PREFERENCES:
|
| - return "google_chrome_priority_preferences";
|
| - case DICTIONARY:
|
| - return "google_chrome_dictionary";
|
| - case FAVICON_IMAGES:
|
| - return "google_chrome_favicon_images";
|
| - case FAVICON_TRACKING:
|
| - return "google_chrome_favicon_tracking";
|
| - case SUPERVISED_USER_SETTINGS:
|
| - return "google_chrome_managed_user_settings";
|
| - case SUPERVISED_USERS:
|
| - return "google_chrome_managed_users";
|
| - case SUPERVISED_USER_SHARED_SETTINGS:
|
| - return "google_chrome_managed_user_shared_settings";
|
| - case SUPERVISED_USER_WHITELISTS:
|
| - return "google_chrome_managed_user_whitelists";
|
| - case ARTICLES:
|
| - return "google_chrome_articles";
|
| - case WIFI_CREDENTIALS:
|
| - return "google_chrome_wifi_credentials";
|
| - case PROXY_TABS:
|
| - return std::string();
|
| - default:
|
| - break;
|
| - }
|
| + if (IsProxyType(type))
|
| + return std::string();
|
| + if (IsRealDataType(type))
|
| + return "google_chrome_" + std::string(kModelTypeInfoMap[type].root_tag);
|
| NOTREACHED() << "No known extension for model type.";
|
| return "INVALID";
|
| }
|
|
|
| -// TODO(akalin): Figure out a better way to do these mappings.
|
| -// Note: Do not include proxy types in this list. They should never receive
|
| -// or trigger notifications.
|
| -namespace {
|
| -const char kBookmarkNotificationType[] = "BOOKMARK";
|
| -const char kPreferenceNotificationType[] = "PREFERENCE";
|
| -const char kPasswordNotificationType[] = "PASSWORD";
|
| -const char kAutofillNotificationType[] = "AUTOFILL";
|
| -const char kThemeNotificationType[] = "THEME";
|
| -const char kTypedUrlNotificationType[] = "TYPED_URL";
|
| -const char kExtensionNotificationType[] = "EXTENSION";
|
| -const char kExtensionSettingNotificationType[] = "EXTENSION_SETTING";
|
| -const char kNigoriNotificationType[] = "NIGORI";
|
| -const char kAppSettingNotificationType[] = "APP_SETTING";
|
| -const char kAppNotificationType[] = "APP";
|
| -const char kAppListNotificationType[] = "APP_LIST";
|
| -const char kSearchEngineNotificationType[] = "SEARCH_ENGINE";
|
| -const char kSessionNotificationType[] = "SESSION";
|
| -const char kAutofillProfileNotificationType[] = "AUTOFILL_PROFILE";
|
| -const char kAutofillWalletMetadataNotificationType[] =
|
| - "AUTOFILL_WALLET_METADATA";
|
| -const char kAutofillWalletNotificationType[] = "AUTOFILL_WALLET";
|
| -const char kAppNotificationNotificationType[] = "APP_NOTIFICATION";
|
| -const char kHistoryDeleteDirectiveNotificationType[] =
|
| - "HISTORY_DELETE_DIRECTIVE";
|
| -const char kSyncedNotificationType[] = "SYNCED_NOTIFICATION";
|
| -const char kSyncedNotificationAppInfoType[] = "SYNCED_NOTIFICATION_APP_INFO";
|
| -const char kDeviceInfoNotificationType[] = "DEVICE_INFO";
|
| -const char kExperimentsNotificationType[] = "EXPERIMENTS";
|
| -const char kPriorityPreferenceNotificationType[] = "PRIORITY_PREFERENCE";
|
| -const char kDictionaryNotificationType[] = "DICTIONARY";
|
| -const char kFaviconImageNotificationType[] = "FAVICON_IMAGE";
|
| -const char kFaviconTrackingNotificationType[] = "FAVICON_TRACKING";
|
| -const char kSupervisedUserSettingNotificationType[] = "MANAGED_USER_SETTING";
|
| -const char kSupervisedUserNotificationType[] = "MANAGED_USER";
|
| -const char kSupervisedUserSharedSettingNotificationType[] =
|
| - "MANAGED_USER_SHARED_SETTING";
|
| -const char kSupervisedUserWhitelistNotificationType[] =
|
| - "MANAGED_USER_WHITELIST";
|
| -const char kArticleNotificationType[] = "ARTICLE";
|
| -const char kWifiCredentialNotificationType[] = "WIFI_CREDENTIAL";
|
| -} // namespace
|
| -
|
| bool RealModelTypeToNotificationType(ModelType model_type,
|
| std::string* notification_type) {
|
| - switch (model_type) {
|
| - case BOOKMARKS:
|
| - *notification_type = kBookmarkNotificationType;
|
| - return true;
|
| - case PREFERENCES:
|
| - *notification_type = kPreferenceNotificationType;
|
| - return true;
|
| - case PASSWORDS:
|
| - *notification_type = kPasswordNotificationType;
|
| - return true;
|
| - case AUTOFILL:
|
| - *notification_type = kAutofillNotificationType;
|
| - return true;
|
| - case THEMES:
|
| - *notification_type = kThemeNotificationType;
|
| - return true;
|
| - case TYPED_URLS:
|
| - *notification_type = kTypedUrlNotificationType;
|
| - return true;
|
| - case EXTENSIONS:
|
| - *notification_type = kExtensionNotificationType;
|
| - return true;
|
| - case NIGORI:
|
| - *notification_type = kNigoriNotificationType;
|
| - return true;
|
| - case APP_SETTINGS:
|
| - *notification_type = kAppSettingNotificationType;
|
| - return true;
|
| - case APPS:
|
| - *notification_type = kAppNotificationType;
|
| - return true;
|
| - case APP_LIST:
|
| - *notification_type = kAppListNotificationType;
|
| - return true;
|
| - case SEARCH_ENGINES:
|
| - *notification_type = kSearchEngineNotificationType;
|
| - return true;
|
| - case SESSIONS:
|
| - *notification_type = kSessionNotificationType;
|
| - return true;
|
| - case AUTOFILL_PROFILE:
|
| - *notification_type = kAutofillProfileNotificationType;
|
| - return true;
|
| - case AUTOFILL_WALLET_DATA:
|
| - *notification_type = kAutofillWalletNotificationType;
|
| - return true;
|
| - case AUTOFILL_WALLET_METADATA:
|
| - *notification_type = kAutofillWalletMetadataNotificationType;
|
| - return true;
|
| - case EXTENSION_SETTINGS:
|
| - *notification_type = kExtensionSettingNotificationType;
|
| - return true;
|
| - case APP_NOTIFICATIONS:
|
| - *notification_type = kAppNotificationNotificationType;
|
| - return true;
|
| - case HISTORY_DELETE_DIRECTIVES:
|
| - *notification_type = kHistoryDeleteDirectiveNotificationType;
|
| - return true;
|
| - case SYNCED_NOTIFICATIONS:
|
| - *notification_type = kSyncedNotificationType;
|
| - return true;
|
| - case SYNCED_NOTIFICATION_APP_INFO:
|
| - *notification_type = kSyncedNotificationAppInfoType;
|
| - return true;
|
| - case DEVICE_INFO:
|
| - *notification_type = kDeviceInfoNotificationType;
|
| - return true;
|
| - case EXPERIMENTS:
|
| - *notification_type = kExperimentsNotificationType;
|
| - return true;
|
| - case PRIORITY_PREFERENCES:
|
| - *notification_type = kPriorityPreferenceNotificationType;
|
| - return true;
|
| - case DICTIONARY:
|
| - *notification_type = kDictionaryNotificationType;
|
| - return true;
|
| - case FAVICON_IMAGES:
|
| - *notification_type = kFaviconImageNotificationType;
|
| - return true;
|
| - case FAVICON_TRACKING:
|
| - *notification_type = kFaviconTrackingNotificationType;
|
| - return true;
|
| - case SUPERVISED_USER_SETTINGS:
|
| - *notification_type = kSupervisedUserSettingNotificationType;
|
| - return true;
|
| - case SUPERVISED_USERS:
|
| - *notification_type = kSupervisedUserNotificationType;
|
| - return true;
|
| - case SUPERVISED_USER_SHARED_SETTINGS:
|
| - *notification_type = kSupervisedUserSharedSettingNotificationType;
|
| - return true;
|
| - case SUPERVISED_USER_WHITELISTS:
|
| - *notification_type = kSupervisedUserWhitelistNotificationType;
|
| - return true;
|
| - case ARTICLES:
|
| - *notification_type = kArticleNotificationType;
|
| - return true;
|
| - case WIFI_CREDENTIALS:
|
| - *notification_type = kWifiCredentialNotificationType;
|
| - return true;
|
| - default:
|
| - break;
|
| + if (ProtocolTypes().Has(model_type)) {
|
| + *notification_type = kModelTypeInfoMap[model_type].notification_type;
|
| + return true;
|
| }
|
| notification_type->clear();
|
| return false;
|
| @@ -1090,106 +706,15 @@ bool RealModelTypeToNotificationType(ModelType model_type,
|
|
|
| bool NotificationTypeToRealModelType(const std::string& notification_type,
|
| ModelType* model_type) {
|
| - if (notification_type == kBookmarkNotificationType) {
|
| - *model_type = BOOKMARKS;
|
| - return true;
|
| - } else if (notification_type == kPreferenceNotificationType) {
|
| - *model_type = PREFERENCES;
|
| - return true;
|
| - } else if (notification_type == kPasswordNotificationType) {
|
| - *model_type = PASSWORDS;
|
| - return true;
|
| - } else if (notification_type == kAutofillNotificationType) {
|
| - *model_type = AUTOFILL;
|
| - return true;
|
| - } else if (notification_type == kThemeNotificationType) {
|
| - *model_type = THEMES;
|
| - return true;
|
| - } else if (notification_type == kTypedUrlNotificationType) {
|
| - *model_type = TYPED_URLS;
|
| - return true;
|
| - } else if (notification_type == kExtensionNotificationType) {
|
| - *model_type = EXTENSIONS;
|
| - return true;
|
| - } else if (notification_type == kNigoriNotificationType) {
|
| - *model_type = NIGORI;
|
| - return true;
|
| - } else if (notification_type == kAppNotificationType) {
|
| - *model_type = APPS;
|
| - return true;
|
| - } else if (notification_type == kAppListNotificationType) {
|
| - *model_type = APP_LIST;
|
| - return true;
|
| - } else if (notification_type == kSearchEngineNotificationType) {
|
| - *model_type = SEARCH_ENGINES;
|
| - return true;
|
| - } else if (notification_type == kSessionNotificationType) {
|
| - *model_type = SESSIONS;
|
| - return true;
|
| - } else if (notification_type == kAutofillProfileNotificationType) {
|
| - *model_type = AUTOFILL_PROFILE;
|
| - return true;
|
| - } else if (notification_type == kAutofillWalletNotificationType) {
|
| - *model_type = AUTOFILL_WALLET_DATA;
|
| - return true;
|
| - } else if (notification_type == kAutofillWalletMetadataNotificationType) {
|
| - *model_type = AUTOFILL_WALLET_METADATA;
|
| - return true;
|
| - } else if (notification_type == kAppSettingNotificationType) {
|
| - *model_type = APP_SETTINGS;
|
| - return true;
|
| - } else if (notification_type == kExtensionSettingNotificationType) {
|
| - *model_type = EXTENSION_SETTINGS;
|
| - return true;
|
| - } else if (notification_type == kAppNotificationNotificationType) {
|
| - *model_type = APP_NOTIFICATIONS;
|
| - return true;
|
| - } else if (notification_type == kHistoryDeleteDirectiveNotificationType) {
|
| - *model_type = HISTORY_DELETE_DIRECTIVES;
|
| - return true;
|
| - } else if (notification_type == kSyncedNotificationType) {
|
| - *model_type = SYNCED_NOTIFICATIONS;
|
| - return true;
|
| - } else if (notification_type == kSyncedNotificationAppInfoType) {
|
| - *model_type = SYNCED_NOTIFICATION_APP_INFO;
|
| - return true;
|
| - } else if (notification_type == kDeviceInfoNotificationType) {
|
| - *model_type = DEVICE_INFO;
|
| - return true;
|
| - } else if (notification_type == kExperimentsNotificationType) {
|
| - *model_type = EXPERIMENTS;
|
| - return true;
|
| - } else if (notification_type == kPriorityPreferenceNotificationType) {
|
| - *model_type = PRIORITY_PREFERENCES;
|
| - return true;
|
| - } else if (notification_type == kDictionaryNotificationType) {
|
| - *model_type = DICTIONARY;
|
| - return true;
|
| - } else if (notification_type == kFaviconImageNotificationType) {
|
| - *model_type = FAVICON_IMAGES;
|
| - return true;
|
| - } else if (notification_type == kFaviconTrackingNotificationType) {
|
| - *model_type = FAVICON_TRACKING;
|
| - return true;
|
| - } else if (notification_type == kSupervisedUserSettingNotificationType) {
|
| - *model_type = SUPERVISED_USER_SETTINGS;
|
| - return true;
|
| - } else if (notification_type == kSupervisedUserNotificationType) {
|
| - *model_type = SUPERVISED_USERS;
|
| - return true;
|
| - } else if (notification_type ==
|
| - kSupervisedUserSharedSettingNotificationType) {
|
| - *model_type = SUPERVISED_USER_SHARED_SETTINGS;
|
| - return true;
|
| - } else if (notification_type == kSupervisedUserWhitelistNotificationType) {
|
| - *model_type = SUPERVISED_USER_WHITELISTS;
|
| - return true;
|
| - } else if (notification_type == kArticleNotificationType) {
|
| - *model_type = ARTICLES;
|
| - return true;
|
| - } else if (notification_type == kWifiCredentialNotificationType) {
|
| - *model_type = WIFI_CREDENTIALS;
|
| - return true;
|
| + if (notification_type.empty()) {
|
| + *model_type = UNSPECIFIED;
|
| + return false;
|
| + }
|
| + for (size_t i = 0; i < arraysize(kModelTypeInfoMap); ++i) {
|
| + if (kModelTypeInfoMap[i].notification_type == notification_type) {
|
| + *model_type = kModelTypeInfoMap[i].model_type;
|
| + return true;
|
| + }
|
| }
|
| *model_type = UNSPECIFIED;
|
| return false;
|
|
|