Home | History | Annotate | Download | only in common
      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 == "Enabled";
     59 }
     60 
     61 }  // namespace password_generation
     62 }  // namespace autofill
     63