Index: components/signin/core/common/profile_management_switches.cc |
diff --git a/components/signin/core/common/profile_management_switches.cc b/components/signin/core/common/profile_management_switches.cc |
index d24145cf013f0c93de1291cc2205361536a11a03..c2cab31693ae6b5073cc1cee43acd41ba664d56f 100644 |
--- a/components/signin/core/common/profile_management_switches.cc |
+++ b/components/signin/core/common/profile_management_switches.cc |
@@ -17,32 +17,36 @@ const char kNewProfileManagementFieldTrialName[] = "NewProfileManagement"; |
// below assumes the order of the values in this enum. That is, new profile |
// management is included in consistent identity. |
enum State { |
- STATE_NONE, |
+ STATE_OLD_AVATAR_MENU, |
+ STATE_NEW_AVATAR_MENU, |
STATE_NEW_PROFILE_MANAGEMENT, |
- STATE_ACCOUNT_CONSISTENCY |
+ STATE_ACCOUNT_CONSISTENCY, |
}; |
State GetProcessState() { |
- // Get the full name of the field trial so that the underlying mechanism |
- // is properly initialized. |
- std::string trial_type = |
- base::FieldTrialList::FindFullName(kNewProfileManagementFieldTrialName); |
- |
// Find the state of both command line args. |
+ bool is_new_avatar_menu = |
+ CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableNewAvatarMenu); |
bool is_new_profile_management = |
CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableNewProfileManagement); |
bool is_consistent_identity = |
CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableAccountConsistency); |
+ bool not_new_avatar_menu = |
+ CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kDisableNewAvatarMenu); |
bool not_new_profile_management = |
CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kDisableNewProfileManagement); |
bool not_consistent_identity = |
CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kDisableAccountConsistency); |
- int count_args = (is_new_profile_management ? 1 : 0) + |
+ int count_args = (is_new_avatar_menu ? 1 : 0) + |
+ (is_new_profile_management ? 1 : 0) + |
(is_consistent_identity ? 1 : 0) + |
+ (not_new_avatar_menu ? 1 : 0) + |
(not_new_profile_management ? 1 : 0) + |
(not_consistent_identity ? 1 : 0); |
bool invalid_commandline = count_args > 1; |
@@ -50,6 +54,7 @@ State GetProcessState() { |
// At most only one of the command line args should be specified, otherwise |
// the finch group assignment is undefined. If this is the case, disable |
// the field trial so that data is not collected in the wrong group. |
+ std::string trial_type; |
if (invalid_commandline) { |
base::FieldTrial* field_trial = |
base::FieldTrialList::Find(kNewProfileManagementFieldTrialName); |
@@ -57,24 +62,35 @@ State GetProcessState() { |
field_trial->Disable(); |
trial_type.clear(); |
+ } else { |
+ // Since the experiment is not being disabled, get the full name of the |
+ // field trial which will initialize the underlying mechanism. |
+ trial_type = |
+ base::FieldTrialList::FindFullName(kNewProfileManagementFieldTrialName); |
} |
+ // Forcing the old avatar menu takes precedent over other args. |
// Enable command line args take precedent over disable command line args. |
// Consistent identity args take precedent over new profile management args. |
- if (is_consistent_identity) { |
+ if (not_new_avatar_menu) { |
+ return STATE_OLD_AVATAR_MENU; |
+ } else if (is_consistent_identity) { |
return STATE_ACCOUNT_CONSISTENCY; |
} else if (is_new_profile_management) { |
return STATE_NEW_PROFILE_MANAGEMENT; |
+ } else if (is_new_avatar_menu) { |
+ return STATE_NEW_AVATAR_MENU; |
} else if (not_new_profile_management) { |
- return STATE_NONE; |
+ return STATE_NEW_AVATAR_MENU; |
} else if (not_consistent_identity) { |
- return STATE_NEW_PROFILE_MANAGEMENT; |
+ return STATE_NEW_AVATAR_MENU; |
} |
+ // Set the default state |
#if defined(OS_ANDROID) |
State state = STATE_ACCOUNT_CONSISTENCY; |
#else |
- State state = STATE_NONE; |
+ State state = STATE_OLD_AVATAR_MENU; |
#endif |
if (!trial_type.empty()) { |
@@ -83,7 +99,7 @@ State GetProcessState() { |
} else if (trial_type == "AccountConsistency") { |
state = STATE_ACCOUNT_CONSISTENCY; |
} else { |
- state = STATE_NONE; |
+ state = STATE_OLD_AVATAR_MENU; |
} |
} |
@@ -123,13 +139,11 @@ bool IsFastUserSwitching() { |
bool IsGoogleProfileInfo() { |
return IsNewAvatarMenu() || |
- CheckFlag(switches::kGoogleProfileInfo, STATE_NONE); |
+ CheckFlag(switches::kGoogleProfileInfo, STATE_OLD_AVATAR_MENU); |
} |
bool IsNewAvatarMenu() { |
- bool is_new_avatar_menu = |
- CommandLine::ForCurrentProcess()->HasSwitch(switches::kNewAvatarMenu); |
- return is_new_avatar_menu || IsNewProfileManagement(); |
+ return GetProcessState() >= STATE_NEW_AVATAR_MENU; |
} |
bool IsNewProfileManagement() { |
@@ -142,7 +156,8 @@ bool IsNewProfileManagementPreviewEnabled() { |
} |
void EnableNewAvatarMenuForTesting(base::CommandLine* command_line) { |
- command_line->AppendSwitch(switches::kNewAvatarMenu); |
+ command_line->AppendSwitch(switches::kEnableNewAvatarMenu); |
+ DCHECK(!command_line->HasSwitch(switches::kDisableNewAvatarMenu)); |
} |
void EnableNewProfileManagementForTesting(base::CommandLine* command_line) { |