Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1334)

Side by Side Diff: components/scheduler/renderer/user_model_unittest.cc

Issue 2118903002: scheduler: Move the Blink scheduler into Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/scheduler/renderer/user_model.h"
6
7 #include "base/test/simple_test_tick_clock.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace scheduler {
12
13 class UserModelTest : public testing::Test {
14 public:
15 UserModelTest() {}
16 ~UserModelTest() override {}
17
18 void SetUp() override {
19 clock_.reset(new base::SimpleTestTickClock());
20 clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
21
22 user_model_.reset(new UserModel());
23 }
24
25 protected:
26 static base::TimeDelta priority_escalation_after_input_duration() {
27 return base::TimeDelta::FromMilliseconds(
28 UserModel::kGestureEstimationLimitMillis);
29 }
30
31 static base::TimeDelta subsequent_input_expected_after_input_duration() {
32 return base::TimeDelta::FromMilliseconds(
33 UserModel::kExpectSubsequentGestureMillis);
34 }
35
36 std::unique_ptr<base::SimpleTestTickClock> clock_;
37 std::unique_ptr<UserModel> user_model_;
38 };
39
40 TEST_F(UserModelTest, TimeLeftInUserGesture_NoInput) {
41 EXPECT_EQ(base::TimeDelta(),
42 user_model_->TimeLeftInUserGesture(clock_->NowTicks()));
43 }
44
45 TEST_F(UserModelTest, TimeLeftInUserGesture_ImmediatelyAfterInput) {
46 user_model_->DidStartProcessingInputEvent(
47 blink::WebInputEvent::Type::TouchStart, clock_->NowTicks());
48 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
49 EXPECT_EQ(priority_escalation_after_input_duration(),
50 user_model_->TimeLeftInUserGesture(clock_->NowTicks()));
51 }
52
53 TEST_F(UserModelTest, TimeLeftInUserGesture_ShortlyAfterInput) {
54 user_model_->DidStartProcessingInputEvent(
55 blink::WebInputEvent::Type::TouchStart, clock_->NowTicks());
56 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
57 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(10));
58 clock_->Advance(delta);
59 EXPECT_EQ(priority_escalation_after_input_duration() - delta,
60 user_model_->TimeLeftInUserGesture(clock_->NowTicks()));
61 }
62
63 TEST_F(UserModelTest, TimeLeftInUserGesture_LongAfterInput) {
64 user_model_->DidStartProcessingInputEvent(
65 blink::WebInputEvent::Type::TouchStart, clock_->NowTicks());
66 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
67 clock_->Advance(priority_escalation_after_input_duration() * 2);
68 EXPECT_EQ(base::TimeDelta(),
69 user_model_->TimeLeftInUserGesture(clock_->NowTicks()));
70 }
71
72 TEST_F(UserModelTest, DidFinishProcessingInputEvent_Delayed) {
73 user_model_->DidStartProcessingInputEvent(
74 blink::WebInputEvent::Type::TouchStart, clock_->NowTicks());
75 clock_->Advance(priority_escalation_after_input_duration() * 10);
76
77 EXPECT_EQ(priority_escalation_after_input_duration(),
78 user_model_->TimeLeftInUserGesture(clock_->NowTicks()));
79
80 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
81 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(10));
82 clock_->Advance(delta);
83
84 EXPECT_EQ(priority_escalation_after_input_duration() - delta,
85 user_model_->TimeLeftInUserGesture(clock_->NowTicks()));
86 }
87
88 TEST_F(UserModelTest, GestureExpectedSoon_NoRecentInput) {
89 base::TimeDelta prediction_valid_duration;
90 EXPECT_FALSE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
91 &prediction_valid_duration));
92 EXPECT_EQ(base::TimeDelta(), prediction_valid_duration);
93 }
94
95 TEST_F(UserModelTest, GestureExpectedSoon_ShortlyAfter_GestureScrollBegin) {
96 user_model_->DidStartProcessingInputEvent(
97 blink::WebInputEvent::Type::GestureScrollBegin, clock_->NowTicks());
98 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
99
100 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(10));
101 clock_->Advance(delta);
102
103 base::TimeDelta prediction_valid_duration;
104 EXPECT_FALSE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
105 &prediction_valid_duration));
106 EXPECT_EQ(base::TimeDelta::FromMilliseconds(
107 UserModel::kMedianGestureDurationMillis) -
108 delta,
109 prediction_valid_duration);
110 }
111
112 TEST_F(UserModelTest, GestureExpectedSoon_LongAfter_GestureScrollBegin) {
113 user_model_->DidStartProcessingInputEvent(
114 blink::WebInputEvent::Type::GestureScrollBegin, clock_->NowTicks());
115 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
116
117 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(
118 UserModel::kMedianGestureDurationMillis * 2));
119 clock_->Advance(delta);
120
121 base::TimeDelta prediction_valid_duration;
122 EXPECT_TRUE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
123 &prediction_valid_duration));
124 EXPECT_EQ(base::TimeDelta::FromMilliseconds(
125 UserModel::kExpectSubsequentGestureMillis),
126 prediction_valid_duration);
127 }
128
129 TEST_F(UserModelTest, GestureExpectedSoon_ImmediatelyAfter_GestureScrollEnd) {
130 user_model_->DidStartProcessingInputEvent(
131 blink::WebInputEvent::Type::GestureScrollEnd, clock_->NowTicks());
132 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
133
134 base::TimeDelta prediction_valid_duration;
135 EXPECT_TRUE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
136 &prediction_valid_duration));
137 EXPECT_EQ(subsequent_input_expected_after_input_duration(),
138 prediction_valid_duration);
139 }
140
141 TEST_F(UserModelTest, GestureExpectedSoon_ShortlyAfter_GestureScrollEnd) {
142 user_model_->DidStartProcessingInputEvent(
143 blink::WebInputEvent::Type::GestureScrollEnd, clock_->NowTicks());
144 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
145
146 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(10));
147 clock_->Advance(delta);
148
149 base::TimeDelta prediction_valid_duration;
150 EXPECT_TRUE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
151 &prediction_valid_duration));
152 EXPECT_EQ(subsequent_input_expected_after_input_duration() - delta,
153 prediction_valid_duration);
154 }
155
156 TEST_F(UserModelTest, GestureExpectedSoon_LongAfter_GestureScrollEnd) {
157 user_model_->DidStartProcessingInputEvent(
158 blink::WebInputEvent::Type::GestureScrollEnd, clock_->NowTicks());
159 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
160 clock_->Advance(subsequent_input_expected_after_input_duration() * 2);
161
162 base::TimeDelta prediction_valid_duration;
163 EXPECT_FALSE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
164 &prediction_valid_duration));
165 EXPECT_EQ(base::TimeDelta(), prediction_valid_duration);
166 }
167
168 TEST_F(UserModelTest, GestureExpectedSoon_ShortlyAfter_GesturePinchEnd) {
169 user_model_->DidStartProcessingInputEvent(
170 blink::WebInputEvent::Type::GesturePinchEnd, clock_->NowTicks());
171 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
172
173 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(10));
174 clock_->Advance(delta);
175
176 base::TimeDelta prediction_valid_duration;
177 EXPECT_TRUE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
178 &prediction_valid_duration));
179 EXPECT_EQ(subsequent_input_expected_after_input_duration() - delta,
180 prediction_valid_duration);
181 }
182
183 TEST_F(UserModelTest, GestureExpectedSoon_ShortlyAfterInput_GestureTap) {
184 user_model_->DidStartProcessingInputEvent(
185 blink::WebInputEvent::Type::GestureTap, clock_->NowTicks());
186 user_model_->DidFinishProcessingInputEvent(clock_->NowTicks());
187
188 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(10));
189 clock_->Advance(delta);
190
191 base::TimeDelta prediction_valid_duration;
192 EXPECT_FALSE(user_model_->IsGestureExpectedSoon(clock_->NowTicks(),
193 &prediction_valid_duration));
194 EXPECT_EQ(base::TimeDelta(), prediction_valid_duration);
195 }
196
197 TEST_F(UserModelTest, IsGestureExpectedToContinue_NoGesture) {
198 base::TimeDelta prediction_valid_duration;
199 EXPECT_FALSE(user_model_->IsGestureExpectedToContinue(
200 clock_->NowTicks(), &prediction_valid_duration));
201 EXPECT_EQ(base::TimeDelta(), prediction_valid_duration);
202 }
203
204 TEST_F(UserModelTest, IsGestureExpectedToContinue_GestureJustStarted) {
205 user_model_->DidStartProcessingInputEvent(
206 blink::WebInputEvent::Type::GestureScrollBegin, clock_->NowTicks());
207 base::TimeDelta prediction_valid_duration;
208 EXPECT_TRUE(user_model_->IsGestureExpectedToContinue(
209 clock_->NowTicks(), &prediction_valid_duration));
210 EXPECT_EQ(base::TimeDelta::FromMilliseconds(
211 UserModel::kMedianGestureDurationMillis),
212 prediction_valid_duration);
213 }
214
215 TEST_F(UserModelTest, IsGestureExpectedToContinue_GestureJustEnded) {
216 user_model_->DidStartProcessingInputEvent(
217 blink::WebInputEvent::Type::GestureScrollEnd, clock_->NowTicks());
218 base::TimeDelta prediction_valid_duration;
219 EXPECT_FALSE(user_model_->IsGestureExpectedToContinue(
220 clock_->NowTicks(), &prediction_valid_duration));
221 EXPECT_EQ(base::TimeDelta(), prediction_valid_duration);
222 }
223
224 TEST_F(UserModelTest, IsGestureExpectedToContinue_ShortlyAfterGestureStarted) {
225 user_model_->DidStartProcessingInputEvent(
226 blink::WebInputEvent::Type::GestureScrollBegin, clock_->NowTicks());
227
228 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(10));
229 clock_->Advance(delta);
230
231 base::TimeDelta prediction_valid_duration;
232 EXPECT_TRUE(user_model_->IsGestureExpectedToContinue(
233 clock_->NowTicks(), &prediction_valid_duration));
234 EXPECT_EQ(base::TimeDelta::FromMilliseconds(
235 UserModel::kMedianGestureDurationMillis) -
236 delta,
237 prediction_valid_duration);
238 }
239
240 TEST_F(UserModelTest, IsGestureExpectedToContinue_LongAfterGestureStarted) {
241 user_model_->DidStartProcessingInputEvent(
242 blink::WebInputEvent::Type::GestureScrollBegin, clock_->NowTicks());
243
244 base::TimeDelta delta(base::TimeDelta::FromMilliseconds(
245 UserModel::kMedianGestureDurationMillis * 2));
246 clock_->Advance(delta);
247
248 base::TimeDelta prediction_valid_duration;
249 EXPECT_FALSE(user_model_->IsGestureExpectedToContinue(
250 clock_->NowTicks(), &prediction_valid_duration));
251 EXPECT_EQ(base::TimeDelta(), prediction_valid_duration);
252 }
253
254 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/renderer/user_model.cc ('k') | components/scheduler/renderer/web_frame_scheduler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698