Home | History | Annotate | Download | only in ash
      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 ASH_MULTI_PROFILE_UMA_H_
      6 #define ASH_MULTI_PROFILE_UMA_H_
      7 
      8 #include "ash/ash_export.h"
      9 #include "base/basictypes.h"
     10 
     11 namespace 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.
     16 class 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_
     86