Index: chrome/browser/ui/views/frame/browser_view.cc |
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc |
index 724ebd041599d758ac73527779645aa53c465a13..52b46f00d07355c1cdcff7875d041fdd4603c01f 100644 |
--- a/chrome/browser/ui/views/frame/browser_view.cc |
+++ b/chrome/browser/ui/views/frame/browser_view.cc |
@@ -25,6 +25,7 @@ |
#include "chrome/browser/dom_ui/bug_report_ui.h" |
#include "chrome/browser/download/download_manager.h" |
#include "chrome/browser/instant/instant_controller.h" |
+#include "chrome/browser/metrics/user_metrics.h" |
#include "chrome/browser/ntp_background_util.h" |
#include "chrome/browser/page_info_window.h" |
#include "chrome/browser/prefs/pref_service.h" |
@@ -607,8 +608,10 @@ bool BrowserView::AcceleratorPressed(const views::Accelerator& accelerator) { |
std::map<views::Accelerator, int>::const_iterator iter = |
accelerator_table_.find(accelerator); |
DCHECK(iter != accelerator_table_.end()); |
- |
int command_id = iter->second; |
+ |
+ if (!browser_->block_command_execution()) |
+ UpdateAcceleratorMetrics(accelerator, command_id); |
return browser_->ExecuteCommandIfEnabled(command_id); |
} |
@@ -1277,11 +1280,13 @@ bool BrowserView::PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, |
// Executing the command may cause |this| object to be destroyed. |
#if defined(OS_LINUX) && !defined(TOUCH_UI) |
- if (browser_->IsReservedCommand(id) && !event.match_edit_command) |
+ if (browser_->IsReservedCommand(id) && !event.match_edit_command) { |
#else |
- if (browser_->IsReservedCommand(id)) |
+ if (browser_->IsReservedCommand(id)) { |
#endif |
+ UpdateAcceleratorMetrics(accelerator, id); |
return browser_->ExecuteCommandIfEnabled(id); |
+ } |
DCHECK(is_keyboard_shortcut != NULL); |
*is_keyboard_shortcut = true; |
@@ -2460,6 +2465,67 @@ void BrowserView::InitHangMonitor() { |
#endif |
} |
+void BrowserView::UpdateAcceleratorMetrics( |
+ const views::Accelerator& accelerator, int command_id) { |
+#if defined(OS_CHROMEOS) |
+ // Collect information about the relative popularity of various accelerators |
+ // on Chrome OS. |
+ const app::KeyboardCode key_code = accelerator.GetKeyCode(); |
+ switch (command_id) { |
+ case IDC_BACK: |
+ if (key_code == app::VKEY_BACK) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Back_Backspace")); |
+ else if (key_code == app::VKEY_F1) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Back_F1")); |
+ else if (key_code == app::VKEY_LEFT) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Back_Left")); |
+ break; |
+ case IDC_FORWARD: |
+ if (key_code == app::VKEY_BACK) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Forward_Backspace")); |
+ else if (key_code == app::VKEY_F2) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Forward_F2")); |
+ else if (key_code == app::VKEY_LEFT) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Forward_Right")); |
+ break; |
+ case IDC_RELOAD: |
+ case IDC_RELOAD_IGNORING_CACHE: |
+ if (key_code == app::VKEY_R) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Reload_R")); |
+ else if (key_code == app::VKEY_F3) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Reload_F3")); |
+ break; |
+ case IDC_FULLSCREEN: |
+ if (key_code == app::VKEY_F4) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Fullscreen_F4")); |
+ break; |
+ case IDC_NEW_TAB: |
+ if (key_code == app::VKEY_T) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_NewTab_T")); |
+ break; |
+ case IDC_SEARCH: |
+ if (key_code == app::VKEY_LWIN) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_Search_LWin")); |
+ break; |
+ case IDC_FOCUS_LOCATION: |
+ if (key_code == app::VKEY_D) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_FocusLocation_D")); |
+ else if (key_code == app::VKEY_L) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_FocusLocation_L")); |
+ break; |
+ case IDC_FOCUS_SEARCH: |
+ if (key_code == app::VKEY_E) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_FocusSearch_E")); |
+ else if (key_code == app::VKEY_K) |
+ UserMetrics::RecordAction(UserMetricsAction("Accel_FocusSearch_K")); |
+ break; |
+ default: |
+ // Do nothing. |
+ break; |
+ } |
+#endif |
+} |
+ |
void BrowserView::ProcessTabSelected(TabContentsWrapper* new_contents, |
bool change_tab_contents) { |
// Update various elements that are interested in knowing the current |