Index: ui/views/touchui/touch_selection_controller_impl.cc |
diff --git a/ui/views/touchui/touch_selection_controller_impl.cc b/ui/views/touchui/touch_selection_controller_impl.cc |
index 3ed8c0b388a13f595a20c1c04366ca391c2f899e..ffb5366e50c7cd75b90b57c96e8ea41629934457 100644 |
--- a/ui/views/touchui/touch_selection_controller_impl.cc |
+++ b/ui/views/touchui/touch_selection_controller_impl.cc |
@@ -4,6 +4,7 @@ |
#include "ui/views/touchui/touch_selection_controller_impl.h" |
+#include "base/metrics/histogram_macros.h" |
#include "base/time/time.h" |
#include "ui/aura/client/cursor_client.h" |
#include "ui/aura/env.h" |
@@ -415,7 +416,9 @@ TouchSelectionControllerImpl::TouchSelectionControllerImpl( |
client_view->GetNativeView(), |
true)), |
context_menu_(nullptr), |
+ command_executed_(false), |
dragging_handle_(nullptr) { |
+ selection_start_time_ = base::TimeTicks::Now(); |
aura::Window* client_window = client_view_->GetNativeView(); |
client_window->AddObserver(this); |
client_widget_ = Widget::GetTopLevelWidgetForNativeView(client_window); |
@@ -425,6 +428,8 @@ TouchSelectionControllerImpl::TouchSelectionControllerImpl( |
} |
TouchSelectionControllerImpl::~TouchSelectionControllerImpl() { |
+ UMA_HISTOGRAM_BOOLEAN("Event.TouchSelection.EndedWithAction", |
+ command_executed_); |
HideContextMenu(); |
aura::Env::GetInstance()->RemovePreTargetHandler(this); |
if (client_widget_) |
@@ -594,6 +599,15 @@ bool TouchSelectionControllerImpl::IsCommandIdEnabled(int command_id) const { |
void TouchSelectionControllerImpl::ExecuteCommand(int command_id, |
int event_flags) { |
+ command_executed_ = true; |
+ base::TimeDelta duration = base::TimeTicks::Now() - selection_start_time_; |
+ // Note that we only log the duration stats for the 'successful' selections, |
+ // i.e. selections ending with the execution of a command. |
+ UMA_HISTOGRAM_CUSTOM_TIMES("Event.TouchSelection.Duration", |
+ duration, |
+ base::TimeDelta::FromMilliseconds(500), |
+ base::TimeDelta::FromSeconds(60), |
+ 60); |
HideContextMenu(); |
client_view_->ExecuteCommand(command_id, event_flags); |
} |