| // Copyright 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef ASH_MULTI_PROFILE_UMA_H_ | 
 | #define ASH_MULTI_PROFILE_UMA_H_ | 
 |  | 
 | #include "ash/ash_export.h" | 
 | #include "base/macros.h" | 
 |  | 
 | namespace ash { | 
 |  | 
 | // Records UMA statistics for multiprofile actions. | 
 | // Note: There is also an action to switch profile windows from the | 
 | // browser frame that is recorded by the "Profile.OpenMethod" metric. | 
 | class ASH_EXPORT MultiProfileUMA { | 
 |  public: | 
 |   // Keep these enums up to date with tools/metrics/histograms/histograms.xml. | 
 |   enum SessionMode { | 
 |     SESSION_SINGLE_USER_MODE = 0, | 
 |     SESSION_SIDE_BY_SIDE_MODE, | 
 |     SESSION_SEPARATE_DESKTOP_MODE, | 
 |     NUM_SESSION_MODES | 
 |   }; | 
 |  | 
 |   enum SigninUserAction { | 
 |     SIGNIN_USER_BY_TRAY = 0, | 
 |     SIGNIN_USER_BY_BROWSER_FRAME, | 
 |     NUM_SIGNIN_USER_ACTIONS | 
 |   }; | 
 |  | 
 |   enum SwitchActiveUserAction { | 
 |     SWITCH_ACTIVE_USER_BY_TRAY = 0, | 
 |     SWITCH_ACTIVE_USER_BY_ACCELERATOR, | 
 |     NUM_SWITCH_ACTIVE_USER_ACTIONS | 
 |   }; | 
 |  | 
 |   enum TeleportWindowType { | 
 |     TELEPORT_WINDOW_BROWSER = 0, | 
 |     TELEPORT_WINDOW_INCOGNITO_BROWSER, | 
 |     TELEPORT_WINDOW_V1_APP, | 
 |     TELEPORT_WINDOW_V2_APP, | 
 |     TELEPORT_WINDOW_PANEL, | 
 |     TELEPORT_WINDOW_POPUP, | 
 |     TELEPORT_WINDOW_UNKNOWN, | 
 |     NUM_TELEPORT_WINDOW_TYPES | 
 |   }; | 
 |  | 
 |   enum TeleportWindowAction { | 
 |     TELEPORT_WINDOW_DRAG_AND_DROP = 0, | 
 |     TELEPORT_WINDOW_CAPTION_MENU, | 
 |     TELEPORT_WINDOW_RETURN_BY_MINIMIZE, | 
 |     TELEPORT_WINDOW_RETURN_BY_LAUNCHER, | 
 |     NUM_TELEPORT_WINDOW_ACTIONS | 
 |   }; | 
 |  | 
 |   // Record the type of user (multi profile) session. | 
 |   static void RecordSessionMode(SessionMode mode); | 
 |  | 
 |   // Record signing in a new user and what UI path was taken. | 
 |   static void RecordSigninUser(SigninUserAction action); | 
 |  | 
 |   // Record switching the active user and what UI path was taken. | 
 |   static void RecordSwitchActiveUser(SwitchActiveUserAction action); | 
 |  | 
 |   // Record the type of window which got teleported to another desk. | 
 |   static void RecordTeleportWindowType(TeleportWindowType window_type); | 
 |  | 
 |   // Record the way and how many times a window got teleported to another desk. | 
 |   static void RecordTeleportAction(TeleportWindowAction action); | 
 |  | 
 |   // Record number of users joined into a session. Called every time a user gets | 
 |   // added. | 
 |   static void RecordUserCount(int number_of_users); | 
 |  | 
 |   // Record a discarded tab in the number of running users bucket. | 
 |   static void RecordDiscardedTab(int number_of_users); | 
 |  | 
 |  private: | 
 |   DISALLOW_IMPLICIT_CONSTRUCTORS(MultiProfileUMA); | 
 | }; | 
 |  | 
 | }  // namespace ash | 
 |  | 
 | #endif  // ASH_MULTI_PROFILE_UMA_H_ |