Index: ash/wm/dock/docked_window_layout_manager.h |
diff --git a/ash/wm/dock/docked_window_layout_manager.h b/ash/wm/dock/docked_window_layout_manager.h |
index f380f77d5afca0a0ec1b7fa1ccc1e417eb10661d..737a7edaf0a5e2834406e5820a94814a240f5d54 100644 |
--- a/ash/wm/dock/docked_window_layout_manager.h |
+++ b/ash/wm/dock/docked_window_layout_manager.h |
@@ -17,6 +17,7 @@ |
#include "base/gtest_prod_util.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/observer_list.h" |
+#include "base/time/time.h" |
#include "ui/aura/client/activation_change_observer.h" |
#include "ui/aura/layout_manager.h" |
#include "ui/aura/window.h" |
@@ -45,6 +46,31 @@ class DockedWindowResizerTest; |
class ShelfLayoutManager; |
class WorkspaceController; |
+// User action recorded for use in UMA histograms. |
+enum DockedAction { |
+ DOCKED_ACTION_NONE, // Regular drag of undocked window. Not recorded. |
+ DOCKED_ACTION_DOCK, // Dragged and docked a window. |
+ DOCKED_ACTION_UNDOCK, // Dragged and undocked a window. |
+ DOCKED_ACTION_RESIZE, // Resized a docked window. |
+ DOCKED_ACTION_REORDER, // Possibly reordered docked windows. |
+ DOCKED_ACTION_EVICT, // A docked window could not stay docked. |
+ DOCKED_ACTION_MAXIMIZE, // Maximized a docked window. |
+ DOCKED_ACTION_MINIMIZE, // Minimized a docked window. |
+ DOCKED_ACTION_RESTORE, // Restored a docked window that was minimized. |
+ DOCKED_ACTION_CLOSE, // Closed a window while it was docked. |
+ DOCKED_ACTION_COUNT, // Maximum value of this enum for histograms use. |
+}; |
+ |
+// Event source for the docking user action (when known). |
+enum DockedActionSource { |
+ DOCKED_ACTION_SOURCE_UNKNOWN, |
+ DOCKED_ACTION_SOURCE_MOUSE, |
+ DOCKED_ACTION_SOURCE_TOUCH, |
+ |
+ // Maximum value of this enum for histograms use. |
+ DOCKED_ACTION_SOURCE_COUNT, |
+}; |
+ |
struct WindowWithHeight { |
explicit WindowWithHeight(aura::Window* window) : |
window_(window), |
@@ -104,7 +130,8 @@ class ASH_EXPORT DockedWindowLayoutManager |
// Called by a DockedWindowResizer when a window is no longer being dragged. |
// Stops observing the window unless it is a child. |
- void FinishDragging(); |
+ // Records |action| by |source| in UMA. |
+ void FinishDragging(DockedAction action, DockedActionSource source); |
ash::Launcher* launcher() { return launcher_; } |
void SetLauncher(ash::Launcher* launcher); |
@@ -180,6 +207,12 @@ class ASH_EXPORT DockedWindowLayoutManager |
void MinimizeDockedWindow(wm::WindowState* window_state); |
void RestoreDockedWindow(wm::WindowState* window_state); |
+ // Record user-initiated |action| by |source| in UMA metrics. |
+ void RecordUmaAction(DockedAction action, DockedActionSource source); |
+ |
+ // Updates |docked_width_| and UMA histograms. |
+ void UpdateDockedWidth(int width); |
+ |
// Updates docked layout state when a window gets inside the dock. |
void OnDraggedWindowDocked(aura::Window* window); |
@@ -267,6 +300,10 @@ class ASH_EXPORT DockedWindowLayoutManager |
// are currently focused. |
aura::Window* last_active_window_; |
+ // Timestamp of the last user-initiated action that changed docked state. |
+ // Used in UMA metrics. |
+ base::Time last_action_time_; |
+ |
// Widget used to paint a background for the docked area. |
scoped_ptr<views::Widget> background_widget_; |