| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 "components/scheduler/renderer/web_view_scheduler_impl.h" | 5 #include "components/scheduler/renderer/web_view_scheduler_impl.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/test/simple_test_tick_clock.h" | 9 #include "base/test/simple_test_tick_clock.h" |
| 10 #include "cc/test/ordered_simple_task_runner.h" | 10 #include "cc/test/ordered_simple_task_runner.h" |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 BLINK_FROM_HERE, new RunOrderTask(index_ + 1, out_run_order_)); | 308 BLINK_FROM_HERE, new RunOrderTask(index_ + 1, out_run_order_)); |
| 309 } | 309 } |
| 310 | 310 |
| 311 private: | 311 private: |
| 312 int index_; | 312 int index_; |
| 313 blink::WebTaskRunner* task_runner_; // NOT OWNED | 313 blink::WebTaskRunner* task_runner_; // NOT OWNED |
| 314 std::vector<int>* out_run_order_; // NOT OWNED | 314 std::vector<int>* out_run_order_; // NOT OWNED |
| 315 }; | 315 }; |
| 316 } | 316 } |
| 317 | 317 |
| 318 TEST_F(WebViewSchedulerImplTest, VirtualTime_DelayedAndImmediateTaskOrdering) { | 318 TEST_F(WebViewSchedulerImplTest, VirtualTime_NotAllowedToAdvance) { |
| 319 std::vector<int> run_order; | 319 std::vector<int> run_order; |
| 320 | 320 |
| 321 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); | 321 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); |
| 322 web_view_scheduler_->enableVirtualTime(); | 322 web_view_scheduler_->enableVirtualTime(); |
| 323 | 323 |
| 324 web_frame_scheduler_->timerTaskRunner()->postTask( | 324 web_frame_scheduler_->timerTaskRunner()->postTask( |
| 325 BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); | 325 BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); |
| 326 | 326 |
| 327 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( | 327 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
| 328 BLINK_FROM_HERE, | 328 BLINK_FROM_HERE, |
| 329 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), | 329 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), |
| 330 &run_order), | 330 &run_order), |
| 331 2.0); | 331 2.0); |
| 332 | 332 |
| 333 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( | 333 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
| 334 BLINK_FROM_HERE, | 334 BLINK_FROM_HERE, |
| 335 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(), | 335 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(), |
| 336 &run_order), | 336 &run_order), |
| 337 4.0); | 337 4.0); |
| 338 | 338 |
| 339 mock_task_runner_->RunUntilIdle(); | 339 mock_task_runner_->RunUntilIdle(); |
| 340 EXPECT_TRUE(run_order.empty()); | 340 |
| 341 // Immediate tasks are allowed to run even if delayed tasks are not. |
| 342 EXPECT_THAT(run_order, ElementsAre(0)); |
| 343 } |
| 344 |
| 345 TEST_F(WebViewSchedulerImplTest, VirtualTime_AllowedToAdvance) { |
| 346 std::vector<int> run_order; |
| 341 | 347 |
| 342 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); | 348 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); |
| 349 web_view_scheduler_->enableVirtualTime(); |
| 350 |
| 351 web_frame_scheduler_->timerTaskRunner()->postTask( |
| 352 BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); |
| 353 |
| 354 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
| 355 BLINK_FROM_HERE, |
| 356 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), |
| 357 &run_order), |
| 358 2.0); |
| 359 |
| 360 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
| 361 BLINK_FROM_HERE, |
| 362 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(), |
| 363 &run_order), |
| 364 4.0); |
| 365 |
| 343 mock_task_runner_->RunUntilIdle(); | 366 mock_task_runner_->RunUntilIdle(); |
| 344 | 367 |
| 345 EXPECT_THAT(run_order, ElementsAre(0, 1, 2, 3, 4)); | 368 EXPECT_THAT(run_order, ElementsAre(0, 1, 2, 3, 4)); |
| 346 } | 369 } |
| 347 | 370 |
| 348 class WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling | 371 class WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling |
| 349 : public WebViewSchedulerImplTest { | 372 : public WebViewSchedulerImplTest { |
| 350 public: | 373 public: |
| 351 WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() {} | 374 WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() {} |
| 352 ~WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() override {} | 375 ~WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() override {} |
| (...skipping 17 matching lines...) Expand all Loading... |
| 370 | 393 |
| 371 TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) { | 394 TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) { |
| 372 std::vector<int> run_order; | 395 std::vector<int> run_order; |
| 373 | 396 |
| 374 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); | 397 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); |
| 375 web_view_scheduler_->enableVirtualTime(); | 398 web_view_scheduler_->enableVirtualTime(); |
| 376 | 399 |
| 377 scoped_ptr<WebFrameSchedulerImpl> web_frame_scheduler = | 400 scoped_ptr<WebFrameSchedulerImpl> web_frame_scheduler = |
| 378 web_view_scheduler_->createWebFrameSchedulerImpl(); | 401 web_view_scheduler_->createWebFrameSchedulerImpl(); |
| 379 | 402 |
| 380 web_frame_scheduler->timerTaskRunner()->postTask( | 403 web_frame_scheduler->timerTaskRunner()->postDelayedTask( |
| 381 BLINK_FROM_HERE, new RunOrderTask(1, &run_order)); | 404 BLINK_FROM_HERE, new RunOrderTask(1, &run_order), 0.1); |
| 382 | 405 |
| 383 mock_task_runner_->RunUntilIdle(); | 406 mock_task_runner_->RunUntilIdle(); |
| 384 EXPECT_TRUE(run_order.empty()); | 407 EXPECT_TRUE(run_order.empty()); |
| 385 | 408 |
| 386 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); | 409 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); |
| 387 mock_task_runner_->RunUntilIdle(); | 410 mock_task_runner_->RunUntilIdle(); |
| 388 | 411 |
| 389 EXPECT_THAT(run_order, ElementsAre(1)); | 412 EXPECT_THAT(run_order, ElementsAre(1)); |
| 390 } | 413 } |
| 391 | 414 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 // it will prevent further tasks from running (i.e. the RepeatingTask) by | 478 // it will prevent further tasks from running (i.e. the RepeatingTask) by |
| 456 // deleting the WebFrameScheduler. | 479 // deleting the WebFrameScheduler. |
| 457 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task, | 480 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task, |
| 458 9990.0); | 481 9990.0); |
| 459 | 482 |
| 460 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100)); | 483 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100)); |
| 461 EXPECT_EQ(10, run_count); | 484 EXPECT_EQ(10, run_count); |
| 462 } | 485 } |
| 463 | 486 |
| 464 } // namespace scheduler | 487 } // namespace scheduler |
| OLD | NEW |