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 dfe855b46df887a66996010fb331f50ebf3f812e..d01296a68e6d29139b91dba13b014bde4805bd53 100644 |
--- a/components/signin/core/common/profile_management_switches.cc |
+++ b/components/signin/core/common/profile_management_switches.cc |
@@ -6,6 +6,7 @@ |
#include "base/command_line.h" |
#include "base/metrics/field_trial.h" |
+#include "build/build_config.h" |
#include "components/signin/core/common/signin_switches.h" |
namespace { |
@@ -23,42 +24,66 @@ enum State { |
State GetProcessState() { |
// Get the full name of the field trial so that the underlying mechanism |
- // is properly initialize. |
+ // is properly initialized. |
std::string trial_type = |
base::FieldTrialList::FindFullName(kNewProfileManagementFieldTrialName); |
// Find the state of both command line args. |
bool is_new_profile_management = |
CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kNewProfileManagement); |
+ switches::kEnableNewProfileManagement); |
bool is_consistent_identity = |
CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableAccountConsistency); |
- |
- State state = STATE_NONE; |
- |
- // If both command line args are set, disable the field trial completely |
- // since the assigned group is undefined. Otherwise use the state of the |
- // command line flag specified. If neither command line arg is specified, |
- // see if the group was set from the server. |
- if (is_new_profile_management && is_consistent_identity) { |
+ 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) + |
+ (is_consistent_identity ? 1 : 0) + |
+ (not_new_profile_management ? 1 : 0) + |
+ (not_consistent_identity ? 1 : 0); |
+ bool invalid_commandline = count_args > 1; |
+ |
+ // 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. |
+ if (invalid_commandline) { |
base::FieldTrial* field_trial = |
base::FieldTrialList::Find(kNewProfileManagementFieldTrialName); |
if (field_trial) |
field_trial->Disable(); |
+ trial_type.clear(); |
+ } |
+ |
+ // 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) { |
return STATE_ACCOUNT_CONSISTENCY; |
} else if (is_new_profile_management) { |
return STATE_NEW_PROFILE_MANAGEMENT; |
- } else if (is_consistent_identity) { |
- return STATE_ACCOUNT_CONSISTENCY; |
+ } else if (not_new_profile_management) { |
+ return STATE_NONE; |
+ } else if (not_consistent_identity) { |
+ return STATE_NEW_PROFILE_MANAGEMENT; |
} |
- if (state == STATE_NONE && !trial_type.empty()) { |
+#if defined(OS_ANDROID) |
+ State state = STATE_ACCOUNT_CONSISTENCY; |
+#else |
+ State state = STATE_NONE; |
+#endif |
+ |
+ if (!trial_type.empty()) { |
if (trial_type == "Enabled") { |
state = STATE_NEW_PROFILE_MANAGEMENT; |
} else if (trial_type == "AccountConsistency") { |
state = STATE_ACCOUNT_CONSISTENCY; |
+ } else { |
+ state = STATE_NONE; |
} |
} |
@@ -120,4 +145,14 @@ bool IsNewProfileManagementPreviewEnabled() { |
return is_new_avatar_menu && IsNewProfileManagement(); |
} |
+void EnableNewProfileManagementForTesting(base::CommandLine* command_line) { |
+ command_line->AppendSwitch(switches::kEnableNewProfileManagement); |
+ DCHECK(!command_line->HasSwitch(switches::kDisableNewProfileManagement)); |
+} |
+ |
+void EnableAccountConsistencyForTesting(base::CommandLine* command_line) { |
+ command_line->AppendSwitch(switches::kEnableAccountConsistency); |
+ DCHECK(!command_line->HasSwitch(switches::kDisableAccountConsistency)); |
+} |
+ |
} // namespace switches |