| Index: components/scheduler/renderer/user_model_unittest.cc
|
| diff --git a/components/scheduler/renderer/user_model_unittest.cc b/components/scheduler/renderer/user_model_unittest.cc
|
| index ebf3ff345c7bbbc282029049de09f4e450d548be..7ec2a4743742ee9af78103a1fddae4dd353284f9 100644
|
| --- a/components/scheduler/renderer/user_model_unittest.cc
|
| +++ b/components/scheduler/renderer/user_model_unittest.cc
|
| @@ -4,7 +4,12 @@
|
|
|
| #include "components/scheduler/renderer/user_model.h"
|
|
|
| +#include "base/metrics/field_trial.h"
|
| +#include "base/metrics/user_metrics.h"
|
| +#include "base/metrics/user_metrics_action.h"
|
| #include "base/test/simple_test_tick_clock.h"
|
| +#include "base/test/test_simple_task_runner.h"
|
| +#include "base/test/user_action_tester.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -16,10 +21,15 @@ class UserModelTest : public testing::Test {
|
| ~UserModelTest() override {}
|
|
|
| void SetUp() override {
|
| + mock_task_runner_ = new base::TestSimpleTaskRunner();
|
| +
|
| clock_.reset(new base::SimpleTestTickClock());
|
| clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
|
|
|
| - user_model_.reset(new UserModel());
|
| + user_model_.reset(new UserModel(mock_task_runner_));
|
| +
|
| + // Register a mock user action callback for testing.
|
| + user_action_tester_.reset(new base::UserActionTester());
|
| }
|
|
|
| protected:
|
| @@ -35,6 +45,10 @@ class UserModelTest : public testing::Test {
|
|
|
| scoped_ptr<base::SimpleTestTickClock> clock_;
|
| scoped_ptr<UserModel> user_model_;
|
| + scoped_refptr<base::TestSimpleTaskRunner> mock_task_runner_;
|
| +
|
| + // Tracks user actions that were recorded.
|
| + scoped_ptr<base::UserActionTester> user_action_tester_;
|
| };
|
|
|
| TEST_F(UserModelTest, TimeLeftInUserGesture_NoInput) {
|
| @@ -251,4 +265,39 @@ TEST_F(UserModelTest, IsGestureExpectedToContinue_LongAfterGestureStarted) {
|
| EXPECT_EQ(base::TimeDelta(), prediction_valid_duration);
|
| }
|
|
|
| +TEST_F(UserModelTest, AreActionsLogged) {
|
| + // Add the action logging feature.
|
| + base::FeatureList::ClearInstanceForTesting();
|
| + scoped_ptr<base::FeatureList> feature_list(new base::FeatureList);
|
| + feature_list->InitializeFromCommandLine(
|
| + features::kRecordSchedulerGestureActions.name, std::string());
|
| + base::FeatureList::SetInstance(std::move(feature_list));
|
| +
|
| + EXPECT_EQ(0, user_action_tester_->GetActionCount(
|
| + "RendererScheduler.UserModel.GestureStart"));
|
| + EXPECT_EQ(0, user_action_tester_->GetActionCount(
|
| + "RendererScheduler.UserModel.GestureEnd"));
|
| +
|
| + user_model_->DidStartProcessingInputEvent(
|
| + blink::WebInputEvent::Type::GestureScrollBegin, clock_->NowTicks());
|
| + mock_task_runner_->RunPendingTasks();
|
| +
|
| + EXPECT_EQ(1, user_action_tester_->GetActionCount(
|
| + "RendererScheduler.UserModel.GestureStart"));
|
| + EXPECT_EQ(0, user_action_tester_->GetActionCount(
|
| + "RendererScheduler.UserModel.GestureEnd"));
|
| +
|
| + base::TimeDelta delta(base::TimeDelta::FromMilliseconds(500));
|
| + clock_->Advance(delta);
|
| +
|
| + user_model_->DidStartProcessingInputEvent(
|
| + blink::WebInputEvent::Type::GestureScrollEnd, clock_->NowTicks());
|
| + mock_task_runner_->RunPendingTasks();
|
| +
|
| + EXPECT_EQ(1, user_action_tester_->GetActionCount(
|
| + "RendererScheduler.UserModel.GestureStart"));
|
| + EXPECT_EQ(1, user_action_tester_->GetActionCount(
|
| + "RendererScheduler.UserModel.GestureEnd"));
|
| +}
|
| +
|
| } // namespace scheduler
|
|
|