diff options
author | flackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-20 04:35:23 +0000 |
---|---|---|
committer | flackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-20 04:35:23 +0000 |
commit | 67ca0eb3295d44f3e347557152ac58b88c4efdc2 (patch) | |
tree | 831adb23f83a0974b6d82755e0da6715b1881654 /ash | |
parent | 0f97288ccac1e5178c22618a9ca3ea59326333f9 (diff) | |
download | chromium_src-67ca0eb3295d44f3e347557152ac58b88c4efdc2.zip chromium_src-67ca0eb3295d44f3e347557152ac58b88c4efdc2.tar.gz chromium_src-67ca0eb3295d44f3e347557152ac58b88c4efdc2.tar.bz2 |
Add UMA metrics for window selection and overview.
BUG=290995
Review URL: https://chromiumcodereview.appspot.com/24096024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224287 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/shell_delegate.h | 9 | ||||
-rw-r--r-- | ash/wm/overview/window_overview.cc | 10 | ||||
-rw-r--r-- | ash/wm/overview/window_overview.h | 4 | ||||
-rw-r--r-- | ash/wm/overview/window_selector.cc | 2 | ||||
-rw-r--r-- | ash/wm/overview/window_selector_controller.cc | 18 | ||||
-rw-r--r-- | ash/wm/overview/window_selector_controller.h | 5 |
6 files changed, 45 insertions, 3 deletions
diff --git a/ash/shell_delegate.h b/ash/shell_delegate.h index 38164f2..deedce8 100644 --- a/ash/shell_delegate.h +++ b/ash/shell_delegate.h @@ -89,6 +89,15 @@ enum UserMetricsAction { UMA_WINDOW_MAXIMIZE_BUTTON_MINIMIZE, UMA_WINDOW_MAXIMIZE_BUTTON_RESTORE, UMA_WINDOW_MAXIMIZE_BUTTON_SHOW_BUBBLE, + + // Thumbnail sized overview of windows triggered. This is a subset of + // UMA_WINDOW_SELECTION triggered by lingering during alt+tab cycles or + // pressing the overview key. + UMA_WINDOW_OVERVIEW, + + // Window selection started by beginning an alt+tab cycle or pressing the + // overview key. This does not count each step through an alt+tab cycle. + UMA_WINDOW_SELECTION, }; enum AccessibilityNotificationVisibility { diff --git a/ash/wm/overview/window_overview.cc b/ash/wm/overview/window_overview.cc index f4c9c08..b70cd57 100644 --- a/ash/wm/overview/window_overview.cc +++ b/ash/wm/overview/window_overview.cc @@ -8,9 +8,11 @@ #include "ash/screen_ash.h" #include "ash/shell.h" +#include "ash/shell_delegate.h" #include "ash/shell_window_ids.h" #include "ash/wm/overview/window_selector.h" #include "ash/wm/overview/window_selector_item.h" +#include "base/metrics/histogram.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/aura/root_window.h" #include "ui/aura/window.h" @@ -51,13 +53,19 @@ WindowOverview::WindowOverview(WindowSelector* window_selector, aura::RootWindow* single_root_window) : window_selector_(window_selector), windows_(windows), - single_root_window_(single_root_window) { + single_root_window_(single_root_window), + overview_start_time_(base::Time::Now()) { PositionWindows(); ash::Shell::GetInstance()->AddPreTargetHandler(this); + Shell* shell = Shell::GetInstance(); + shell->delegate()->RecordUserMetricsAction(UMA_WINDOW_OVERVIEW); } WindowOverview::~WindowOverview() { ash::Shell::GetInstance()->RemovePreTargetHandler(this); + UMA_HISTOGRAM_MEDIUM_TIMES( + "Ash.WindowSelector.TimeInOverview", + base::Time::Now() - overview_start_time_); } void WindowOverview::SetSelection(size_t index) { diff --git a/ash/wm/overview/window_overview.h b/ash/wm/overview/window_overview.h index b8c81db..fab13f0 100644 --- a/ash/wm/overview/window_overview.h +++ b/ash/wm/overview/window_overview.h @@ -8,6 +8,7 @@ #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" +#include "base/time/time.h" #include "ui/events/event_handler.h" namespace aura { @@ -91,6 +92,9 @@ class WindowOverview : public ui::EventHandler { // |single_root_window_|. aura::RootWindow* single_root_window_; + // The time when overview was started. + base::Time overview_start_time_; + DISALLOW_COPY_AND_ASSIGN(WindowOverview); }; diff --git a/ash/wm/overview/window_selector.cc b/ash/wm/overview/window_selector.cc index 3d6a34e..785edd4 100644 --- a/ash/wm/overview/window_selector.cc +++ b/ash/wm/overview/window_selector.cc @@ -14,6 +14,7 @@ #include "ash/wm/overview/window_selector_window.h" #include "ash/wm/window_settings.h" #include "base/auto_reset.h" +#include "base/metrics/histogram.h" #include "base/timer/timer.h" #include "ui/aura/client/activation_client.h" #include "ui/aura/client/focus_client.h" @@ -132,6 +133,7 @@ WindowSelector::WindowSelector(const WindowList& windows, } } RemoveFocusAndSetRestoreWindow(); + UMA_HISTOGRAM_COUNTS_100("Ash.WindowSelector.Items", windows_.size()); // Observe window activations and switchable containers on all root windows // for newly created windows during overview. diff --git a/ash/wm/overview/window_selector_controller.cc b/ash/wm/overview/window_selector_controller.cc index f9839dc..3a3108f 100644 --- a/ash/wm/overview/window_selector_controller.cc +++ b/ash/wm/overview/window_selector_controller.cc @@ -6,9 +6,11 @@ #include "ash/session_state_delegate.h" #include "ash/shell.h" +#include "ash/shell_delegate.h" #include "ash/wm/mru_window_tracker.h" #include "ash/wm/overview/window_selector.h" #include "ash/wm/window_util.h" +#include "base/metrics/histogram.h" namespace ash { @@ -36,9 +38,9 @@ void WindowSelectorController::ToggleOverview() { if (windows.empty()) return; - // Removing focus will hide popup windows like the omnibar or open menus. window_selector_.reset( new WindowSelector(windows, WindowSelector::OVERVIEW, this)); + OnSelectionStarted(); } } @@ -54,9 +56,9 @@ void WindowSelectorController::HandleCycleWindow( if (windows.empty()) return; - // Removing focus will hide popup windows like the omnibar or open menus. window_selector_.reset( new WindowSelector(windows, WindowSelector::CYCLE, this)); + OnSelectionStarted(); window_selector_->Step(direction); } else if (window_selector_->mode() == WindowSelector::CYCLE) { window_selector_->Step(direction); @@ -70,10 +72,22 @@ bool WindowSelectorController::IsSelecting() { void WindowSelectorController::OnWindowSelected(aura::Window* window) { window_selector_.reset(); wm::ActivateWindow(window); + last_selection_time_ = base::Time::Now(); } void WindowSelectorController::OnSelectionCanceled() { window_selector_.reset(); + last_selection_time_ = base::Time::Now(); +} + +void WindowSelectorController::OnSelectionStarted() { + Shell* shell = Shell::GetInstance(); + shell->delegate()->RecordUserMetricsAction(UMA_WINDOW_SELECTION); + if (!last_selection_time_.is_null()) { + UMA_HISTOGRAM_LONG_TIMES( + "Ash.WindowSelector.TimeBetweenUse", + base::Time::Now() - last_selection_time_); + } } } // namespace ash diff --git a/ash/wm/overview/window_selector_controller.h b/ash/wm/overview/window_selector_controller.h index 6b16892..2bd9697 100644 --- a/ash/wm/overview/window_selector_controller.h +++ b/ash/wm/overview/window_selector_controller.h @@ -13,6 +13,7 @@ #include "ash/wm/overview/window_selector_delegate.h" #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" +#include "base/time/time.h" #include "ui/aura/window_observer.h" namespace aura { @@ -59,7 +60,11 @@ class ASH_EXPORT WindowSelectorController private: friend class internal::WindowSelectorTest; + // Dispatched when window selection begins. + void OnSelectionStarted(); + scoped_ptr<WindowSelector> window_selector_; + base::Time last_selection_time_; DISALLOW_COPY_AND_ASSIGN(WindowSelectorController); }; |