password_generation_util.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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