Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / components / autofill / core / common / password_generation_util.cc
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
15 PasswordGenerationActions::PasswordGenerationActions()
16     : learn_more_visited(false),
17       password_accepted(false),
18       password_edited(false),
19       password_regenerated(false) {
20 }
21
22 PasswordGenerationActions::~PasswordGenerationActions() {
23 }
24
25 void 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
39 void LogPasswordGenerationEvent(PasswordGenerationEvent event) {
40   UMA_HISTOGRAM_ENUMERATION("PasswordGeneration.Event",
41                             event, EVENT_ENUM_COUNT);
42 }
43
44 bool 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 != "Disabled";
59 }
60
61 }  // namespace password_generation
62 }  // namespace autofill