blob: 69c68b7443076ce62ac3ce95ac3de5c89e88d770 [file] [log] [blame]
James Cookb0bf8e82017-04-09 17:01:441// 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 ASH_MULTI_PROFILE_UMA_H_
6#define ASH_MULTI_PROFILE_UMA_H_
7
8#include "ash/ash_export.h"
9#include "base/macros.h"
10
11namespace ash {
12
13// Records UMA statistics for multiprofile actions.
14// Note: There is also an action to switch profile windows from the
15// browser frame that is recorded by the "Profile.OpenMethod" metric.
16class ASH_EXPORT MultiProfileUMA {
17 public:
18 // Keep these enums up to date with tools/metrics/histograms/histograms.xml.
19 enum SessionMode {
20 SESSION_SINGLE_USER_MODE = 0,
21 SESSION_SIDE_BY_SIDE_MODE,
22 SESSION_SEPARATE_DESKTOP_MODE,
23 NUM_SESSION_MODES
24 };
25
26 enum SigninUserAction {
27 SIGNIN_USER_BY_TRAY = 0,
28 SIGNIN_USER_BY_BROWSER_FRAME,
29 NUM_SIGNIN_USER_ACTIONS
30 };
31
32 enum SwitchActiveUserAction {
33 SWITCH_ACTIVE_USER_BY_TRAY = 0,
34 SWITCH_ACTIVE_USER_BY_ACCELERATOR,
35 NUM_SWITCH_ACTIVE_USER_ACTIONS
36 };
37
38 enum TeleportWindowType {
39 TELEPORT_WINDOW_BROWSER = 0,
40 TELEPORT_WINDOW_INCOGNITO_BROWSER,
41 TELEPORT_WINDOW_V1_APP,
42 TELEPORT_WINDOW_V2_APP,
43 TELEPORT_WINDOW_PANEL,
44 TELEPORT_WINDOW_POPUP,
45 TELEPORT_WINDOW_UNKNOWN,
46 NUM_TELEPORT_WINDOW_TYPES
47 };
48
49 enum TeleportWindowAction {
50 TELEPORT_WINDOW_DRAG_AND_DROP = 0,
51 TELEPORT_WINDOW_CAPTION_MENU,
52 TELEPORT_WINDOW_RETURN_BY_MINIMIZE,
53 TELEPORT_WINDOW_RETURN_BY_LAUNCHER,
54 NUM_TELEPORT_WINDOW_ACTIONS
55 };
56
57 // Record the type of user (multi profile) session.
58 static void RecordSessionMode(SessionMode mode);
59
60 // Record signing in a new user and what UI path was taken.
61 static void RecordSigninUser(SigninUserAction action);
62
63 // Record switching the active user and what UI path was taken.
64 static void RecordSwitchActiveUser(SwitchActiveUserAction action);
65
66 // Record the type of window which got teleported to another desk.
67 static void RecordTeleportWindowType(TeleportWindowType window_type);
68
69 // Record the way and how many times a window got teleported to another desk.
70 static void RecordTeleportAction(TeleportWindowAction action);
71
72 // Record number of users joined into a session. Called every time a user gets
73 // added.
74 static void RecordUserCount(int number_of_users);
75
76 // Record a discarded tab in the number of running users bucket.
77 static void RecordDiscardedTab(int number_of_users);
78
79 private:
80 DISALLOW_IMPLICIT_CONSTRUCTORS(MultiProfileUMA);
81};
82
83} // namespace ash
84
85#endif // ASH_MULTI_PROFILE_UMA_H_