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 HISTORY_DELETE_DIRECTIVES: |
| 77 specifics->mutable_history_delete_directive(); |
| 78 break; |
76 case DEVICE_INFO: | 79 case DEVICE_INFO: |
77 specifics->mutable_device_info(); | 80 specifics->mutable_device_info(); |
78 break; | 81 break; |
79 default: | 82 default: |
80 NOTREACHED() << "No known extension for model type."; | 83 NOTREACHED() << "No known extension for model type."; |
81 } | 84 } |
82 } | 85 } |
83 | 86 |
84 ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) { | 87 ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) { |
85 for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { | 88 for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 break; | 134 break; |
132 case APP_SETTINGS: | 135 case APP_SETTINGS: |
133 return sync_pb::EntitySpecifics::kAppSettingFieldNumber; | 136 return sync_pb::EntitySpecifics::kAppSettingFieldNumber; |
134 break; | 137 break; |
135 case EXTENSION_SETTINGS: | 138 case EXTENSION_SETTINGS: |
136 return sync_pb::EntitySpecifics::kExtensionSettingFieldNumber; | 139 return sync_pb::EntitySpecifics::kExtensionSettingFieldNumber; |
137 break; | 140 break; |
138 case APP_NOTIFICATIONS: | 141 case APP_NOTIFICATIONS: |
139 return sync_pb::EntitySpecifics::kAppNotificationFieldNumber; | 142 return sync_pb::EntitySpecifics::kAppNotificationFieldNumber; |
140 break; | 143 break; |
| 144 case HISTORY_DELETE_DIRECTIVES: |
| 145 return sync_pb::EntitySpecifics::kHistoryDeleteDirectiveFieldNumber; |
141 case DEVICE_INFO: | 146 case DEVICE_INFO: |
142 return sync_pb::EntitySpecifics::kDeviceInfoFieldNumber; | 147 return sync_pb::EntitySpecifics::kDeviceInfoFieldNumber; |
143 break; | 148 break; |
144 default: | 149 default: |
145 NOTREACHED() << "No known extension for model type."; | 150 NOTREACHED() << "No known extension for model type."; |
146 return 0; | 151 return 0; |
147 } | 152 } |
148 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of " | 153 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of " |
149 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681"; | 154 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681"; |
150 return 0; | 155 return 0; |
151 } | 156 } |
152 | 157 |
153 FullModelTypeSet ToFullModelTypeSet(ModelTypeSet in) { | 158 FullModelTypeSet ToFullModelTypeSet(ModelTypeSet in) { |
154 FullModelTypeSet out; | 159 FullModelTypeSet out; |
155 for (ModelTypeSet::Iterator i = in.First(); i.Good(); i.Inc()) { | 160 for (ModelTypeSet::Iterator i = in.First(); i.Good(); i.Inc()) { |
156 out.Put(i.Get()); | 161 out.Put(i.Get()); |
157 } | 162 } |
158 return out; | 163 return out; |
159 } | 164 } |
160 | 165 |
161 // Note: keep this consistent with GetModelType in syncable.cc! | 166 // Note: keep this consistent with GetModelType in entry.cc! |
162 ModelType GetModelType(const sync_pb::SyncEntity& sync_entity) { | 167 ModelType GetModelType(const sync_pb::SyncEntity& sync_entity) { |
163 DCHECK(!IsRoot(sync_entity)); // Root shouldn't ever go over the wire. | 168 DCHECK(!IsRoot(sync_entity)); // Root shouldn't ever go over the wire. |
164 | 169 |
165 if (sync_entity.deleted()) | 170 if (sync_entity.deleted()) |
166 return UNSPECIFIED; | 171 return UNSPECIFIED; |
167 | 172 |
168 // Backwards compatibility with old (pre-specifics) protocol. | 173 // Backwards compatibility with old (pre-specifics) protocol. |
169 if (sync_entity.has_bookmarkdata()) | 174 if (sync_entity.has_bookmarkdata()) |
170 return BOOKMARKS; | 175 return BOOKMARKS; |
171 | 176 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 | 231 |
227 if (specifics.has_app_setting()) | 232 if (specifics.has_app_setting()) |
228 return APP_SETTINGS; | 233 return APP_SETTINGS; |
229 | 234 |
230 if (specifics.has_extension_setting()) | 235 if (specifics.has_extension_setting()) |
231 return EXTENSION_SETTINGS; | 236 return EXTENSION_SETTINGS; |
232 | 237 |
233 if (specifics.has_app_notification()) | 238 if (specifics.has_app_notification()) |
234 return APP_NOTIFICATIONS; | 239 return APP_NOTIFICATIONS; |
235 | 240 |
| 241 if (specifics.has_history_delete_directive()) |
| 242 return HISTORY_DELETE_DIRECTIVES; |
| 243 |
236 if (specifics.has_device_info()) | 244 if (specifics.has_device_info()) |
237 return DEVICE_INFO; | 245 return DEVICE_INFO; |
238 | 246 |
239 return UNSPECIFIED; | 247 return UNSPECIFIED; |
240 } | 248 } |
241 | 249 |
242 bool ShouldMaintainPosition(ModelType model_type) { | 250 bool ShouldMaintainPosition(ModelType model_type) { |
243 return model_type == BOOKMARKS; | 251 return model_type == BOOKMARKS; |
244 } | 252 } |
245 | 253 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 case APPS: | 307 case APPS: |
300 return "Apps"; | 308 return "Apps"; |
301 case AUTOFILL_PROFILE: | 309 case AUTOFILL_PROFILE: |
302 return "Autofill Profiles"; | 310 return "Autofill Profiles"; |
303 case APP_SETTINGS: | 311 case APP_SETTINGS: |
304 return "App settings"; | 312 return "App settings"; |
305 case EXTENSION_SETTINGS: | 313 case EXTENSION_SETTINGS: |
306 return "Extension settings"; | 314 return "Extension settings"; |
307 case APP_NOTIFICATIONS: | 315 case APP_NOTIFICATIONS: |
308 return "App Notifications"; | 316 return "App Notifications"; |
| 317 case HISTORY_DELETE_DIRECTIVES: |
| 318 return "History Delete Directives"; |
309 case DEVICE_INFO: | 319 case DEVICE_INFO: |
310 return "Device Info"; | 320 return "Device Info"; |
311 default: | 321 default: |
312 break; | 322 break; |
313 } | 323 } |
314 NOTREACHED() << "No known extension for model type."; | 324 NOTREACHED() << "No known extension for model type."; |
315 return "INVALID"; | 325 return "INVALID"; |
316 } | 326 } |
317 | 327 |
318 StringValue* ModelTypeToValue(ModelType model_type) { | 328 StringValue* ModelTypeToValue(ModelType model_type) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 else if (model_type_string == "Sessions") | 376 else if (model_type_string == "Sessions") |
367 return SESSIONS; | 377 return SESSIONS; |
368 else if (model_type_string == "Apps") | 378 else if (model_type_string == "Apps") |
369 return APPS; | 379 return APPS; |
370 else if (model_type_string == "App settings") | 380 else if (model_type_string == "App settings") |
371 return APP_SETTINGS; | 381 return APP_SETTINGS; |
372 else if (model_type_string == "Extension settings") | 382 else if (model_type_string == "Extension settings") |
373 return EXTENSION_SETTINGS; | 383 return EXTENSION_SETTINGS; |
374 else if (model_type_string == "App Notifications") | 384 else if (model_type_string == "App Notifications") |
375 return APP_NOTIFICATIONS; | 385 return APP_NOTIFICATIONS; |
| 386 else if (model_type_string == "History Delete Directives") |
| 387 return HISTORY_DELETE_DIRECTIVES; |
376 else if (model_type_string == "Device Info") | 388 else if (model_type_string == "Device Info") |
377 return DEVICE_INFO; | 389 return DEVICE_INFO; |
378 else | 390 else |
379 NOTREACHED() << "No known model type corresponding to " | 391 NOTREACHED() << "No known model type corresponding to " |
380 << model_type_string << "."; | 392 << model_type_string << "."; |
381 return UNSPECIFIED; | 393 return UNSPECIFIED; |
382 } | 394 } |
383 | 395 |
384 std::string ModelTypeSetToString(ModelTypeSet model_types) { | 396 std::string ModelTypeSetToString(ModelTypeSet model_types) { |
385 std::string result; | 397 std::string result; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 case APPS: | 448 case APPS: |
437 return "google_chrome_apps"; | 449 return "google_chrome_apps"; |
438 case AUTOFILL_PROFILE: | 450 case AUTOFILL_PROFILE: |
439 return "google_chrome_autofill_profiles"; | 451 return "google_chrome_autofill_profiles"; |
440 case APP_SETTINGS: | 452 case APP_SETTINGS: |
441 return "google_chrome_app_settings"; | 453 return "google_chrome_app_settings"; |
442 case EXTENSION_SETTINGS: | 454 case EXTENSION_SETTINGS: |
443 return "google_chrome_extension_settings"; | 455 return "google_chrome_extension_settings"; |
444 case APP_NOTIFICATIONS: | 456 case APP_NOTIFICATIONS: |
445 return "google_chrome_app_notifications"; | 457 return "google_chrome_app_notifications"; |
| 458 case HISTORY_DELETE_DIRECTIVES: |
| 459 return "google_chrome_history_delete_directives"; |
446 case DEVICE_INFO: | 460 case DEVICE_INFO: |
447 return "google_chrome_device_info"; | 461 return "google_chrome_device_info"; |
448 default: | 462 default: |
449 break; | 463 break; |
450 } | 464 } |
451 NOTREACHED() << "No known extension for model type."; | 465 NOTREACHED() << "No known extension for model type."; |
452 return "INVALID"; | 466 return "INVALID"; |
453 } | 467 } |
454 | 468 |
455 // TODO(akalin): Figure out a better way to do these mappings. | 469 // TODO(akalin): Figure out a better way to do these mappings. |
456 | 470 |
457 namespace { | 471 namespace { |
458 const char kBookmarkNotificationType[] = "BOOKMARK"; | 472 const char kBookmarkNotificationType[] = "BOOKMARK"; |
459 const char kPreferenceNotificationType[] = "PREFERENCE"; | 473 const char kPreferenceNotificationType[] = "PREFERENCE"; |
460 const char kPasswordNotificationType[] = "PASSWORD"; | 474 const char kPasswordNotificationType[] = "PASSWORD"; |
461 const char kAutofillNotificationType[] = "AUTOFILL"; | 475 const char kAutofillNotificationType[] = "AUTOFILL"; |
462 const char kThemeNotificationType[] = "THEME"; | 476 const char kThemeNotificationType[] = "THEME"; |
463 const char kTypedUrlNotificationType[] = "TYPED_URL"; | 477 const char kTypedUrlNotificationType[] = "TYPED_URL"; |
464 const char kExtensionNotificationType[] = "EXTENSION"; | 478 const char kExtensionNotificationType[] = "EXTENSION"; |
465 const char kExtensionSettingNotificationType[] = "EXTENSION_SETTING"; | 479 const char kExtensionSettingNotificationType[] = "EXTENSION_SETTING"; |
466 const char kNigoriNotificationType[] = "NIGORI"; | 480 const char kNigoriNotificationType[] = "NIGORI"; |
467 const char kAppSettingNotificationType[] = "APP_SETTING"; | 481 const char kAppSettingNotificationType[] = "APP_SETTING"; |
468 const char kAppNotificationType[] = "APP"; | 482 const char kAppNotificationType[] = "APP"; |
469 const char kSearchEngineNotificationType[] = "SEARCH_ENGINE"; | 483 const char kSearchEngineNotificationType[] = "SEARCH_ENGINE"; |
470 const char kSessionNotificationType[] = "SESSION"; | 484 const char kSessionNotificationType[] = "SESSION"; |
471 const char kAutofillProfileNotificationType[] = "AUTOFILL_PROFILE"; | 485 const char kAutofillProfileNotificationType[] = "AUTOFILL_PROFILE"; |
472 const char kAppNotificationNotificationType[] = "APP_NOTIFICATION"; | 486 const char kAppNotificationNotificationType[] = "APP_NOTIFICATION"; |
| 487 const char kHistoryDeleteDirectiveNotificationType[] = |
| 488 "HISTORY_DELETE_DIRECTIVE"; |
473 const char kDeviceInfoNotificationType[] = "DEVICE_INFO"; | 489 const char kDeviceInfoNotificationType[] = "DEVICE_INFO"; |
474 } // namespace | 490 } // namespace |
475 | 491 |
476 bool RealModelTypeToNotificationType(ModelType model_type, | 492 bool RealModelTypeToNotificationType(ModelType model_type, |
477 std::string* notification_type) { | 493 std::string* notification_type) { |
478 switch (model_type) { | 494 switch (model_type) { |
479 case BOOKMARKS: | 495 case BOOKMARKS: |
480 *notification_type = kBookmarkNotificationType; | 496 *notification_type = kBookmarkNotificationType; |
481 return true; | 497 return true; |
482 case PREFERENCES: | 498 case PREFERENCES: |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 return true; | 530 return true; |
515 case AUTOFILL_PROFILE: | 531 case AUTOFILL_PROFILE: |
516 *notification_type = kAutofillProfileNotificationType; | 532 *notification_type = kAutofillProfileNotificationType; |
517 return true; | 533 return true; |
518 case EXTENSION_SETTINGS: | 534 case EXTENSION_SETTINGS: |
519 *notification_type = kExtensionSettingNotificationType; | 535 *notification_type = kExtensionSettingNotificationType; |
520 return true; | 536 return true; |
521 case APP_NOTIFICATIONS: | 537 case APP_NOTIFICATIONS: |
522 *notification_type = kAppNotificationNotificationType; | 538 *notification_type = kAppNotificationNotificationType; |
523 return true; | 539 return true; |
| 540 case HISTORY_DELETE_DIRECTIVES: |
| 541 *notification_type = kHistoryDeleteDirectiveNotificationType; |
524 case DEVICE_INFO: | 542 case DEVICE_INFO: |
525 *notification_type = kDeviceInfoNotificationType; | 543 *notification_type = kDeviceInfoNotificationType; |
526 return true; | 544 return true; |
527 default: | 545 default: |
528 break; | 546 break; |
529 } | 547 } |
530 notification_type->clear(); | 548 notification_type->clear(); |
531 return false; | 549 return false; |
532 } | 550 } |
533 | 551 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
571 return true; | 589 return true; |
572 } else if (notification_type == kAppSettingNotificationType) { | 590 } else if (notification_type == kAppSettingNotificationType) { |
573 *model_type = APP_SETTINGS; | 591 *model_type = APP_SETTINGS; |
574 return true; | 592 return true; |
575 } else if (notification_type == kExtensionSettingNotificationType) { | 593 } else if (notification_type == kExtensionSettingNotificationType) { |
576 *model_type = EXTENSION_SETTINGS; | 594 *model_type = EXTENSION_SETTINGS; |
577 return true; | 595 return true; |
578 } else if (notification_type == kAppNotificationNotificationType) { | 596 } else if (notification_type == kAppNotificationNotificationType) { |
579 *model_type = APP_NOTIFICATIONS; | 597 *model_type = APP_NOTIFICATIONS; |
580 return true; | 598 return true; |
| 599 } else if (notification_type == kHistoryDeleteDirectiveNotificationType) { |
| 600 *model_type = HISTORY_DELETE_DIRECTIVES; |
581 } else if (notification_type == kDeviceInfoNotificationType) { | 601 } else if (notification_type == kDeviceInfoNotificationType) { |
582 *model_type = DEVICE_INFO;; | 602 *model_type = DEVICE_INFO;; |
583 return true; | 603 return true; |
584 } else { | |
585 *model_type = UNSPECIFIED; | |
586 return false; | |
587 } | 604 } |
| 605 *model_type = UNSPECIFIED; |
| 606 return false; |
588 } | 607 } |
589 | 608 |
590 bool IsRealDataType(ModelType model_type) { | 609 bool IsRealDataType(ModelType model_type) { |
591 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT; | 610 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT; |
592 } | 611 } |
593 | 612 |
594 } // namespace syncer | 613 } // namespace syncer |
OLD | NEW |