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

Side by Side Diff: content/renderer/scheduler/renderer_scheduler_impl_unittest.cc

Issue 692483002: Hook up DidReceiveInputEvent to the blink scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Passing the input event type through to the scheduler Created 6 years, 1 month 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/scheduler/renderer_scheduler_impl.h" 5 #include "content/renderer/scheduler/renderer_scheduler_impl.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "cc/output/begin_frame_args.h" 8 #include "cc/output/begin_frame_args.h"
9 #include "cc/test/ordered_simple_task_runner.h" 9 #include "cc/test/ordered_simple_task_runner.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 130
131 void PostingYieldingTestTask( 131 void PostingYieldingTestTask(
132 RendererSchedulerImpl* scheduler, 132 RendererSchedulerImpl* scheduler,
133 scoped_refptr<base::SingleThreadTaskRunner> task_runner, 133 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
134 bool simulate_input, 134 bool simulate_input,
135 bool* should_yield_before, 135 bool* should_yield_before,
136 bool* should_yield_after) { 136 bool* should_yield_after) {
137 *should_yield_before = scheduler->ShouldYieldForHighPriorityWork(); 137 *should_yield_before = scheduler->ShouldYieldForHighPriorityWork();
138 task_runner->PostTask(FROM_HERE, base::Bind(NullTask)); 138 task_runner->PostTask(FROM_HERE, base::Bind(NullTask));
139 if (simulate_input) { 139 if (simulate_input) {
140 scheduler->DidReceiveInputEventOnCompositorThread(); 140 scheduler->DidReceiveInputEventOnCompositorThread(
141 blink::WebInputEvent::GestureFlingStart);
141 } 142 }
142 *should_yield_after = scheduler->ShouldYieldForHighPriorityWork(); 143 *should_yield_after = scheduler->ShouldYieldForHighPriorityWork();
143 } 144 }
144 145
145 TEST_F(RendererSchedulerImplTest, TestPostDefaultTask) { 146 TEST_F(RendererSchedulerImplTest, TestPostDefaultTask) {
146 int result = 0; 147 int result = 0;
147 default_task_runner_->PostTask(FROM_HERE, 148 default_task_runner_->PostTask(FROM_HERE,
148 base::Bind(OrderedTestTask, 1, &result)); 149 base::Bind(OrderedTestTask, 1, &result));
149 default_task_runner_->PostTask(FROM_HERE, 150 default_task_runner_->PostTask(FROM_HERE,
150 base::Bind(OrderedTestTask, 2, &result)); 151 base::Bind(OrderedTestTask, 2, &result));
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 compositor_task_runner_->PostTask( 292 compositor_task_runner_->PostTask(
292 FROM_HERE, 293 FROM_HERE,
293 base::Bind(&AppendToVectorTestTask, &order, std::string("C1"))); 294 base::Bind(&AppendToVectorTestTask, &order, std::string("C1")));
294 default_task_runner_->PostTask( 295 default_task_runner_->PostTask(
295 FROM_HERE, 296 FROM_HERE,
296 base::Bind(&AppendToVectorTestTask, &order, std::string("D2"))); 297 base::Bind(&AppendToVectorTestTask, &order, std::string("D2")));
297 compositor_task_runner_->PostTask( 298 compositor_task_runner_->PostTask(
298 FROM_HERE, 299 FROM_HERE,
299 base::Bind(&AppendToVectorTestTask, &order, std::string("C2"))); 300 base::Bind(&AppendToVectorTestTask, &order, std::string("C2")));
300 301
301 scheduler_->DidReceiveInputEventOnCompositorThread(); 302 scheduler_->DidReceiveInputEventOnCompositorThread(
303 blink::WebInputEvent::GestureFlingStart);
302 EnableIdleTasks(); 304 EnableIdleTasks();
303 RunUntilIdle(); 305 RunUntilIdle();
304 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("C2"), 306 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("C2"),
307 std::string("D1"), std::string("D2"),
308 std::string("I1")));
309 }
310
311 TEST_F(RendererSchedulerImplTest, TestCompositorPolicy_DidAnimateForInput) {
312 std::vector<std::string> order;
313
314 idle_task_runner_->PostIdleTask(
315 FROM_HERE,
316 base::Bind(&AppendToVectorIdleTestTask, &order, std::string("I1")));
317 default_task_runner_->PostTask(
318 FROM_HERE,
319 base::Bind(&AppendToVectorTestTask, &order, std::string("D1")));
320 compositor_task_runner_->PostTask(
321 FROM_HERE,
322 base::Bind(&AppendToVectorTestTask, &order, std::string("C1")));
323 default_task_runner_->PostTask(
324 FROM_HERE,
325 base::Bind(&AppendToVectorTestTask, &order, std::string("D2")));
326 compositor_task_runner_->PostTask(
327 FROM_HERE,
328 base::Bind(&AppendToVectorTestTask, &order, std::string("C2")));
329
330 scheduler_->DidAnimateForInputOnCompositorThread();
331 EnableIdleTasks();
332 RunUntilIdle();
333 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("C2"),
305 std::string("D1"), std::string("D2"), 334 std::string("D1"), std::string("D2"),
306 std::string("I1"))); 335 std::string("I1")));
307 } 336 }
308 337
309 TEST_F(RendererSchedulerImplTest, 338 TEST_F(RendererSchedulerImplTest,
310 TestCompositorPolicyDoesNotStarveDefaultTasks) { 339 TestCompositorPolicyDoesNotStarveDefaultTasks) {
311 std::vector<std::string> order; 340 std::vector<std::string> order;
312 341
313 default_task_runner_->PostTask( 342 default_task_runner_->PostTask(
314 FROM_HERE, 343 FROM_HERE,
315 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); 344 base::Bind(&AppendToVectorTestTask, &order, std::string("D1")));
316 compositor_task_runner_->PostTask( 345 compositor_task_runner_->PostTask(
317 FROM_HERE, 346 FROM_HERE,
318 base::Bind(&AppendToVectorTestTask, &order, std::string("C1"))); 347 base::Bind(&AppendToVectorTestTask, &order, std::string("C1")));
319 for (int i = 0; i < 20; i++) { 348 for (int i = 0; i < 20; i++) {
320 compositor_task_runner_->PostTask(FROM_HERE, base::Bind(&NullTask)); 349 compositor_task_runner_->PostTask(FROM_HERE, base::Bind(&NullTask));
321 } 350 }
322 compositor_task_runner_->PostTask( 351 compositor_task_runner_->PostTask(
323 FROM_HERE, 352 FROM_HERE,
324 base::Bind(&AppendToVectorTestTask, &order, std::string("C2"))); 353 base::Bind(&AppendToVectorTestTask, &order, std::string("C2")));
325 354
326 scheduler_->DidReceiveInputEventOnCompositorThread(); 355 scheduler_->DidReceiveInputEventOnCompositorThread(
356 blink::WebInputEvent::GestureFlingStart);
327 RunUntilIdle(); 357 RunUntilIdle();
328 // Ensure that the default D1 task gets to run at some point before the final 358 // Ensure that the default D1 task gets to run at some point before the final
329 // C2 compositor task. 359 // C2 compositor task.
330 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("D1"), 360 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("D1"),
331 std::string("C2"))); 361 std::string("C2")));
332 } 362 }
333 363
334 TEST_F(RendererSchedulerImplTest, TestCompositorPolicyEnds) { 364 TEST_F(RendererSchedulerImplTest, TestCompositorPolicyEnds) {
335 std::vector<std::string> order; 365 std::vector<std::string> order;
336 366
337 default_task_runner_->PostTask( 367 default_task_runner_->PostTask(
338 FROM_HERE, 368 FROM_HERE,
339 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); 369 base::Bind(&AppendToVectorTestTask, &order, std::string("D1")));
340 compositor_task_runner_->PostTask( 370 compositor_task_runner_->PostTask(
341 FROM_HERE, 371 FROM_HERE,
342 base::Bind(&AppendToVectorTestTask, &order, std::string("C1"))); 372 base::Bind(&AppendToVectorTestTask, &order, std::string("C1")));
343 default_task_runner_->PostTask( 373 default_task_runner_->PostTask(
344 FROM_HERE, 374 FROM_HERE,
345 base::Bind(&AppendToVectorTestTask, &order, std::string("D2"))); 375 base::Bind(&AppendToVectorTestTask, &order, std::string("D2")));
346 compositor_task_runner_->PostTask( 376 compositor_task_runner_->PostTask(
347 FROM_HERE, 377 FROM_HERE,
348 base::Bind(&AppendToVectorTestTask, &order, std::string("C2"))); 378 base::Bind(&AppendToVectorTestTask, &order, std::string("C2")));
349 379
350 scheduler_->DidReceiveInputEventOnCompositorThread(); 380 scheduler_->DidReceiveInputEventOnCompositorThread(
381 blink::WebInputEvent::GestureFlingStart);
351 RunUntilIdle(); 382 RunUntilIdle();
352 EXPECT_THAT(order, 383 EXPECT_THAT(order,
353 testing::ElementsAre(std::string("C1"), std::string("C2"), 384 testing::ElementsAre(std::string("C1"), std::string("C2"),
354 std::string("D1"), std::string("D2"))); 385 std::string("D1"), std::string("D2")));
355 386
356 order.clear(); 387 order.clear();
357 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(1000)); 388 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(1000));
358 389
359 default_task_runner_->PostTask( 390 default_task_runner_->PostTask(
360 FROM_HERE, 391 FROM_HERE,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), 433 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(),
403 compositor_task_runner_, true, &should_yield_before, 434 compositor_task_runner_, true, &should_yield_before,
404 &should_yield_after)); 435 &should_yield_after));
405 RunUntilIdle(); 436 RunUntilIdle();
406 // We should be able to switch to compositor priority mid-task. 437 // We should be able to switch to compositor priority mid-task.
407 EXPECT_FALSE(should_yield_before); 438 EXPECT_FALSE(should_yield_before);
408 EXPECT_TRUE(should_yield_after); 439 EXPECT_TRUE(should_yield_after);
409 } 440 }
410 441
411 } // namespace content 442 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698