Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Side by Side Diff: sync/syncable/model_type.cc

Issue 14053004: Add ManagedUserSettings Sync data type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/strings/string_split.h" 7 #include "base/strings/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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 break; 94 break;
95 case DICTIONARY: 95 case DICTIONARY:
96 specifics->mutable_dictionary(); 96 specifics->mutable_dictionary();
97 break; 97 break;
98 case FAVICON_IMAGES: 98 case FAVICON_IMAGES:
99 specifics->mutable_favicon_image(); 99 specifics->mutable_favicon_image();
100 break; 100 break;
101 case FAVICON_TRACKING: 101 case FAVICON_TRACKING:
102 specifics->mutable_favicon_tracking(); 102 specifics->mutable_favicon_tracking();
103 break; 103 break;
104 case MANAGED_USER_SETTINGS:
105 specifics->mutable_managed_user_setting();
106 break;
104 default: 107 default:
105 NOTREACHED() << "No known extension for model type."; 108 NOTREACHED() << "No known extension for model type.";
106 } 109 }
107 } 110 }
108 111
109 ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) { 112 ModelType GetModelTypeFromSpecificsFieldNumber(int field_number) {
110 ModelTypeSet protocol_types = ProtocolTypes(); 113 ModelTypeSet protocol_types = ProtocolTypes();
111 for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good(); 114 for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good();
112 iter.Inc()) { 115 iter.Inc()) {
113 if (GetSpecificsFieldNumberFromModelType(iter.Get()) == field_number) 116 if (GetSpecificsFieldNumberFromModelType(iter.Get()) == field_number)
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 case PRIORITY_PREFERENCES: 183 case PRIORITY_PREFERENCES:
181 return sync_pb::EntitySpecifics::kPriorityPreferenceFieldNumber; 184 return sync_pb::EntitySpecifics::kPriorityPreferenceFieldNumber;
182 break; 185 break;
183 case DICTIONARY: 186 case DICTIONARY:
184 return sync_pb::EntitySpecifics::kDictionaryFieldNumber; 187 return sync_pb::EntitySpecifics::kDictionaryFieldNumber;
185 break; 188 break;
186 case FAVICON_IMAGES: 189 case FAVICON_IMAGES:
187 return sync_pb::EntitySpecifics::kFaviconImageFieldNumber; 190 return sync_pb::EntitySpecifics::kFaviconImageFieldNumber;
188 case FAVICON_TRACKING: 191 case FAVICON_TRACKING:
189 return sync_pb::EntitySpecifics::kFaviconTrackingFieldNumber; 192 return sync_pb::EntitySpecifics::kFaviconTrackingFieldNumber;
193 case MANAGED_USER_SETTINGS:
194 return sync_pb::EntitySpecifics::kManagedUserSettingFieldNumber;
190 default: 195 default:
191 NOTREACHED() << "No known extension for model type."; 196 NOTREACHED() << "No known extension for model type.";
192 return 0; 197 return 0;
193 } 198 }
194 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of " 199 NOTREACHED() << "Needed for linux_keep_shadow_stacks because of "
195 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681"; 200 << "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20681";
196 return 0; 201 return 0;
197 } 202 }
198 203
199 FullModelTypeSet ToFullModelTypeSet(ModelTypeSet in) { 204 FullModelTypeSet ToFullModelTypeSet(ModelTypeSet in) {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 301
297 if (specifics.has_dictionary()) 302 if (specifics.has_dictionary())
298 return DICTIONARY; 303 return DICTIONARY;
299 304
300 if (specifics.has_favicon_image()) 305 if (specifics.has_favicon_image())
301 return FAVICON_IMAGES; 306 return FAVICON_IMAGES;
302 307
303 if (specifics.has_favicon_tracking()) 308 if (specifics.has_favicon_tracking())
304 return FAVICON_TRACKING; 309 return FAVICON_TRACKING;
305 310
311 if (specifics.has_managed_user_setting())
312 return MANAGED_USER_SETTINGS;
313
306 return UNSPECIFIED; 314 return UNSPECIFIED;
307 } 315 }
308 316
309 ModelTypeSet ProtocolTypes() { 317 ModelTypeSet ProtocolTypes() {
310 ModelTypeSet set = ModelTypeSet::All(); 318 ModelTypeSet set = ModelTypeSet::All();
311 set.RemoveAll(ProxyTypes()); 319 set.RemoveAll(ProxyTypes());
312 return set; 320 return set;
313 } 321 }
314 322
315 ModelTypeSet UserTypes() { 323 ModelTypeSet UserTypes() {
(...skipping 29 matching lines...) Expand all
345 353
346 ModelTypeSet EncryptableUserTypes() { 354 ModelTypeSet EncryptableUserTypes() {
347 ModelTypeSet encryptable_user_types = UserTypes(); 355 ModelTypeSet encryptable_user_types = UserTypes();
348 // We never encrypt history delete directives. 356 // We never encrypt history delete directives.
349 encryptable_user_types.Remove(HISTORY_DELETE_DIRECTIVES); 357 encryptable_user_types.Remove(HISTORY_DELETE_DIRECTIVES);
350 // Synced notifications are not encrypted since the server must see changes. 358 // Synced notifications are not encrypted since the server must see changes.
351 encryptable_user_types.Remove(SYNCED_NOTIFICATIONS); 359 encryptable_user_types.Remove(SYNCED_NOTIFICATIONS);
352 // Priority preferences are not encrypted because they might be synced before 360 // Priority preferences are not encrypted because they might be synced before
353 // encryption is ready. 361 // encryption is ready.
354 encryptable_user_types.RemoveAll(PriorityUserTypes()); 362 encryptable_user_types.RemoveAll(PriorityUserTypes());
363 // Managed user settings are not encrypted since they are set server-side.
364 encryptable_user_types.Remove(MANAGED_USER_SETTINGS);
355 // Proxy types have no sync representation and are therefore not encrypted. 365 // Proxy types have no sync representation and are therefore not encrypted.
356 // Note however that proxy types map to one or more protocol types, which 366 // Note however that proxy types map to one or more protocol types, which
357 // may or may not be encrypted themselves. 367 // may or may not be encrypted themselves.
358 encryptable_user_types.RemoveAll(ProxyTypes()); 368 encryptable_user_types.RemoveAll(ProxyTypes());
359 return encryptable_user_types; 369 return encryptable_user_types;
360 } 370 }
361 371
362 ModelTypeSet PriorityUserTypes() { 372 ModelTypeSet PriorityUserTypes() {
363 return ModelTypeSet(PRIORITY_PREFERENCES); 373 return ModelTypeSet(PRIORITY_PREFERENCES);
364 } 374 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 case EXPERIMENTS: 443 case EXPERIMENTS:
434 return "Experiments"; 444 return "Experiments";
435 case PRIORITY_PREFERENCES: 445 case PRIORITY_PREFERENCES:
436 return "Priority Preferences"; 446 return "Priority Preferences";
437 case DICTIONARY: 447 case DICTIONARY:
438 return "Dictionary"; 448 return "Dictionary";
439 case FAVICON_IMAGES: 449 case FAVICON_IMAGES:
440 return "Favicon Images"; 450 return "Favicon Images";
441 case FAVICON_TRACKING: 451 case FAVICON_TRACKING:
442 return "Favicon Tracking"; 452 return "Favicon Tracking";
453 case MANAGED_USER_SETTINGS:
454 return "Managed User Settings";
443 case PROXY_TABS: 455 case PROXY_TABS:
444 return "Tabs"; 456 return "Tabs";
445 default: 457 default:
446 break; 458 break;
447 } 459 }
448 NOTREACHED() << "No known extension for model type."; 460 NOTREACHED() << "No known extension for model type.";
449 return "INVALID"; 461 return "INVALID";
450 } 462 }
451 463
452 // The normal rules about histograms apply here. Always append to the bottom of 464 // The normal rules about histograms apply here. Always append to the bottom of
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 case PRIORITY_PREFERENCES: 512 case PRIORITY_PREFERENCES:
501 return 21; 513 return 21;
502 case DICTIONARY: 514 case DICTIONARY:
503 return 22; 515 return 22;
504 case FAVICON_IMAGES: 516 case FAVICON_IMAGES:
505 return 23; 517 return 23;
506 case FAVICON_TRACKING: 518 case FAVICON_TRACKING:
507 return 24; 519 return 24;
508 case PROXY_TABS: 520 case PROXY_TABS:
509 return 25; 521 return 25;
522 case MANAGED_USER_SETTINGS:
523 return 26;
510 // Silence a compiler warning. 524 // Silence a compiler warning.
511 case MODEL_TYPE_COUNT: 525 case MODEL_TYPE_COUNT:
512 return 0; 526 return 0;
513 } 527 }
514 return 0; 528 return 0;
515 } 529 }
516 530
517 base::StringValue* ModelTypeToValue(ModelType model_type) { 531 base::StringValue* ModelTypeToValue(ModelType model_type) {
518 if (model_type >= FIRST_REAL_MODEL_TYPE) { 532 if (model_type >= FIRST_REAL_MODEL_TYPE) {
519 return new base::StringValue(ModelTypeToString(model_type)); 533 return new base::StringValue(ModelTypeToString(model_type));
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 else if (model_type_string == "Experiments") 595 else if (model_type_string == "Experiments")
582 return EXPERIMENTS; 596 return EXPERIMENTS;
583 else if (model_type_string == "Priority Preferences") 597 else if (model_type_string == "Priority Preferences")
584 return PRIORITY_PREFERENCES; 598 return PRIORITY_PREFERENCES;
585 else if (model_type_string == "Dictionary") 599 else if (model_type_string == "Dictionary")
586 return DICTIONARY; 600 return DICTIONARY;
587 else if (model_type_string == "Favicon Images") 601 else if (model_type_string == "Favicon Images")
588 return FAVICON_IMAGES; 602 return FAVICON_IMAGES;
589 else if (model_type_string == "Favicon Tracking") 603 else if (model_type_string == "Favicon Tracking")
590 return FAVICON_TRACKING; 604 return FAVICON_TRACKING;
605 else if (model_type_string == "Managed User Settings")
606 return MANAGED_USER_SETTINGS;
591 else if (model_type_string == "Tabs") 607 else if (model_type_string == "Tabs")
592 return PROXY_TABS; 608 return PROXY_TABS;
593 else 609 else
594 NOTREACHED() << "No known model type corresponding to " 610 NOTREACHED() << "No known model type corresponding to "
595 << model_type_string << "."; 611 << model_type_string << ".";
596 return UNSPECIFIED; 612 return UNSPECIFIED;
597 } 613 }
598 614
599 std::string ModelTypeSetToString(ModelTypeSet model_types) { 615 std::string ModelTypeSetToString(ModelTypeSet model_types) {
600 std::string result; 616 std::string result;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 case EXPERIMENTS: 685 case EXPERIMENTS:
670 return "google_chrome_experiments"; 686 return "google_chrome_experiments";
671 case PRIORITY_PREFERENCES: 687 case PRIORITY_PREFERENCES:
672 return "google_chrome_priority_preferences"; 688 return "google_chrome_priority_preferences";
673 case DICTIONARY: 689 case DICTIONARY:
674 return "google_chrome_dictionary"; 690 return "google_chrome_dictionary";
675 case FAVICON_IMAGES: 691 case FAVICON_IMAGES:
676 return "google_chrome_favicon_images"; 692 return "google_chrome_favicon_images";
677 case FAVICON_TRACKING: 693 case FAVICON_TRACKING:
678 return "google_chrome_favicon_tracking"; 694 return "google_chrome_favicon_tracking";
695 case MANAGED_USER_SETTINGS:
696 return "google_chrome_managed_user_settings";
679 case PROXY_TABS: 697 case PROXY_TABS:
680 return std::string(); 698 return std::string();
681 default: 699 default:
682 break; 700 break;
683 } 701 }
684 NOTREACHED() << "No known extension for model type."; 702 NOTREACHED() << "No known extension for model type.";
685 return "INVALID"; 703 return "INVALID";
686 } 704 }
687 705
688 // TODO(akalin): Figure out a better way to do these mappings. 706 // TODO(akalin): Figure out a better way to do these mappings.
(...skipping 17 matching lines...) Expand all
706 const char kAppNotificationNotificationType[] = "APP_NOTIFICATION"; 724 const char kAppNotificationNotificationType[] = "APP_NOTIFICATION";
707 const char kHistoryDeleteDirectiveNotificationType[] = 725 const char kHistoryDeleteDirectiveNotificationType[] =
708 "HISTORY_DELETE_DIRECTIVE"; 726 "HISTORY_DELETE_DIRECTIVE";
709 const char kSyncedNotificationType[] = "SYNCED_NOTIFICATION"; 727 const char kSyncedNotificationType[] = "SYNCED_NOTIFICATION";
710 const char kDeviceInfoNotificationType[] = "DEVICE_INFO"; 728 const char kDeviceInfoNotificationType[] = "DEVICE_INFO";
711 const char kExperimentsNotificationType[] = "EXPERIMENTS"; 729 const char kExperimentsNotificationType[] = "EXPERIMENTS";
712 const char kPriorityPreferenceNotificationType[] = "PRIORITY_PREFERENCE"; 730 const char kPriorityPreferenceNotificationType[] = "PRIORITY_PREFERENCE";
713 const char kDictionaryNotificationType[] = "DICTIONARY"; 731 const char kDictionaryNotificationType[] = "DICTIONARY";
714 const char kFaviconImageNotificationType[] = "FAVICON_IMAGE"; 732 const char kFaviconImageNotificationType[] = "FAVICON_IMAGE";
715 const char kFaviconTrackingNotificationType[] = "FAVICON_TRACKING"; 733 const char kFaviconTrackingNotificationType[] = "FAVICON_TRACKING";
734 const char kManagedUserSettingNotificationType[] = "MANAGED_USER_SETTING";
716 } // namespace 735 } // namespace
717 736
718 bool RealModelTypeToNotificationType(ModelType model_type, 737 bool RealModelTypeToNotificationType(ModelType model_type,
719 std::string* notification_type) { 738 std::string* notification_type) {
720 switch (model_type) { 739 switch (model_type) {
721 case BOOKMARKS: 740 case BOOKMARKS:
722 *notification_type = kBookmarkNotificationType; 741 *notification_type = kBookmarkNotificationType;
723 return true; 742 return true;
724 case PREFERENCES: 743 case PREFERENCES:
725 *notification_type = kPreferenceNotificationType; 744 *notification_type = kPreferenceNotificationType;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 return true; 799 return true;
781 case DICTIONARY: 800 case DICTIONARY:
782 *notification_type = kDictionaryNotificationType; 801 *notification_type = kDictionaryNotificationType;
783 return true; 802 return true;
784 case FAVICON_IMAGES: 803 case FAVICON_IMAGES:
785 *notification_type = kFaviconImageNotificationType; 804 *notification_type = kFaviconImageNotificationType;
786 return true; 805 return true;
787 case FAVICON_TRACKING: 806 case FAVICON_TRACKING:
788 *notification_type = kFaviconTrackingNotificationType; 807 *notification_type = kFaviconTrackingNotificationType;
789 return true; 808 return true;
809 case MANAGED_USER_SETTINGS:
810 *notification_type = kManagedUserSettingNotificationType;
811 return true;
790 default: 812 default:
791 break; 813 break;
792 } 814 }
793 notification_type->clear(); 815 notification_type->clear();
794 return false; 816 return false;
795 } 817 }
796 818
797 bool NotificationTypeToRealModelType(const std::string& notification_type, 819 bool NotificationTypeToRealModelType(const std::string& notification_type,
798 ModelType* model_type) { 820 ModelType* model_type) {
799 if (notification_type == kBookmarkNotificationType) { 821 if (notification_type == kBookmarkNotificationType) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 return true; 880 return true;
859 } else if (notification_type == kDictionaryNotificationType) { 881 } else if (notification_type == kDictionaryNotificationType) {
860 *model_type = DICTIONARY; 882 *model_type = DICTIONARY;
861 return true; 883 return true;
862 } else if (notification_type == kFaviconImageNotificationType) { 884 } else if (notification_type == kFaviconImageNotificationType) {
863 *model_type = FAVICON_IMAGES; 885 *model_type = FAVICON_IMAGES;
864 return true; 886 return true;
865 } else if (notification_type == kFaviconTrackingNotificationType) { 887 } else if (notification_type == kFaviconTrackingNotificationType) {
866 *model_type = FAVICON_TRACKING; 888 *model_type = FAVICON_TRACKING;
867 return true; 889 return true;
890 } else if (notification_type == kManagedUserSettingNotificationType) {
891 *model_type = MANAGED_USER_SETTINGS;
892 return true;
868 } 893 }
869 *model_type = UNSPECIFIED; 894 *model_type = UNSPECIFIED;
870 return false; 895 return false;
871 } 896 }
872 897
873 bool IsRealDataType(ModelType model_type) { 898 bool IsRealDataType(ModelType model_type) {
874 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT; 899 return model_type >= FIRST_REAL_MODEL_TYPE && model_type < MODEL_TYPE_COUNT;
875 } 900 }
876 901
877 bool IsActOnceDataType(ModelType model_type) { 902 bool IsActOnceDataType(ModelType model_type) {
878 return model_type == HISTORY_DELETE_DIRECTIVES; 903 return model_type == HISTORY_DELETE_DIRECTIVES;
879 } 904 }
880 905
881 } // namespace syncer 906 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698