| Index: chrome/browser/sync/syncable/model_type.cc
|
| diff --git a/chrome/browser/sync/syncable/model_type.cc b/chrome/browser/sync/syncable/model_type.cc
|
| deleted file mode 100644
|
| index 58385d3065b06cf5a928abfaeafaae536207fb47..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/sync/syncable/model_type.cc
|
| +++ /dev/null
|
| @@ -1,542 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/sync/syncable/model_type.h"
|
| -
|
| -#include "base/string_split.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/sync/engine/syncproto.h"
|
| -#include "sync/protocol/app_notification_specifics.pb.h"
|
| -#include "sync/protocol/app_setting_specifics.pb.h"
|
| -#include "sync/protocol/app_specifics.pb.h"
|
| -#include "sync/protocol/autofill_specifics.pb.h"
|
| -#include "sync/protocol/bookmark_specifics.pb.h"
|
| -#include "sync/protocol/extension_setting_specifics.pb.h"
|
| -#include "sync/protocol/extension_specifics.pb.h"
|
| -#include "sync/protocol/nigori_specifics.pb.h"
|
| -#include "sync/protocol/password_specifics.pb.h"
|
| -#include "sync/protocol/preference_specifics.pb.h"
|
| -#include "sync/protocol/search_engine_specifics.pb.h"
|
| -#include "sync/protocol/session_specifics.pb.h"
|
| -#include "sync/protocol/sync.pb.h"
|
| -#include "sync/protocol/theme_specifics.pb.h"
|
| -#include "sync/protocol/typed_url_specifics.pb.h"
|
| -
|
| -namespace syncable {
|
| -
|
| -void AddDefaultFieldValue(syncable::ModelType datatype,
|
| - sync_pb::EntitySpecifics* specifics) {
|
| - switch (datatype) {
|
| - case BOOKMARKS:
|
| - specifics->mutable_bookmark();
|
| - break;
|
| - case PASSWORDS:
|
| - specifics->mutable_password();
|
| - break;
|
| - case PREFERENCES:
|
| - specifics->mutable_preference();
|
| - break;
|
| - case AUTOFILL:
|
| - specifics->mutable_autofill();
|
| - break;
|
| - case AUTOFILL_PROFILE:
|
| - specifics->mutable_autofill_profile();
|
| - break;
|
| - case THEMES:
|
| - specifics->mutable_theme();
|
| - break;
|
| - case TYPED_URLS:
|
| - specifics->mutable_typed_url();
|
| - break;
|
| - case EXTENSIONS:
|
| - specifics->mutable_extension();
|
| - break;
|
| - case NIGORI:
|
| - specifics->mutable_nigori();
|
| - break;
|
| - case SEARCH_ENGINES:
|
| - specifics->mutable_search_engine();
|
| - break;
|
| - case SESSIONS:
|
| - specifics->mutable_session();
|
| - break;
|
| - case APPS:
|
| - specifics->mutable_app();
|
| - break;
|
| - case APP_SETTINGS:
|
| - specifics->mutable_app_setting();
|
| - break;
|
| - case EXTENSION_SETTINGS:
|
| - specifics->mutable_extension_setting();
|
| - break;
|
| - case APP_NOTIFICATIONS:
|
| - specifics->mutable_app_notification();
|
| - break;
|
| - default:
|
| - NOTREACHED() << "No known extension for model type.";
|
| - }
|
| -}
|
| -
|
| -ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) {
|
| - for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) {
|
| - ModelType model_type = ModelTypeFromInt(i);
|
| - if (GetSpecificsFieldNumberFromModelType(model_type) == field_number)
|
| - return model_type;
|
| - }
|
| - NOTREACHED();
|
| - return UNSPECIFIED;
|
| -}
|
| -
|
| -int GetSpecificsFieldNumberFromModelType(ModelType model_type) {
|
| - switch (model_type) {
|
| - case BOOKMARKS:
|
| - return sync_pb::EntitySpecifics::kBookmarkFieldNumber;
|
| - break;
|
| - case PASSWORDS:
|
| - return sync_pb::EntitySpecifics::kPasswordFieldNumber;
|
| - break;
|
| - case PREFERENCES:
|
| - return sync_pb::EntitySpecifics::kPreferenceFieldNumber;
|
| - break;
|
| - case AUTOFILL:
|
| - return sync_pb::EntitySpecifics::kAutofillFieldNumber;
|
| - break;
|
| - case AUTOFILL_PROFILE:
|
| - return sync_pb::EntitySpecifics::kAutofillProfileFieldNumber;
|
| - break;
|
| - case THEMES:
|
| - return sync_pb::EntitySpecifics::kThemeFieldNumber;
|
| - break;
|
| - case TYPED_URLS:
|
| - return sync_pb::EntitySpecifics::kTypedUrlFieldNumber;
|
| - break;
|
| - case EXTENSIONS:
|
| - return sync_pb::EntitySpecifics::kExtensionFieldNumber;
|
| - break;
|
| - case NIGORI:
|
| - return sync_pb::EntitySpecifics::kNigoriFieldNumber;
|
| - break;
|
| - case SEARCH_ENGINES:
|
| - return sync_pb::EntitySpecifics::kSearchEngineFieldNumber;
|
| - break;
|
| - case SESSIONS:
|
| - return sync_pb::EntitySpecifics::kSessionFieldNumber;
|
| - break;
|
| - case APPS:
|
| - return sync_pb::EntitySpecifics::kAppFieldNumber;
|
| - break;
|
| - case APP_SETTINGS:
|
| - return sync_pb::EntitySpecifics::kAppSettingFieldNumber;
|
| - break;
|
| - case EXTENSION_SETTINGS:
|
| - return sync_pb::EntitySpecifics::kExtensionSettingFieldNumber;
|
| - break;
|
| - case APP_NOTIFICATIONS:
|
| - return sync_pb::EntitySpecifics::kAppNotificationFieldNumber;
|
| - break;
|
| - default:
|
| - NOTREACHED() << "No known extension for model type.";
|
| - return 0;
|
| - }
|
| - NOTREACHED() << "Needed for linux_keep_shadow_stacks because of "
|
| - << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681";
|
| - return 0;
|
| -}
|
| -
|
| -// Note: keep this consistent with GetModelType in syncable.cc!
|
| -ModelType GetModelType(const sync_pb::SyncEntity& sync_pb_entity) {
|
| - const browser_sync::SyncEntity& sync_entity =
|
| - static_cast<const browser_sync::SyncEntity&>(sync_pb_entity);
|
| - DCHECK(!sync_entity.id().IsRoot()); // Root shouldn't ever go over the wire.
|
| -
|
| - if (sync_entity.deleted())
|
| - return UNSPECIFIED;
|
| -
|
| - // Backwards compatibility with old (pre-specifics) protocol.
|
| - if (sync_entity.has_bookmarkdata())
|
| - return BOOKMARKS;
|
| -
|
| - ModelType specifics_type = GetModelTypeFromSpecifics(sync_entity.specifics());
|
| - if (specifics_type != UNSPECIFIED)
|
| - return specifics_type;
|
| -
|
| - // Loose check for server-created top-level folders that aren't
|
| - // bound to a particular model type.
|
| - if (!sync_entity.server_defined_unique_tag().empty() &&
|
| - sync_entity.IsFolder()) {
|
| - return TOP_LEVEL_FOLDER;
|
| - }
|
| -
|
| - // This is an item of a datatype we can't understand. Maybe it's
|
| - // from the future? Either we mis-encoded the object, or the
|
| - // server sent us entries it shouldn't have.
|
| - NOTREACHED() << "Unknown datatype in sync proto.";
|
| - return UNSPECIFIED;
|
| -}
|
| -
|
| -ModelType GetModelTypeFromSpecifics(const sync_pb::EntitySpecifics& specifics) {
|
| - if (specifics.has_bookmark())
|
| - return BOOKMARKS;
|
| -
|
| - if (specifics.has_password())
|
| - return PASSWORDS;
|
| -
|
| - if (specifics.has_preference())
|
| - return PREFERENCES;
|
| -
|
| - if (specifics.has_autofill())
|
| - return AUTOFILL;
|
| -
|
| - if (specifics.has_autofill_profile())
|
| - return AUTOFILL_PROFILE;
|
| -
|
| - if (specifics.has_theme())
|
| - return THEMES;
|
| -
|
| - if (specifics.has_typed_url())
|
| - return TYPED_URLS;
|
| -
|
| - if (specifics.has_extension())
|
| - return EXTENSIONS;
|
| -
|
| - if (specifics.has_nigori())
|
| - return NIGORI;
|
| -
|
| - if (specifics.has_app())
|
| - return APPS;
|
| -
|
| - if (specifics.has_search_engine())
|
| - return SEARCH_ENGINES;
|
| -
|
| - if (specifics.has_session())
|
| - return SESSIONS;
|
| -
|
| - if (specifics.has_app_setting())
|
| - return APP_SETTINGS;
|
| -
|
| - if (specifics.has_extension_setting())
|
| - return EXTENSION_SETTINGS;
|
| -
|
| - if (specifics.has_app_notification())
|
| - return APP_NOTIFICATIONS;
|
| -
|
| - return UNSPECIFIED;
|
| -}
|
| -
|
| -bool ShouldMaintainPosition(ModelType model_type) {
|
| - return model_type == BOOKMARKS;
|
| -}
|
| -
|
| -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 AUTOFILL_PROFILE:
|
| - return "Autofill Profiles";
|
| - case APP_SETTINGS:
|
| - return "App settings";
|
| - case EXTENSION_SETTINGS:
|
| - return "Extension settings";
|
| - case APP_NOTIFICATIONS:
|
| - return "App Notifications";
|
| - default:
|
| - break;
|
| - }
|
| - NOTREACHED() << "No known extension for model type.";
|
| - return "INVALID";
|
| -}
|
| -
|
| -StringValue* ModelTypeToValue(ModelType model_type) {
|
| - if (model_type >= syncable::FIRST_REAL_MODEL_TYPE) {
|
| - return Value::CreateStringValue(ModelTypeToString(model_type));
|
| - } else if (model_type == syncable::TOP_LEVEL_FOLDER) {
|
| - return Value::CreateStringValue("Top-level folder");
|
| - } else if (model_type == syncable::UNSPECIFIED) {
|
| - return Value::CreateStringValue("Unspecified");
|
| - }
|
| - NOTREACHED();
|
| - return Value::CreateStringValue("");
|
| -}
|
| -
|
| -ModelType ModelTypeFromValue(const Value& value) {
|
| - if (value.IsType(Value::TYPE_STRING)) {
|
| - std::string result;
|
| - CHECK(value.GetAsString(&result));
|
| - return ModelTypeFromString(result);
|
| - } else if (value.IsType(Value::TYPE_INTEGER)) {
|
| - int result;
|
| - CHECK(value.GetAsInteger(&result));
|
| - return ModelTypeFromInt(result);
|
| - } else {
|
| - NOTREACHED() << "Unsupported value type: " << value.GetType();
|
| - return UNSPECIFIED;
|
| - }
|
| -}
|
| -
|
| -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 == "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 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
|
| - NOTREACHED() << "No known model type corresponding to "
|
| - << model_type_string << ".";
|
| - return UNSPECIFIED;
|
| -}
|
| -
|
| -std::string ModelTypeSetToString(ModelTypeSet model_types) {
|
| - std::string result;
|
| - for (ModelTypeSet::Iterator it = model_types.First(); it.Good(); it.Inc()) {
|
| - if (!result.empty()) {
|
| - result += ", ";
|
| - }
|
| - result += ModelTypeToString(it.Get());
|
| - }
|
| - return result;
|
| -}
|
| -
|
| -base::ListValue* ModelTypeSetToValue(ModelTypeSet model_types) {
|
| - ListValue* value = new ListValue();
|
| - for (ModelTypeSet::Iterator it = model_types.First(); it.Good(); it.Inc()) {
|
| - value->Append(
|
| - Value::CreateStringValue(ModelTypeToString(it.Get())));
|
| - }
|
| - return value;
|
| -}
|
| -
|
| -ModelTypeSet ModelTypeSetFromValue(const base::ListValue& value) {
|
| - ModelTypeSet result;
|
| - for (ListValue::const_iterator i = value.begin(); i != value.end(); ++i) {
|
| - result.Put(ModelTypeFromValue(**i));
|
| - }
|
| - return result;
|
| -}
|
| -
|
| -// TODO(zea): remove all hardcoded tags in model associators and have them use
|
| -// this instead.
|
| -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 AUTOFILL_PROFILE:
|
| - return "google_chrome_autofill_profiles";
|
| - case APP_SETTINGS:
|
| - return "google_chrome_app_settings";
|
| - case EXTENSION_SETTINGS:
|
| - return "google_chrome_extension_settings";
|
| - case APP_NOTIFICATIONS:
|
| - return "google_chrome_app_notifications";
|
| - default:
|
| - break;
|
| - }
|
| - NOTREACHED() << "No known extension for model type.";
|
| - return "INVALID";
|
| -}
|
| -
|
| -// TODO(akalin): Figure out a better way to do these mappings.
|
| -
|
| -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 kSearchEngineNotificationType[] = "SEARCH_ENGINE";
|
| -const char kSessionNotificationType[] = "SESSION";
|
| -const char kAutofillProfileNotificationType[] = "AUTOFILL_PROFILE";
|
| -const char kAppNotificationNotificationType[] = "APP_NOTIFICATION";
|
| -} // 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 = kAppNotificationType;
|
| - return true;
|
| - case APPS:
|
| - *notification_type = kAppNotificationType;
|
| - 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 EXTENSION_SETTINGS:
|
| - *notification_type = kExtensionSettingNotificationType;
|
| - return true;
|
| - case APP_NOTIFICATIONS:
|
| - *notification_type = kAppNotificationNotificationType;
|
| - return true;
|
| - default:
|
| - break;
|
| - }
|
| - notification_type->clear();
|
| - return false;
|
| -}
|
| -
|
| -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 == 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 == 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 {
|
| - *model_type = UNSPECIFIED;
|
| - return false;
|
| - }
|
| -}
|
| -
|
| -bool IsRealDataType(ModelType model_type) {
|
| - return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT;
|
| -}
|
| -
|
| -} // namespace syncable
|
|
|