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

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

Issue 2109843003: Adds enableVirtualTime and setVirtualTimePolicy To Emulation domain. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove frame iteration Created 4 years, 5 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
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 <memory> 7 #include <memory>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/test/simple_test_tick_clock.h" 11 #include "base/test/simple_test_tick_clock.h"
12 #include "cc/test/ordered_simple_task_runner.h" 12 #include "cc/test/ordered_simple_task_runner.h"
13 #include "components/scheduler/base/test_time_source.h" 13 #include "components/scheduler/base/test_time_source.h"
14 #include "components/scheduler/child/scheduler_tqm_delegate_for_test.h" 14 #include "components/scheduler/child/scheduler_tqm_delegate_for_test.h"
15 #include "components/scheduler/renderer/renderer_scheduler_impl.h" 15 #include "components/scheduler/renderer/renderer_scheduler_impl.h"
16 #include "components/scheduler/renderer/web_frame_scheduler_impl.h" 16 #include "components/scheduler/renderer/web_frame_scheduler_impl.h"
17 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "third_party/WebKit/public/platform/WebTaskRunner.h" 19 #include "third_party/WebKit/public/platform/WebTaskRunner.h"
20 #include "third_party/WebKit/public/platform/WebTraceLocation.h" 20 #include "third_party/WebKit/public/platform/WebTraceLocation.h"
21 21
22 using testing::ElementsAre; 22 using testing::ElementsAre;
23 using VirtualTimePolicy = blink::WebViewScheduler::VirtualTimePolicy;
23 24
24 namespace scheduler { 25 namespace scheduler {
25 26
26 class WebViewSchedulerImplTest : public testing::Test { 27 class WebViewSchedulerImplTest : public testing::Test {
27 public: 28 public:
28 WebViewSchedulerImplTest() {} 29 WebViewSchedulerImplTest() {}
29 ~WebViewSchedulerImplTest() override {} 30 ~WebViewSchedulerImplTest() override {}
30 31
31 void SetUp() override { 32 void SetUp() override {
32 clock_.reset(new base::SimpleTestTickClock()); 33 clock_.reset(new base::SimpleTestTickClock());
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 private: 329 private:
329 int index_; 330 int index_;
330 blink::WebTaskRunner* task_runner_; // NOT OWNED 331 blink::WebTaskRunner* task_runner_; // NOT OWNED
331 std::vector<int>* out_run_order_; // NOT OWNED 332 std::vector<int>* out_run_order_; // NOT OWNED
332 }; 333 };
333 } 334 }
334 335
335 TEST_F(WebViewSchedulerImplTest, VirtualTime_NotAllowedToAdvance) { 336 TEST_F(WebViewSchedulerImplTest, VirtualTime_NotAllowedToAdvance) {
336 std::vector<int> run_order; 337 std::vector<int> run_order;
337 338
338 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); 339 web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::PAUSE);
339 web_view_scheduler_->enableVirtualTime(); 340 web_view_scheduler_->enableVirtualTime();
340 341
341 web_frame_scheduler_->timerTaskRunner()->postTask( 342 web_frame_scheduler_->timerTaskRunner()->postTask(
342 BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); 343 BLINK_FROM_HERE, new RunOrderTask(0, &run_order));
343 344
344 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( 345 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
345 BLINK_FROM_HERE, 346 BLINK_FROM_HERE,
346 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), 347 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(),
347 &run_order), 348 &run_order),
348 2.0); 349 2.0);
349 350
350 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( 351 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
351 BLINK_FROM_HERE, 352 BLINK_FROM_HERE,
352 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(), 353 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(),
353 &run_order), 354 &run_order),
354 4.0); 355 4.0);
355 356
356 mock_task_runner_->RunUntilIdle(); 357 mock_task_runner_->RunUntilIdle();
357 358
358 // Immediate tasks are allowed to run even if delayed tasks are not. 359 // Immediate tasks are allowed to run even if delayed tasks are not.
359 EXPECT_THAT(run_order, ElementsAre(0)); 360 EXPECT_THAT(run_order, ElementsAre(0));
360 } 361 }
361 362
362 TEST_F(WebViewSchedulerImplTest, VirtualTime_AllowedToAdvance) { 363 TEST_F(WebViewSchedulerImplTest, VirtualTime_AllowedToAdvance) {
363 std::vector<int> run_order; 364 std::vector<int> run_order;
364 365
365 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); 366 web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::ADVANCE);
366 web_view_scheduler_->enableVirtualTime(); 367 web_view_scheduler_->enableVirtualTime();
367 368
368 web_frame_scheduler_->timerTaskRunner()->postTask( 369 web_frame_scheduler_->timerTaskRunner()->postTask(
369 BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); 370 BLINK_FROM_HERE, new RunOrderTask(0, &run_order));
370 371
371 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( 372 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
372 BLINK_FROM_HERE, 373 BLINK_FROM_HERE,
373 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), 374 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(),
374 &run_order), 375 &run_order),
375 2.0); 376 2.0);
(...skipping 28 matching lines...) Expand all
404 new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), 405 new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
405 1.0); 406 1.0);
406 407
407 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); 408 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
408 EXPECT_EQ(1000, run_count); 409 EXPECT_EQ(1000, run_count);
409 } 410 }
410 411
411 TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) { 412 TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) {
412 std::vector<int> run_order; 413 std::vector<int> run_order;
413 414
414 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); 415 web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::PAUSE);
415 web_view_scheduler_->enableVirtualTime(); 416 web_view_scheduler_->enableVirtualTime();
416 417
417 std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler = 418 std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler =
418 web_view_scheduler_->createWebFrameSchedulerImpl(nullptr); 419 web_view_scheduler_->createWebFrameSchedulerImpl(nullptr);
419 420
420 web_frame_scheduler->timerTaskRunner()->postDelayedTask( 421 web_frame_scheduler->timerTaskRunner()->postDelayedTask(
421 BLINK_FROM_HERE, new RunOrderTask(1, &run_order), 0.1); 422 BLINK_FROM_HERE, new RunOrderTask(1, &run_order), 0.1);
422 423
423 mock_task_runner_->RunUntilIdle(); 424 mock_task_runner_->RunUntilIdle();
424 EXPECT_TRUE(run_order.empty()); 425 EXPECT_TRUE(run_order.empty());
425 426
426 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); 427 web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::ADVANCE);
427 mock_task_runner_->RunUntilIdle(); 428 mock_task_runner_->RunUntilIdle();
428 429
429 EXPECT_THAT(run_order, ElementsAre(1)); 430 EXPECT_THAT(run_order, ElementsAre(1));
430 } 431 }
431 432
432 namespace { 433 namespace {
433 class DeleteWebFrameSchedulerTask : public blink::WebTaskRunner::Task { 434 class DeleteWebFrameSchedulerTask : public blink::WebTaskRunner::Task {
434 public: 435 public:
435 explicit DeleteWebFrameSchedulerTask(WebViewSchedulerImpl* web_view_scheduler) 436 explicit DeleteWebFrameSchedulerTask(WebViewSchedulerImpl* web_view_scheduler)
436 : web_frame_scheduler_( 437 : web_frame_scheduler_(
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 // Note this will run at time t = 10s since we start at time t = 5000us, and 495 // Note this will run at time t = 10s since we start at time t = 5000us, and
495 // it will prevent further tasks from running (i.e. the RepeatingTask) by 496 // it will prevent further tasks from running (i.e. the RepeatingTask) by
496 // deleting the WebFrameScheduler. 497 // deleting the WebFrameScheduler.
497 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task, 498 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task,
498 9990.0); 499 9990.0);
499 500
500 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100)); 501 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100));
501 EXPECT_EQ(10, run_count); 502 EXPECT_EQ(10, run_count);
502 } 503 }
503 504
505 TEST_F(WebViewSchedulerImplTest,
506 VirtualTimePolicy_PAUSE_IF_NETWORK_FETCHES_PENDING) {
507 web_view_scheduler_->setVirtualTimePolicy(
508 VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING);
509 EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
510
511 web_view_scheduler_->incrementPendingResourceLoadCount();
512 EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
513
514 web_view_scheduler_->incrementPendingResourceLoadCount();
515 EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
516
517 web_view_scheduler_->decrementPendingResourceLoadCount();
518 EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
519
520 web_view_scheduler_->incrementPendingResourceLoadCount();
521 EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
522
523 web_view_scheduler_->decrementPendingResourceLoadCount();
524 EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
525
526 web_view_scheduler_->decrementPendingResourceLoadCount();
527 EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
528 }
529
504 } // namespace scheduler 530 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698