password_generation_util.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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#ifndef COMPONENTS_AUTOFILL_CORE_COMMON_PASSWORD_GENERATION_UTIL_H_
6#define COMPONENTS_AUTOFILL_CORE_COMMON_PASSWORD_GENERATION_UTIL_H_
7
8namespace autofill {
9namespace password_generation {
10
11// Enumerates various events related to the password generation process.
12// Do not remove items from this enum as they are used for UMA stats logging.
13enum PasswordGenerationEvent {
14  // No Account creation form is detected.
15  NO_SIGN_UP_DETECTED,
16
17  // Account creation form is detected.
18  SIGN_UP_DETECTED,
19
20  // DEPRECATED: Password generation icon shown (old UI).
21  DEPRECATED_ICON_SHOWN,
22
23  // DEPRECATED: Password generation bubble shown (old UI).
24  DEPRECATED_BUBBLE_SHOWN,
25
26  // Password generation could be triggered if the user selects the appropriate
27  // element.
28  GENERATION_AVAILABLE,
29
30  // Password generation popup is shown after user focuses the appropriate
31  // password field.
32  GENERATION_POPUP_SHOWN,
33
34  // Generated password was accepted by the user.
35  PASSWORD_ACCEPTED,
36
37  // User focused the password field containing the generated password.
38  EDITING_POPUP_SHOWN,
39
40  // Password was changed after generation.
41  PASSWORD_EDITED,
42
43  // Generated password was deleted by the user
44  PASSWORD_DELETED,
45
46  // Number of enum entries, used for UMA histogram reporting macros.
47  EVENT_ENUM_COUNT
48};
49
50// Wrapper to store the user interactions with the password generation bubble.
51struct PasswordGenerationActions {
52  // Whether the user has clicked on the learn more link.
53  bool learn_more_visited;
54
55  // Whether the user has accepted the generated password.
56  bool password_accepted;
57
58  // Whether the user has manually edited password entry.
59  bool password_edited;
60
61  // Whether the user has clicked on the regenerate button.
62  bool password_regenerated;
63
64  PasswordGenerationActions();
65  ~PasswordGenerationActions();
66};
67
68void LogUserActions(PasswordGenerationActions actions);
69
70void LogPasswordGenerationEvent(PasswordGenerationEvent event);
71
72// Enumerates user actions after password generation bubble is shown.
73// These are visible for testing purposes.
74enum UserAction {
75  // User closes the bubble without any meaningful actions (e.g. use backspace
76  // key, close the bubble, click outside the bubble, etc).
77  IGNORE_FEATURE,
78
79  // User navigates to the learn more page. Note that in the current
80  // implementation this will result in closing the bubble so this action
81  // doesn't overlap with the following two actions.
82  LEARN_MORE,
83
84  // User accepts the generated password without manually editing it (but
85  // including changing it through the regenerate button).
86  ACCEPT_ORIGINAL_PASSWORD,
87
88  // User accepts the gererated password after manually editing it.
89  ACCEPT_AFTER_EDITING,
90
91  // Number of enum entries, used for UMA histogram reporting macros.
92  ACTION_ENUM_COUNT
93};
94
95// Returns true if Password Generation is enabled according to the field
96// trial result and the flags.
97bool IsPasswordGenerationEnabled();
98
99}  // namespace password_generation
100}  // namespace autofill
101
102#endif  // COMPONENTS_AUTOFILL_CORE_COMMON_PASSWORD_GENERATION_UTIL_H_
103