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

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

Issue 2859033002: [sync] Add constexpr to EnumSet (Closed)
Patch Set: [sync] Add constexpr to EnumSet Created 3 years, 7 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
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 "components/sync/base/model_type.h" 5 #include "components/sync/base/model_type.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 if (specifics.has_user_event()) 418 if (specifics.has_user_event())
419 return USER_EVENTS; 419 return USER_EVENTS;
420 if (specifics.has_nigori()) 420 if (specifics.has_nigori())
421 return NIGORI; 421 return NIGORI;
422 if (specifics.has_experiments()) 422 if (specifics.has_experiments())
423 return EXPERIMENTS; 423 return EXPERIMENTS;
424 424
425 return UNSPECIFIED; 425 return UNSPECIFIED;
426 } 426 }
427 427
428 ModelTypeSet ProtocolTypes() {
429 return Difference(ModelTypeSet::All(), ProxyTypes());
430 }
431
432 ModelTypeSet UserTypes() {
433 // TODO(sync): We should be able to build the actual enumset's internal
434 // bitset value here at compile time, instead of makes a new one each time.
435 return ModelTypeSet::FromRange(FIRST_USER_MODEL_TYPE, LAST_USER_MODEL_TYPE);
436 }
437
438 ModelTypeSet UserSelectableTypes() {
439 return ModelTypeSet(BOOKMARKS, PREFERENCES, PASSWORDS, AUTOFILL, THEMES,
440 TYPED_URLS, EXTENSIONS, APPS,
441 #if BUILDFLAG(ENABLE_READING_LIST)
442 READING_LIST,
443 #endif
444 PROXY_TABS);
445 }
446
447 bool IsUserSelectableType(ModelType model_type) {
448 return UserSelectableTypes().Has(model_type);
449 }
450
451 ModelTypeNameMap GetUserSelectableTypeNameMap() { 428 ModelTypeNameMap GetUserSelectableTypeNameMap() {
452 ModelTypeNameMap type_names; 429 ModelTypeNameMap type_names;
453 ModelTypeSet type_set = UserSelectableTypes(); 430 ModelTypeSet type_set = UserSelectableTypes();
454 ModelTypeSet::Iterator it = type_set.First(); 431 ModelTypeSet::Iterator it = type_set.First();
455 DCHECK_EQ(arraysize(kUserSelectableDataTypeNames), type_set.Size()); 432 DCHECK_EQ(arraysize(kUserSelectableDataTypeNames), type_set.Size());
456 for (size_t i = 0; i < arraysize(kUserSelectableDataTypeNames) && it.Good(); 433 for (size_t i = 0; i < arraysize(kUserSelectableDataTypeNames) && it.Good();
457 ++i, it.Inc()) { 434 ++i, it.Inc()) {
458 type_names[it.Get()] = kUserSelectableDataTypeNames[i]; 435 type_names[it.Get()] = kUserSelectableDataTypeNames[i];
459 } 436 }
460 return type_names; 437 return type_names;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 encryptable_user_types.Remove(SUPERVISED_USER_WHITELISTS); 469 encryptable_user_types.Remove(SUPERVISED_USER_WHITELISTS);
493 // User events are not encrypted since they are consumed server-side. 470 // User events are not encrypted since they are consumed server-side.
494 encryptable_user_types.Remove(USER_EVENTS); 471 encryptable_user_types.Remove(USER_EVENTS);
495 // Proxy types have no sync representation and are therefore not encrypted. 472 // Proxy types have no sync representation and are therefore not encrypted.
496 // Note however that proxy types map to one or more protocol types, which 473 // Note however that proxy types map to one or more protocol types, which
497 // may or may not be encrypted themselves. 474 // may or may not be encrypted themselves.
498 encryptable_user_types.RemoveAll(ProxyTypes()); 475 encryptable_user_types.RemoveAll(ProxyTypes());
499 return encryptable_user_types; 476 return encryptable_user_types;
500 } 477 }
501 478
502 ModelTypeSet PriorityUserTypes() {
503 return ModelTypeSet(DEVICE_INFO, PRIORITY_PREFERENCES);
504 }
505
506 ModelTypeSet ControlTypes() {
507 // TODO(sync): We should be able to build the actual enumset's internal
508 // bitset value here at compile time, instead of makes a new one each time.
509 return ModelTypeSet::FromRange(FIRST_CONTROL_MODEL_TYPE,
510 LAST_CONTROL_MODEL_TYPE);
511 }
512
513 ModelTypeSet ProxyTypes() {
514 return ModelTypeSet::FromRange(FIRST_PROXY_TYPE, LAST_PROXY_TYPE);
515 }
516
517 bool IsControlType(ModelType model_type) {
518 return ControlTypes().Has(model_type);
519 }
520
521 ModelTypeSet CoreTypes() {
522 ModelTypeSet result = PriorityCoreTypes();
523
524 // The following are low priority core types.
525 result.Put(SYNCED_NOTIFICATIONS);
526 result.Put(SYNCED_NOTIFICATION_APP_INFO);
527 result.Put(SUPERVISED_USER_SHARED_SETTINGS);
528 result.Put(SUPERVISED_USER_WHITELISTS);
529
530 return result;
531 }
532
533 ModelTypeSet PriorityCoreTypes() {
534 ModelTypeSet result = ControlTypes();
535
536 // The following are non-control core types.
537 result.Put(SUPERVISED_USERS);
538 result.Put(SUPERVISED_USER_SETTINGS);
539
540 return result;
541 }
542
543 const char* ModelTypeToString(ModelType model_type) { 479 const char* ModelTypeToString(ModelType model_type) {
544 // This is used in serialization routines as well as for displaying debug 480 // This is used in serialization routines as well as for displaying debug
545 // information. Do not attempt to change these string values unless you know 481 // information. Do not attempt to change these string values unless you know
546 // what you're doing. 482 // what you're doing.
547 if (model_type >= UNSPECIFIED && model_type < MODEL_TYPE_COUNT) 483 if (model_type >= UNSPECIFIED && model_type < MODEL_TYPE_COUNT)
548 return kModelTypeInfoMap[model_type].model_type_string; 484 return kModelTypeInfoMap[model_type].model_type_string;
549 NOTREACHED() << "No known extension for model type."; 485 NOTREACHED() << "No known extension for model type.";
550 return "Invalid"; 486 return "Invalid";
551 } 487 }
552 488
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 bool TypeSupportsHierarchy(ModelType model_type) { 661 bool TypeSupportsHierarchy(ModelType model_type) {
726 // TODO(stanisc): crbug/438313: Should this also include TOP_LEVEL_FOLDER? 662 // TODO(stanisc): crbug/438313: Should this also include TOP_LEVEL_FOLDER?
727 return model_type == BOOKMARKS; 663 return model_type == BOOKMARKS;
728 } 664 }
729 665
730 bool TypeSupportsOrdering(ModelType model_type) { 666 bool TypeSupportsOrdering(ModelType model_type) {
731 return model_type == BOOKMARKS; 667 return model_type == BOOKMARKS;
732 } 668 }
733 669
734 } // namespace syncer 670 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698