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 12namespace autofill { 13namespace password_generation { 14 15PasswordGenerationActions::PasswordGenerationActions() 16 : learn_more_visited(false), 17 password_accepted(false), 18 password_edited(false), 19 password_regenerated(false) { 20} 21 22PasswordGenerationActions::~PasswordGenerationActions() { 23} 24 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 39void LogPasswordGenerationEvent(PasswordGenerationEvent event) { 40 UMA_HISTOGRAM_ENUMERATION("PasswordGeneration.Event", 41 event, EVENT_ENUM_COUNT); 42} 43 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