summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoredwardjung <edwardjung@chromium.org>2014-11-18 03:47:12 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-18 11:47:45 +0000
commitb8dde40da782604227baee3cd28c774920a13470 (patch)
treeb335128f4a19bcb2fc4fffc9f528aaea5210c366
parente290fe097bb6ee75c289b512efad07a1d2830489 (diff)
downloadchromium_src-b8dde40da782604227baee3cd28c774920a13470.zip
chromium_src-b8dde40da782604227baee3cd28c774920a13470.tar.gz
chromium_src-b8dde40da782604227baee3cd28c774920a13470.tar.bz2
Added histograms:
+ count frequency of use for each of the menu items. + log time taken to get to any menu item. + time taken to get to individual menu items. BUG=432561 Review URL: https://codereview.chromium.org/700673003 Cr-Commit-Position: refs/heads/master@{#304586}
-rw-r--r--chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc4
-rw-r--r--chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h4
-rw-r--r--chrome/browser/ui/toolbar/wrench_menu_model.cc309
-rw-r--r--chrome/browser/ui/toolbar/wrench_menu_model.h67
-rw-r--r--chrome/browser/ui/views/toolbar/wrench_menu.cc5
-rw-r--r--chrome/browser/ui/views/toolbar/wrench_menu.h5
-rw-r--r--tools/metrics/histograms/histograms.xml107
7 files changed, 493 insertions, 8 deletions
diff --git a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc
index 7c0218b..a42367e 100644
--- a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc
+++ b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc
@@ -310,6 +310,10 @@ void RecentTabsSubMenuModel::ExecuteCommand(int command_id, int event_flags) {
browser_->host_desktop_type(), disposition);
}
}
+ UMA_HISTOGRAM_TIMES("WrenchMenu.TimeToAction.RecentTab",
+ menu_opened_timer_.Elapsed());
+ UMA_HISTOGRAM_ENUMERATION("WrenchMenu.MenuAction", MENU_ACTION_RECENT_TAB,
+ LIMIT_MENU_ACTION);
}
int RecentTabsSubMenuModel::GetFirstRecentTabsCommandId() {
diff --git a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
index 4210a22..1e0df0a 100644
--- a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
+++ b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
@@ -9,6 +9,7 @@
#include "base/memory/weak_ptr.h"
#include "base/task/cancelable_task_tracker.h"
+#include "base/timer/elapsed_timer.h"
#include "chrome/browser/favicon/favicon_service.h"
#include "chrome/browser/sessions/tab_restore_service.h"
#include "chrome/browser/sessions/tab_restore_service_observer.h"
@@ -171,6 +172,9 @@ class RecentTabsSubMenuModel : public ui::SimpleMenuModel,
base::WeakPtrFactory<RecentTabsSubMenuModel> weak_ptr_factory_;
+ // Time the menu is open for until a recent tab is selected.
+ base::ElapsedTimer menu_opened_timer_;
+
DISALLOW_COPY_AND_ASSIGN(RecentTabsSubMenuModel);
};
diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.cc b/chrome/browser/ui/toolbar/wrench_menu_model.cc
index 27f91c3..cc1170b 100644
--- a/chrome/browser/ui/toolbar/wrench_menu_model.cc
+++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc
@@ -8,6 +8,7 @@
#include <cmath>
#include "base/command_line.h"
+#include "base/metrics/histogram.h"
#include "base/prefs/pref_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
@@ -277,6 +278,7 @@ void ToolsMenuModel::Build(Browser* browser) {
WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider,
Browser* browser)
: ui::SimpleMenuModel(this),
+ uma_action_recorded_(false),
provider_(provider),
browser_(browser),
tab_strip_model_(browser_->tab_strip_model()) {
@@ -408,17 +410,307 @@ void WrenchMenuModel::ExecuteCommand(int command_id, int event_flags) {
}
}
- if (command_id == IDC_HELP_PAGE_VIA_MENU)
- content::RecordAction(UserMetricsAction("ShowHelpTabViaWrenchMenu"));
+ LogMenuMetrics(command_id);
+ chrome::ExecuteCommand(browser_, command_id);
+}
+
+void WrenchMenuModel::LogMenuMetrics(int command_id) {
+ base::TimeDelta delta = timer_.Elapsed();
+
+ switch (command_id) {
+ case IDC_NEW_TAB:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.NewTab", delta);
+ LogMenuAction(MENU_ACTION_NEW_TAB);
+ break;
+ case IDC_NEW_WINDOW:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.NewWindow", delta);
+ LogMenuAction(MENU_ACTION_NEW_WINDOW);
+ break;
+ case IDC_NEW_INCOGNITO_WINDOW:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.NewIncognitoWindow",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_NEW_INCOGNITO_WINDOW);
+ break;
+
+ // Bookmarks sub menu.
+ case IDC_SHOW_BOOKMARK_BAR:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ShowBookmarkBar",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_SHOW_BOOKMARK_BAR);
+ break;
+ case IDC_SHOW_BOOKMARK_MANAGER:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ShowBookmarkMgr",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_SHOW_BOOKMARK_MANAGER);
+ break;
+ case IDC_IMPORT_SETTINGS:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ImportSettings",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_IMPORT_SETTINGS);
+ break;
+ case IDC_BOOKMARK_PAGE:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.BookmarkPage",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_BOOKMARK_PAGE);
+ break;
+ case IDC_BOOKMARK_ALL_TABS:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.BookmarkAllTabs",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_BOOKMARK_ALL_TABS);
+ break;
+ case IDC_PIN_TO_START_SCREEN:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.PinToStartScreen",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_PIN_TO_START_SCREEN);
+ break;
+
+ // Recent tabs menu.
+ case IDC_RESTORE_TAB:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.RestoreTab", delta);
+ LogMenuAction(MENU_ACTION_RESTORE_TAB);
+ break;
+
+ // Windows.
+ case IDC_WIN_DESKTOP_RESTART:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.WinDesktopRestart",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_WIN_DESKTOP_RESTART);
+ break;
+ case IDC_WIN8_METRO_RESTART:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Win8MetroRestart",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_WIN8_METRO_RESTART);
+ break;
+
+ case IDC_WIN_CHROMEOS_RESTART:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ChromeOSRestart",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_WIN_CHROMEOS_RESTART);
+ break;
+ case IDC_DISTILL_PAGE:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.DistillPage",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_DISTILL_PAGE);
+ break;
+ case IDC_SAVE_PAGE:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.SavePage", delta);
+ LogMenuAction(MENU_ACTION_SAVE_PAGE);
+ break;
+ case IDC_FIND:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Find", delta);
+ LogMenuAction(MENU_ACTION_FIND);
+ break;
+ case IDC_PRINT:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Print", delta);
+ LogMenuAction(MENU_ACTION_PRINT);
+ break;
+
+ // Edit menu.
+ case IDC_CUT:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Cut", delta);
+ LogMenuAction(MENU_ACTION_CUT);
+ break;
+ case IDC_COPY:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Copy", delta);
+ LogMenuAction(MENU_ACTION_COPY);
+ break;
+ case IDC_PASTE:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Paste", delta);
+ LogMenuAction(MENU_ACTION_PASTE);
+ break;
+
+ // Tools menu.
+ case IDC_CREATE_HOSTED_APP:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.CreateHostedApp",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_CREATE_HOSTED_APP);
+ break;
+ case IDC_CREATE_SHORTCUTS:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.CreateShortcuts",
+ delta);
+ LogMenuAction(MENU_ACTION_CREATE_SHORTCUTS);
+ break;
+ case IDC_MANAGE_EXTENSIONS:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ManageExtensions",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_MANAGE_EXTENSIONS);
+ break;
+ case IDC_TASK_MANAGER:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.TaskManager",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_TASK_MANAGER);
+ break;
+ case IDC_CLEAR_BROWSING_DATA:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ClearBrowsingData",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_CLEAR_BROWSING_DATA);
+ break;
+ case IDC_VIEW_SOURCE:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ViewSource", delta);
+ LogMenuAction(MENU_ACTION_VIEW_SOURCE);
+ break;
+ case IDC_DEV_TOOLS:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.DevTools", delta);
+ LogMenuAction(MENU_ACTION_DEV_TOOLS);
+ break;
+ case IDC_DEV_TOOLS_CONSOLE:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.DevToolsConsole",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_DEV_TOOLS_CONSOLE);
+ break;
+ case IDC_DEV_TOOLS_DEVICES:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.DevToolsDevices",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_DEV_TOOLS_DEVICES);
+ break;
+ case IDC_PROFILING_ENABLED:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ProfilingEnabled",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_PROFILING_ENABLED);
+ break;
- if (command_id == IDC_FULLSCREEN) {
- // We issue the UMA command here and not in BrowserCommandController or even
- // FullscreenController since we want to be able to distinguish this event
- // and a menu which is under development.
- content::RecordAction(UserMetricsAction("EnterFullScreenWithWrenchMenu"));
+ // Zoom menu
+ case IDC_ZOOM_MINUS:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ZoomMinus", delta);
+ LogMenuAction(MENU_ACTION_ZOOM_MINUS);
+ }
+ break;
+ case IDC_ZOOM_PLUS:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ZoomPlus", delta);
+ LogMenuAction(MENU_ACTION_ZOOM_PLUS);
+ }
+ break;
+ case IDC_FULLSCREEN:
+ content::RecordAction(UserMetricsAction("EnterFullScreenWithWrenchMenu"));
+
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.EnterFullScreen",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_FULLSCREEN);
+ break;
+
+ case IDC_SHOW_HISTORY:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ShowHistory",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_SHOW_HISTORY);
+ break;
+ case IDC_SHOW_DOWNLOADS:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ShowDownloads",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_SHOW_DOWNLOADS);
+ break;
+ case IDC_SHOW_SYNC_SETUP:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ShowSyncSetup",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_SHOW_SYNC_SETUP);
+ break;
+ case IDC_OPTIONS:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Settings", delta);
+ LogMenuAction(MENU_ACTION_OPTIONS);
+ break;
+ case IDC_ABOUT:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.About", delta);
+ LogMenuAction(MENU_ACTION_ABOUT);
+ break;
+
+ // Help menu.
+ case IDC_HELP_PAGE_VIA_MENU:
+ content::RecordAction(UserMetricsAction("ShowHelpTabViaWrenchMenu"));
+
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.HelpPage", delta);
+ LogMenuAction(MENU_ACTION_HELP_PAGE_VIA_MENU);
+ break;
+ #if defined(GOOGLE_CHROME_BUILD)
+ case IDC_FEEDBACK:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Feedback", delta);
+ LogMenuAction(MENU_ACTION_FEEDBACK);
+ break;
+ #endif
+
+ case IDC_TOGGLE_REQUEST_TABLET_SITE:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.RequestTabletSite",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_TOGGLE_REQUEST_TABLET_SITE);
+ break;
+ case IDC_EXIT:
+ if (!uma_action_recorded_)
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.Exit", delta);
+ LogMenuAction(MENU_ACTION_EXIT);
+ break;
}
- chrome::ExecuteCommand(browser_, command_id);
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction", delta);
+ uma_action_recorded_ = true;
+ }
+}
+
+void WrenchMenuModel::LogMenuAction(int action_id) {
+ UMA_HISTOGRAM_ENUMERATION("WrenchMenu.MenuAction", action_id,
+ LIMIT_MENU_ACTION);
}
bool WrenchMenuModel::IsCommandIdChecked(int command_id) const {
@@ -670,6 +962,7 @@ void WrenchMenuModel::Build() {
}
RemoveTrailingSeparators();
+ uma_action_recorded_ = false;
}
void WrenchMenuModel::AddGlobalErrorMenuItems() {
diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.h b/chrome/browser/ui/toolbar/wrench_menu_model.h
index ff787c8..4b9cefe 100644
--- a/chrome/browser/ui/toolbar/wrench_menu_model.h
+++ b/chrome/browser/ui/toolbar/wrench_menu_model.h
@@ -7,6 +7,8 @@
#include "base/files/file_path.h"
#include "base/memory/scoped_ptr.h"
+#include "base/time/time.h"
+#include "base/timer/elapsed_timer.h"
#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
#include "content/public/browser/host_zoom_map.h"
#include "content/public/browser/notification_observer.h"
@@ -24,6 +26,54 @@ namespace {
class MockWrenchMenuModel;
} // namespace
+enum WrenchMenuAction {
+ MENU_ACTION_NEW_TAB = 0,
+ MENU_ACTION_NEW_WINDOW,
+ MENU_ACTION_NEW_INCOGNITO_WINDOW,
+ MENU_ACTION_SHOW_BOOKMARK_BAR,
+ MENU_ACTION_SHOW_BOOKMARK_MANAGER,
+ MENU_ACTION_IMPORT_SETTINGS,
+ MENU_ACTION_BOOKMARK_PAGE,
+ MENU_ACTION_BOOKMARK_ALL_TABS,
+ MENU_ACTION_PIN_TO_START_SCREEN,
+ MENU_ACTION_RESTORE_TAB,
+ MENU_ACTION_WIN_DESKTOP_RESTART,
+ MENU_ACTION_WIN8_METRO_RESTART,
+ MENU_ACTION_WIN_CHROMEOS_RESTART,
+ MENU_ACTION_DISTILL_PAGE,
+ MENU_ACTION_SAVE_PAGE,
+ MENU_ACTION_FIND,
+ MENU_ACTION_PRINT,
+ MENU_ACTION_CUT,
+ MENU_ACTION_COPY,
+ MENU_ACTION_PASTE,
+ MENU_ACTION_CREATE_HOSTED_APP,
+ MENU_ACTION_CREATE_SHORTCUTS,
+ MENU_ACTION_MANAGE_EXTENSIONS,
+ MENU_ACTION_TASK_MANAGER,
+ MENU_ACTION_CLEAR_BROWSING_DATA,
+ MENU_ACTION_VIEW_SOURCE,
+ MENU_ACTION_DEV_TOOLS,
+ MENU_ACTION_DEV_TOOLS_CONSOLE,
+ MENU_ACTION_DEV_TOOLS_DEVICES,
+ MENU_ACTION_PROFILING_ENABLED,
+ MENU_ACTION_ZOOM_MINUS,
+ MENU_ACTION_ZOOM_PLUS,
+ MENU_ACTION_FULLSCREEN,
+ MENU_ACTION_SHOW_HISTORY,
+ MENU_ACTION_SHOW_DOWNLOADS,
+ MENU_ACTION_SHOW_SYNC_SETUP,
+ MENU_ACTION_OPTIONS,
+ MENU_ACTION_ABOUT,
+ MENU_ACTION_HELP_PAGE_VIA_MENU,
+ MENU_ACTION_FEEDBACK,
+ MENU_ACTION_TOGGLE_REQUEST_TABLET_SITE,
+ MENU_ACTION_EXIT,
+ MENU_ACTION_RECENT_TAB,
+ MENU_ACTION_BOOKMARK_OPEN,
+ LIMIT_MENU_ACTION
+};
+
// A menu model that builds the contents of an encoding menu.
class EncodingMenuModel : public ui::SimpleMenuModel,
public ui::SimpleMenuModel::Delegate {
@@ -157,6 +207,23 @@ class WrenchMenuModel : public ui::SimpleMenuModel,
bool ShouldShowNewIncognitoWindowMenuItem();
+ // Called when a command is selected.
+ // Logs UMA metrics about which command was chosen and how long the user
+ // took to select the command.
+ void LogMenuMetrics(int command_id);
+
+ // Helper function to record the menu action in a UMA histogram.
+ void LogMenuAction(int action_id);
+
+ // Time menu has been open. Used by LogMenuMetrics() to record the time
+ // to action when the user selects a menu item.
+ base::ElapsedTimer timer_;
+
+ // Whether a UMA menu action has been recorded since the menu is open.
+ // Only the first time to action is recorded since some commands
+ // (zoom controls) don't dimiss the menu.
+ bool uma_action_recorded_;
+
// Models for the special menu items with buttons.
scoped_ptr<ui::ButtonMenuItemModel> edit_menu_item_model_;
scoped_ptr<ui::ButtonMenuItemModel> zoom_menu_item_model_;
diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.cc b/chrome/browser/ui/views/toolbar/wrench_menu.cc
index 0af66b1..8ade45a 100644
--- a/chrome/browser/ui/views/toolbar/wrench_menu.cc
+++ b/chrome/browser/ui/views/toolbar/wrench_menu.cc
@@ -8,6 +8,7 @@
#include <cmath>
#include <set>
+#include "base/metrics/histogram.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/app/chrome_command_ids.h"
@@ -1002,6 +1003,10 @@ bool WrenchMenu::IsCommandEnabled(int command_id) const {
void WrenchMenu::ExecuteCommand(int command_id, int mouse_event_flags) {
if (IsBookmarkCommand(command_id)) {
+ UMA_HISTOGRAM_TIMES("WrenchMenu.TimeToAction.BookmarkOpen",
+ menu_opened_timer_.Elapsed());
+ UMA_HISTOGRAM_ENUMERATION("WrenchMenu.MenuAction",
+ MENU_ACTION_BOOKMARK_OPEN, LIMIT_MENU_ACTION);
bookmark_menu_delegate_->ExecuteCommand(command_id, mouse_event_flags);
return;
}
diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.h b/chrome/browser/ui/views/toolbar/wrench_menu.h
index 267f1de..6dfbe1a 100644
--- a/chrome/browser/ui/views/toolbar/wrench_menu.h
+++ b/chrome/browser/ui/views/toolbar/wrench_menu.h
@@ -10,6 +10,8 @@
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
+#include "base/time/time.h"
+#include "base/timer/elapsed_timer.h"
#include "components/bookmarks/browser/base_bookmark_model_observer.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
@@ -184,6 +186,9 @@ class WrenchMenu : public views::MenuDelegate,
ObserverList<WrenchMenuObserver> observer_list_;
+ // Records the time from when menu opens to when the user selects a menu item.
+ base::ElapsedTimer menu_opened_timer_;
+
DISALLOW_COPY_AND_ASSIGN(WrenchMenu);
};
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 18a938a..f902aaa 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -40719,6 +40719,12 @@ Therefore, the affected-histogram name has to have at least one dot in it.
</summary>
</histogram>
+<histogram name="WrenchMenu.MenuAction" enum="WretchMenuAction">
+ <owner>ainslie@chromium.org</owner>
+ <owner>edwardjung@chromium.org</owner>
+ <summary>Number of times that each menu item is clicked.</summary>
+</histogram>
+
<histogram name="WrenchMenu.RecentTabsSubMenu" enum="RecentTabsAction">
<owner>rpop@chromium.org</owner>
<summary>
@@ -40727,6 +40733,14 @@ Therefore, the affected-histogram name has to have at least one dot in it.
</summary>
</histogram>
+<histogram name="WrenchMenu.TimeToAction">
+ <owner>ainslie@chromium.org</owner>
+ <owner>edwardjung@chromium.org</owner>
+ <summary>
+ The time a user takes to select a menu itme after opening the menu.
+ </summary>
+</histogram>
+
<histogram name="ZeroSuggest.AllResults">
<owner>hfung@chromium.org</owner>
<summary>
@@ -56399,6 +56413,53 @@ To add a new entry, add it with any value and run test to compute valid value.
<int value="2" label="People"/>
</enum>
+<enum name="WretchMenuAction" type="int">
+ <int value="0" label="New tab"/>
+ <int value="1" label="New window"/>
+ <int value="2" label="New incognito window"/>
+ <int value="3" label="Show bookmark bar"/>
+ <int value="4" label="Show bookmark manager"/>
+ <int value="5" label="Import settings"/>
+ <int value="6" label="Bookmark page"/>
+ <int value="7" label="Bookmark all tabs"/>
+ <int value="8" label="Pin to start screen"/>
+ <int value="9" label="Restore tab"/>
+ <int value="10" label="Win desktop restart"/>
+ <int value="11" label="Win8 metro restart"/>
+ <int value="12" label="Win chromeos restart"/>
+ <int value="13" label="Distill page"/>
+ <int value="14" label="Save page"/>
+ <int value="15" label="Find"/>
+ <int value="16" label="Print"/>
+ <int value="17" label="Cut"/>
+ <int value="18" label="Copy"/>
+ <int value="19" label="Paste"/>
+ <int value="20" label="Create hosted app"/>
+ <int value="21" label="Create shortcuts"/>
+ <int value="22" label="Manage extensions"/>
+ <int value="23" label="Task manager"/>
+ <int value="24" label="Clear browsing data"/>
+ <int value="25" label="View source"/>
+ <int value="26" label="Dev tools"/>
+ <int value="27" label="Dev tools console"/>
+ <int value="28" label="Dev tools devices"/>
+ <int value="29" label="Profiling enabled"/>
+ <int value="30" label="Zoom minus"/>
+ <int value="31" label="Zoom plus"/>
+ <int value="32" label="Fullscreen"/>
+ <int value="33" label="Show history"/>
+ <int value="34" label="Show downloads"/>
+ <int value="35" label="Show sync setup"/>
+ <int value="36" label="Options"/>
+ <int value="37" label="About"/>
+ <int value="38" label="Help page via menu"/>
+ <int value="39" label="Feedback"/>
+ <int value="40" label="Toggle request tablet site"/>
+ <int value="41" label="Recent tab"/>
+ <int value="42" label="Open a bookmark"/>
+ <int value="43" label="Exit"/>
+</enum>
+
<enum name="XMLHttpRequestSendArrayBufferOrView" type="int">
<int value="0" label="XMLHttpRequestSendArrayBuffer"/>
<int value="1" label="XMLHttpRequestSendArrayBufferView"/>
@@ -60181,6 +60242,52 @@ To add a new entry, add it with any value and run test to compute valid value.
<affected-histogram name="NewTabPage.DefaultPageType"/>
</histogram_suffixes>
+<histogram_suffixes name="WrenchMenuActionTimings" separator=".">
+ <suffix name="NewTab"/>
+ <suffix name="NewWindow"/>
+ <suffix name="NewIncognitoWindow"/>
+ <suffix name="ShowBookmarkBar"/>
+ <suffix name="ShowBookmarkMgr"/>
+ <suffix name="ImportSettings"/>
+ <suffix name="BookmarkPage"/>
+ <suffix name="BookmarkAllTabs"/>
+ <suffix name="PinToStartScreen"/>
+ <suffix name="RestoreTab"/>
+ <suffix name="WinDesktopRestart"/>
+ <suffix name="Win8MetroRestart"/>
+ <suffix name="ChromeOSRestart"/>
+ <suffix name="DistillPage"/>
+ <suffix name="SavePage"/>
+ <suffix name="Find"/>
+ <suffix name="Print"/>
+ <suffix name="Cut"/>
+ <suffix name="Copy"/>
+ <suffix name="Paste"/>
+ <suffix name="CreateHostedApp"/>
+ <suffix name="CreateShortcuts"/>
+ <suffix name="ManageExtensions"/>
+ <suffix name="TaskManager"/>
+ <suffix name="ClearBrowsingData"/>
+ <suffix name="ViewSource"/>
+ <suffix name="DevTools"/>
+ <suffix name="DevToolsConsole"/>
+ <suffix name="DevToolsDevices"/>
+ <suffix name="ProfilingEnabled"/>
+ <suffix name="ZoomMinus"/>
+ <suffix name="ZoomPlus"/>
+ <suffix name="EnterFullScreen"/>
+ <suffix name="ShowHistory"/>
+ <suffix name="ShowDownloads"/>
+ <suffix name="ShowSyncSetup"/>
+ <suffix name="Settings"/>
+ <suffix name="About"/>
+ <suffix name="HelpPage"/>
+ <suffix name="Feedback"/>
+ <suffix name="RequestTabletSite"/>
+ <suffix name="Exit"/>
+ <affected-histogram name="WrenchMenu.TimeToAction"/>
+</histogram_suffixes>
+
</histogram_suffixes_list>
</histogram-configuration>