| Index: components/scheduler/renderer/user_model.cc
|
| diff --git a/components/scheduler/renderer/user_model.cc b/components/scheduler/renderer/user_model.cc
|
| index c71e86c21d8e20f63ab20981964971f4639a08d4..c3deb133c05ff525e28013529c0fa25008529a81 100644
|
| --- a/components/scheduler/renderer/user_model.cc
|
| +++ b/components/scheduler/renderer/user_model.cc
|
| @@ -5,6 +5,8 @@
|
| #include "components/scheduler/renderer/user_model.h"
|
|
|
| #include "base/metrics/histogram_macros.h"
|
| +#include "base/metrics/user_metrics.h"
|
| +#include "base/single_thread_task_runner.h"
|
|
|
| namespace scheduler {
|
|
|
| @@ -26,8 +28,20 @@ void RecordGesturePrediction(GesturePredictionResult result) {
|
|
|
| } // namespace
|
|
|
| -UserModel::UserModel()
|
| - : pending_input_event_count_(0),
|
| +namespace features {
|
| +
|
| +// Enables the recording of gestures as UMA user actions.
|
| +// That feature is disabled by default and controlled from the server so as not
|
| +// to generate too many UMA user actions.
|
| +const base::Feature kRecordSchedulerGestureActions{
|
| + "RecordGestureActions", base::FEATURE_DISABLED_BY_DEFAULT};
|
| +
|
| +} // namespace features
|
| +
|
| +UserModel::UserModel(
|
| + scoped_refptr<base::SingleThreadTaskRunner> default_task_runner)
|
| + : default_task_runner_(default_task_runner),
|
| + pending_input_event_count_(0),
|
| is_gesture_active_(false),
|
| is_gesture_expected_(false) {}
|
| UserModel::~UserModel() {}
|
| @@ -42,6 +56,15 @@ void UserModel::DidStartProcessingInputEvent(blink::WebInputEvent::Type type,
|
| if (!is_gesture_active_) {
|
| last_gesture_start_time_ = now;
|
|
|
| + if (base::FeatureList::IsEnabled(
|
| + features::kRecordSchedulerGestureActions)) {
|
| + default_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&base::RecordAction,
|
| + base::UserMetricsAction(
|
| + "RendererScheduler.UserModel.GestureStart")));
|
| + }
|
| +
|
| RecordGesturePrediction(is_gesture_expected_
|
| ? GESTURE_OCCURED_WAS_PREDICTED
|
| : GESTURE_OCCURED_BUT_NOT_PREDICTED);
|
| @@ -91,6 +114,14 @@ void UserModel::DidStartProcessingInputEvent(blink::WebInputEvent::Type type,
|
| base::TimeDelta duration = now - last_gesture_start_time_;
|
| UMA_HISTOGRAM_TIMES("RendererScheduler.UserModel.GestureDuration",
|
| duration);
|
| + if (base::FeatureList::IsEnabled(
|
| + features::kRecordSchedulerGestureActions)) {
|
| + default_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&base::RecordAction,
|
| + base::UserMetricsAction(
|
| + "RendererScheduler.UserModel.GestureEnd")));
|
| + }
|
| }
|
| is_gesture_active_ = false;
|
| }
|
|
|