1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/autofill/core/common/password_generation_util.h" 6 7 #include "base/command_line.h" 8 #include "base/metrics/field_trial.h" 9 #include "base/metrics/histogram.h" 10 #include "components/autofill/core/common/autofill_switches.h" 11 12 namespace autofill { 13 namespace password_generation { 14 PasswordGenerationActions()15PasswordGenerationActions::PasswordGenerationActions() 16 : learn_more_visited(false), 17 password_accepted(false), 18 password_edited(false), 19 password_regenerated(false) { 20 } 21 ~PasswordGenerationActions()22PasswordGenerationActions::~PasswordGenerationActions() { 23 } 24 LogUserActions(PasswordGenerationActions actions)25void LogUserActions(PasswordGenerationActions actions) { 26 UserAction action = IGNORE_FEATURE; 27 if (actions.password_accepted) { 28 if (actions.password_edited) 29 action = ACCEPT_AFTER_EDITING; 30 else 31 action = ACCEPT_ORIGINAL_PASSWORD; 32 } else if (actions.learn_more_visited) { 33 action = LEARN_MORE; 34 } 35 UMA_HISTOGRAM_ENUMERATION("PasswordGeneration.UserActions", 36 action, ACTION_ENUM_COUNT); 37 } 38 LogPasswordGenerationEvent(PasswordGenerationEvent event)39void LogPasswordGenerationEvent(PasswordGenerationEvent event) { 40 UMA_HISTOGRAM_ENUMERATION("PasswordGeneration.Event", 41 event, EVENT_ENUM_COUNT); 42 } 43 IsPasswordGenerationEnabled()44bool IsPasswordGenerationEnabled() { 45 // Always fetch the field trial group to ensure it is reported correctly. 46 // The command line flags will be associated with a group that is reported 47 // so long as trial is actually queried. 48 std::string group_name = 49 base::FieldTrialList::FindFullName("PasswordGeneration"); 50 51 CommandLine* command_line = CommandLine::ForCurrentProcess(); 52 if (command_line->HasSwitch(switches::kDisablePasswordGeneration)) 53 return false; 54 55 if (command_line->HasSwitch(switches::kEnablePasswordGeneration)) 56 return true; 57 58 return group_name == "Enabled"; 59 } 60 61 } // namespace password_generation 62 } // namespace autofill 63