signin_metrics.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
1// Copyright 2014 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_SIGNIN_CORE_BROWSER_SIGNIN_METRICS_H_
6#define COMPONENTS_SIGNIN_CORE_BROWSER_SIGNIN_METRICS_H_
7
8#include "base/time/time.h"
9
10namespace signin_metrics {
11
12// Enum for the ways in which primary account detection is done.
13enum DifferentPrimaryAccounts {
14  // token and cookie had same primary accounts.
15  ACCOUNTS_SAME = 0,
16  // Deprecated. Indicates different primary accounts.
17  UNUSED_ACCOUNTS_DIFFERENT,
18  // No GAIA cookie present, so the primaries are considered different.
19  NO_COOKIE_PRESENT,
20  // There was at least one cookie and one token, and the primaries differed.
21  COOKIE_AND_TOKEN_PRIMARIES_DIFFERENT,
22  NUM_DIFFERENT_PRIMARY_ACCOUNT_METRICS,
23};
24
25// Track all the ways a profile can become signed out as a histogram.
26enum ProfileSignout {
27  // The value used within unit tests
28  SIGNOUT_TEST = 0,
29  // The preference or policy controlling if signin is valid has changed.
30  SIGNOUT_PREF_CHANGED = 0,
31  // The valid pattern for signing in to the Google service changed.
32  GOOGLE_SERVICE_NAME_PATTERN_CHANGED,
33  // The preference or policy controlling if signin is valid changed during
34  // the signin process.
35  SIGNIN_PREF_CHANGED_DURING_SIGNIN,
36  // User clicked to signout from the settings page.
37  USER_CLICKED_SIGNOUT_SETTINGS,
38  // The signin process was aborted, but signin had succeeded, so signout. This
39  // may be due to a server response, policy definition or user action.
40  ABORT_SIGNIN,
41  // The sync server caused the profile to be signed out.
42  SERVER_FORCED_DISABLE,
43  // The credentials are being transfered to a new profile, so the old one is
44  // signed out.
45  TRANSFER_CREDENTIALS,
46
47  // Keep this as the last enum.
48  NUM_PROFILE_SIGNOUT_METRICS,
49};
50
51// Log to UMA histograms and UserCounts stats about a single execution of the
52// AccountReconciler.
53// |total_number_accounts| - How many accounts are in the browser for this
54//                           profile.
55// |count_added_to_cookie_jar| - How many accounts were in the browser but not
56//                               the cookie jar.
57// |count_added_to_token| - How may accounts were in the cookie jar but not in
58//                          the browser.
59// |primary_accounts_same| - False if the primary account for the cookie jar
60//                           and the token service were different; else true.
61// |is_first_reconcile| - True if these stats are from the first execution of
62//                        the AccountReconcilor.
63// |pre_count_gaia_cookies| - How many GAIA cookies were present before
64//                            the AccountReconcilor began modifying the state.
65void LogSigninAccountReconciliation(int total_number_accounts,
66                                    int count_added_to_cookie_jar,
67                                    int count_added_to_token,
68                                    bool primary_accounts_same,
69                                    bool is_first_reconcile,
70                                    int pre_count_gaia_cookies);
71
72// Track a successful signin.
73void LogSigninAddAccount();
74
75// Track a successful signin of a profile.
76void LogSigninProfile(bool is_first_run, base::Time install_date);
77
78// Track a profile signout.
79void LogSignout(ProfileSignout metric);
80
81// Tracks whether the external connection results were all fetched before
82// the reconcilor tried to use them with MergeSession.
83void LogExternalCcResultFetches(bool fetches_completed);
84
85}  // namespace signin_metrics
86
87#endif  // COMPONENTS_SIGNIN_CORE_BROWSER_SIGNIN_METRICS_H_
88