| 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/protocol/app_notification_specifics.pb.h" | 9 #include "sync/protocol/app_notification_specifics.pb.h" |
| 10 #include "sync/protocol/app_setting_specifics.pb.h" | 10 #include "sync/protocol/app_setting_specifics.pb.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 break; | 66 break; |
| 67 case APP_SETTINGS: | 67 case APP_SETTINGS: |
| 68 specifics->mutable_app_setting(); | 68 specifics->mutable_app_setting(); |
| 69 break; | 69 break; |
| 70 case EXTENSION_SETTINGS: | 70 case EXTENSION_SETTINGS: |
| 71 specifics->mutable_extension_setting(); | 71 specifics->mutable_extension_setting(); |
| 72 break; | 72 break; |
| 73 case APP_NOTIFICATIONS: | 73 case APP_NOTIFICATIONS: |
| 74 specifics->mutable_app_notification(); | 74 specifics->mutable_app_notification(); |
| 75 break; | 75 break; |
| 76 case DEVICE_INFO: |
| 77 specifics->mutable_device_info(); |
| 78 break; |
| 76 default: | 79 default: |
| 77 NOTREACHED() << "No known extension for model type."; | 80 NOTREACHED() << "No known extension for model type."; |
| 78 } | 81 } |
| 79 } | 82 } |
| 80 | 83 |
| 81 ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) { | 84 ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) { |
| 82 for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { | 85 for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { |
| 83 ModelType model_type = ModelTypeFromInt(i); | 86 ModelType model_type = ModelTypeFromInt(i); |
| 84 if (GetSpecificsFieldNumberFromModelType(model_type) == field_number) | 87 if (GetSpecificsFieldNumberFromModelType(model_type) == field_number) |
| 85 return model_type; | 88 return model_type; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 break; | 131 break; |
| 129 case APP_SETTINGS: | 132 case APP_SETTINGS: |
| 130 return sync_pb::EntitySpecifics::kAppSettingFieldNumber; | 133 return sync_pb::EntitySpecifics::kAppSettingFieldNumber; |
| 131 break; | 134 break; |
| 132 case EXTENSION_SETTINGS: | 135 case EXTENSION_SETTINGS: |
| 133 return sync_pb::EntitySpecifics::kExtensionSettingFieldNumber; | 136 return sync_pb::EntitySpecifics::kExtensionSettingFieldNumber; |
| 134 break; | 137 break; |
| 135 case APP_NOTIFICATIONS: | 138 case APP_NOTIFICATIONS: |
| 136 return sync_pb::EntitySpecifics::kAppNotificationFieldNumber; | 139 return sync_pb::EntitySpecifics::kAppNotificationFieldNumber; |
| 137 break; | 140 break; |
| 141 case DEVICE_INFO: |
| 142 return sync_pb::EntitySpecifics::kDeviceInfoFieldNumber; |
| 143 break; |
| 138 default: | 144 default: |
| 139 NOTREACHED() << "No known extension for model type."; | 145 NOTREACHED() << "No known extension for model type."; |
| 140 return 0; | 146 return 0; |
| 141 } | 147 } |
| 142 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of " | 148 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of " |
| 143 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681"; | 149 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681"; |
| 144 return 0; | 150 return 0; |
| 145 } | 151 } |
| 146 | 152 |
| 147 FullModelTypeSet ToFullModelTypeSet(ModelTypeSet in) { | 153 FullModelTypeSet ToFullModelTypeSet(ModelTypeSet in) { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 | 226 |
| 221 if (specifics.has_app_setting()) | 227 if (specifics.has_app_setting()) |
| 222 return APP_SETTINGS; | 228 return APP_SETTINGS; |
| 223 | 229 |
| 224 if (specifics.has_extension_setting()) | 230 if (specifics.has_extension_setting()) |
| 225 return EXTENSION_SETTINGS; | 231 return EXTENSION_SETTINGS; |
| 226 | 232 |
| 227 if (specifics.has_app_notification()) | 233 if (specifics.has_app_notification()) |
| 228 return APP_NOTIFICATIONS; | 234 return APP_NOTIFICATIONS; |
| 229 | 235 |
| 236 if (specifics.has_device_info()) |
| 237 return DEVICE_INFO; |
| 238 |
| 230 return UNSPECIFIED; | 239 return UNSPECIFIED; |
| 231 } | 240 } |
| 232 | 241 |
| 233 bool ShouldMaintainPosition(ModelType model_type) { | 242 bool ShouldMaintainPosition(ModelType model_type) { |
| 234 return model_type == BOOKMARKS; | 243 return model_type == BOOKMARKS; |
| 235 } | 244 } |
| 236 | 245 |
| 237 ModelTypeSet UserTypes() { | 246 ModelTypeSet UserTypes() { |
| 238 ModelTypeSet set; | 247 ModelTypeSet set; |
| 239 for (int i = FIRST_USER_MODEL_TYPE; i <= LAST_USER_MODEL_TYPE; ++i) { | 248 for (int i = FIRST_USER_MODEL_TYPE; i <= LAST_USER_MODEL_TYPE; ++i) { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 case APPS: | 295 case APPS: |
| 287 return "Apps"; | 296 return "Apps"; |
| 288 case AUTOFILL_PROFILE: | 297 case AUTOFILL_PROFILE: |
| 289 return "Autofill Profiles"; | 298 return "Autofill Profiles"; |
| 290 case APP_SETTINGS: | 299 case APP_SETTINGS: |
| 291 return "App settings"; | 300 return "App settings"; |
| 292 case EXTENSION_SETTINGS: | 301 case EXTENSION_SETTINGS: |
| 293 return "Extension settings"; | 302 return "Extension settings"; |
| 294 case APP_NOTIFICATIONS: | 303 case APP_NOTIFICATIONS: |
| 295 return "App Notifications"; | 304 return "App Notifications"; |
| 305 case DEVICE_INFO: |
| 306 return "Device Info"; |
| 296 default: | 307 default: |
| 297 break; | 308 break; |
| 298 } | 309 } |
| 299 NOTREACHED() << "No known extension for model type."; | 310 NOTREACHED() << "No known extension for model type."; |
| 300 return "INVALID"; | 311 return "INVALID"; |
| 301 } | 312 } |
| 302 | 313 |
| 303 StringValue* ModelTypeToValue(ModelType model_type) { | 314 StringValue* ModelTypeToValue(ModelType model_type) { |
| 304 if (model_type >= FIRST_REAL_MODEL_TYPE) { | 315 if (model_type >= FIRST_REAL_MODEL_TYPE) { |
| 305 return Value::CreateStringValue(ModelTypeToString(model_type)); | 316 return Value::CreateStringValue(ModelTypeToString(model_type)); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 else if (model_type_string == "Sessions") | 362 else if (model_type_string == "Sessions") |
| 352 return SESSIONS; | 363 return SESSIONS; |
| 353 else if (model_type_string == "Apps") | 364 else if (model_type_string == "Apps") |
| 354 return APPS; | 365 return APPS; |
| 355 else if (model_type_string == "App settings") | 366 else if (model_type_string == "App settings") |
| 356 return APP_SETTINGS; | 367 return APP_SETTINGS; |
| 357 else if (model_type_string == "Extension settings") | 368 else if (model_type_string == "Extension settings") |
| 358 return EXTENSION_SETTINGS; | 369 return EXTENSION_SETTINGS; |
| 359 else if (model_type_string == "App Notifications") | 370 else if (model_type_string == "App Notifications") |
| 360 return APP_NOTIFICATIONS; | 371 return APP_NOTIFICATIONS; |
| 372 else if (model_type_string == "Device Info") |
| 373 return DEVICE_INFO; |
| 361 else | 374 else |
| 362 NOTREACHED() << "No known model type corresponding to " | 375 NOTREACHED() << "No known model type corresponding to " |
| 363 << model_type_string << "."; | 376 << model_type_string << "."; |
| 364 return UNSPECIFIED; | 377 return UNSPECIFIED; |
| 365 } | 378 } |
| 366 | 379 |
| 367 std::string ModelTypeSetToString(ModelTypeSet model_types) { | 380 std::string ModelTypeSetToString(ModelTypeSet model_types) { |
| 368 std::string result; | 381 std::string result; |
| 369 for (ModelTypeSet::Iterator it = model_types.First(); it.Good(); it.Inc()) { | 382 for (ModelTypeSet::Iterator it = model_types.First(); it.Good(); it.Inc()) { |
| 370 if (!result.empty()) { | 383 if (!result.empty()) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 case APPS: | 432 case APPS: |
| 420 return "google_chrome_apps"; | 433 return "google_chrome_apps"; |
| 421 case AUTOFILL_PROFILE: | 434 case AUTOFILL_PROFILE: |
| 422 return "google_chrome_autofill_profiles"; | 435 return "google_chrome_autofill_profiles"; |
| 423 case APP_SETTINGS: | 436 case APP_SETTINGS: |
| 424 return "google_chrome_app_settings"; | 437 return "google_chrome_app_settings"; |
| 425 case EXTENSION_SETTINGS: | 438 case EXTENSION_SETTINGS: |
| 426 return "google_chrome_extension_settings"; | 439 return "google_chrome_extension_settings"; |
| 427 case APP_NOTIFICATIONS: | 440 case APP_NOTIFICATIONS: |
| 428 return "google_chrome_app_notifications"; | 441 return "google_chrome_app_notifications"; |
| 442 case DEVICE_INFO: |
| 443 return "google_chrome_device_info"; |
| 429 default: | 444 default: |
| 430 break; | 445 break; |
| 431 } | 446 } |
| 432 NOTREACHED() << "No known extension for model type."; | 447 NOTREACHED() << "No known extension for model type."; |
| 433 return "INVALID"; | 448 return "INVALID"; |
| 434 } | 449 } |
| 435 | 450 |
| 436 // TODO(akalin): Figure out a better way to do these mappings. | 451 // TODO(akalin): Figure out a better way to do these mappings. |
| 437 | 452 |
| 438 namespace { | 453 namespace { |
| 439 const char kBookmarkNotificationType[] = "BOOKMARK"; | 454 const char kBookmarkNotificationType[] = "BOOKMARK"; |
| 440 const char kPreferenceNotificationType[] = "PREFERENCE"; | 455 const char kPreferenceNotificationType[] = "PREFERENCE"; |
| 441 const char kPasswordNotificationType[] = "PASSWORD"; | 456 const char kPasswordNotificationType[] = "PASSWORD"; |
| 442 const char kAutofillNotificationType[] = "AUTOFILL"; | 457 const char kAutofillNotificationType[] = "AUTOFILL"; |
| 443 const char kThemeNotificationType[] = "THEME"; | 458 const char kThemeNotificationType[] = "THEME"; |
| 444 const char kTypedUrlNotificationType[] = "TYPED_URL"; | 459 const char kTypedUrlNotificationType[] = "TYPED_URL"; |
| 445 const char kExtensionNotificationType[] = "EXTENSION"; | 460 const char kExtensionNotificationType[] = "EXTENSION"; |
| 446 const char kExtensionSettingNotificationType[] = "EXTENSION_SETTING"; | 461 const char kExtensionSettingNotificationType[] = "EXTENSION_SETTING"; |
| 447 const char kNigoriNotificationType[] = "NIGORI"; | 462 const char kNigoriNotificationType[] = "NIGORI"; |
| 448 const char kAppSettingNotificationType[] = "APP_SETTING"; | 463 const char kAppSettingNotificationType[] = "APP_SETTING"; |
| 449 const char kAppNotificationType[] = "APP"; | 464 const char kAppNotificationType[] = "APP"; |
| 450 const char kSearchEngineNotificationType[] = "SEARCH_ENGINE"; | 465 const char kSearchEngineNotificationType[] = "SEARCH_ENGINE"; |
| 451 const char kSessionNotificationType[] = "SESSION"; | 466 const char kSessionNotificationType[] = "SESSION"; |
| 452 const char kAutofillProfileNotificationType[] = "AUTOFILL_PROFILE"; | 467 const char kAutofillProfileNotificationType[] = "AUTOFILL_PROFILE"; |
| 453 const char kAppNotificationNotificationType[] = "APP_NOTIFICATION"; | 468 const char kAppNotificationNotificationType[] = "APP_NOTIFICATION"; |
| 469 const char kDeviceInfoNotificationType[] = "DEVICE_INFO"; |
| 454 } // namespace | 470 } // namespace |
| 455 | 471 |
| 456 bool RealModelTypeToNotificationType(ModelType model_type, | 472 bool RealModelTypeToNotificationType(ModelType model_type, |
| 457 std::string* notification_type) { | 473 std::string* notification_type) { |
| 458 switch (model_type) { | 474 switch (model_type) { |
| 459 case BOOKMARKS: | 475 case BOOKMARKS: |
| 460 *notification_type = kBookmarkNotificationType; | 476 *notification_type = kBookmarkNotificationType; |
| 461 return true; | 477 return true; |
| 462 case PREFERENCES: | 478 case PREFERENCES: |
| 463 *notification_type = kPreferenceNotificationType; | 479 *notification_type = kPreferenceNotificationType; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 494 return true; | 510 return true; |
| 495 case AUTOFILL_PROFILE: | 511 case AUTOFILL_PROFILE: |
| 496 *notification_type = kAutofillProfileNotificationType; | 512 *notification_type = kAutofillProfileNotificationType; |
| 497 return true; | 513 return true; |
| 498 case EXTENSION_SETTINGS: | 514 case EXTENSION_SETTINGS: |
| 499 *notification_type = kExtensionSettingNotificationType; | 515 *notification_type = kExtensionSettingNotificationType; |
| 500 return true; | 516 return true; |
| 501 case APP_NOTIFICATIONS: | 517 case APP_NOTIFICATIONS: |
| 502 *notification_type = kAppNotificationNotificationType; | 518 *notification_type = kAppNotificationNotificationType; |
| 503 return true; | 519 return true; |
| 520 case DEVICE_INFO: |
| 521 *notification_type = kDeviceInfoNotificationType; |
| 522 return true; |
| 504 default: | 523 default: |
| 505 break; | 524 break; |
| 506 } | 525 } |
| 507 notification_type->clear(); | 526 notification_type->clear(); |
| 508 return false; | 527 return false; |
| 509 } | 528 } |
| 510 | 529 |
| 511 bool NotificationTypeToRealModelType(const std::string& notification_type, | 530 bool NotificationTypeToRealModelType(const std::string& notification_type, |
| 512 ModelType* model_type) { | 531 ModelType* model_type) { |
| 513 if (notification_type == kBookmarkNotificationType) { | 532 if (notification_type == kBookmarkNotificationType) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 return true; | 567 return true; |
| 549 } else if (notification_type == kAppSettingNotificationType) { | 568 } else if (notification_type == kAppSettingNotificationType) { |
| 550 *model_type = APP_SETTINGS; | 569 *model_type = APP_SETTINGS; |
| 551 return true; | 570 return true; |
| 552 } else if (notification_type == kExtensionSettingNotificationType) { | 571 } else if (notification_type == kExtensionSettingNotificationType) { |
| 553 *model_type = EXTENSION_SETTINGS; | 572 *model_type = EXTENSION_SETTINGS; |
| 554 return true; | 573 return true; |
| 555 } else if (notification_type == kAppNotificationNotificationType) { | 574 } else if (notification_type == kAppNotificationNotificationType) { |
| 556 *model_type = APP_NOTIFICATIONS; | 575 *model_type = APP_NOTIFICATIONS; |
| 557 return true; | 576 return true; |
| 577 } else if (notification_type == kDeviceInfoNotificationType) { |
| 578 *model_type = DEVICE_INFO;; |
| 579 return true; |
| 558 } else { | 580 } else { |
| 559 *model_type = UNSPECIFIED; | 581 *model_type = UNSPECIFIED; |
| 560 return false; | 582 return false; |
| 561 } | 583 } |
| 562 } | 584 } |
| 563 | 585 |
| 564 bool IsRealDataType(ModelType model_type) { | 586 bool IsRealDataType(ModelType model_type) { |
| 565 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT; | 587 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT; |
| 566 } | 588 } |
| 567 | 589 |
| 568 } // namespace syncer | 590 } // namespace syncer |
| OLD | NEW |