summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-20 04:35:23 +0000
committerflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-20 04:35:23 +0000
commit67ca0eb3295d44f3e347557152ac58b88c4efdc2 (patch)
tree831adb23f83a0974b6d82755e0da6715b1881654 /ash
parent0f97288ccac1e5178c22618a9ca3ea59326333f9 (diff)
downloadchromium_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.h9
-rw-r--r--ash/wm/overview/window_overview.cc10
-rw-r--r--ash/wm/overview/window_overview.h4
-rw-r--r--ash/wm/overview/window_selector.cc2
-rw-r--r--ash/wm/overview/window_selector_controller.cc18
-rw-r--r--ash/wm/overview/window_selector_controller.h5
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);
};