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

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

Issue 1815363002: Add RetainedRef uses where needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 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 "components/scheduler/renderer/renderer_scheduler_impl.h" 5 #include "components/scheduler/renderer/renderer_scheduler_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 PostTestTasks(&run_order, "D1 C1"); 591 PostTestTasks(&run_order, "D1 C1");
592 RunUntilIdle(); 592 RunUntilIdle();
593 EXPECT_THAT(run_order, testing::Contains("D1")); 593 EXPECT_THAT(run_order, testing::Contains("D1"));
594 EXPECT_THAT(run_order, testing::Contains("C1")); 594 EXPECT_THAT(run_order, testing::Contains("C1"));
595 } 595 }
596 596
597 TEST_F(RendererSchedulerImplTest, TestRentrantTask) { 597 TEST_F(RendererSchedulerImplTest, TestRentrantTask) {
598 int count = 0; 598 int count = 0;
599 std::vector<int> run_order; 599 std::vector<int> run_order;
600 default_task_runner_->PostTask( 600 default_task_runner_->PostTask(
601 FROM_HERE, base::Bind(AppendToVectorReentrantTask, default_task_runner_, 601 FROM_HERE, base::Bind(AppendToVectorReentrantTask,
602 &run_order, &count, 5)); 602 base::RetainedRef(default_task_runner_), &run_order,
603 &count, 5));
603 RunUntilIdle(); 604 RunUntilIdle();
604 605
605 EXPECT_THAT(run_order, testing::ElementsAre(0, 1, 2, 3, 4)); 606 EXPECT_THAT(run_order, testing::ElementsAre(0, 1, 2, 3, 4));
606 } 607 }
607 608
608 TEST_F(RendererSchedulerImplTest, TestPostIdleTask) { 609 TEST_F(RendererSchedulerImplTest, TestPostIdleTask) {
609 int run_count = 0; 610 int run_count = 0;
610 base::TimeTicks expected_deadline = 611 base::TimeTicks expected_deadline =
611 clock_->NowTicks() + base::TimeDelta::FromMilliseconds(2300); 612 clock_->NowTicks() + base::TimeDelta::FromMilliseconds(2300);
612 base::TimeTicks deadline_in_task; 613 base::TimeTicks deadline_in_task;
(...skipping 24 matching lines...) Expand all
637 RunUntilIdle(); 638 RunUntilIdle();
638 EXPECT_EQ(1, run_count); 639 EXPECT_EQ(1, run_count);
639 EXPECT_EQ(expected_deadline, deadline_in_task); 640 EXPECT_EQ(expected_deadline, deadline_in_task);
640 } 641 }
641 642
642 TEST_F(RendererSchedulerImplTest, TestRepostingIdleTask) { 643 TEST_F(RendererSchedulerImplTest, TestRepostingIdleTask) {
643 int run_count = 0; 644 int run_count = 0;
644 645
645 max_idle_task_reposts = 2; 646 max_idle_task_reposts = 2;
646 idle_task_runner_->PostIdleTask( 647 idle_task_runner_->PostIdleTask(
647 FROM_HERE, 648 FROM_HERE, base::Bind(&RepostingIdleTestTask,
648 base::Bind(&RepostingIdleTestTask, idle_task_runner_, &run_count)); 649 base::RetainedRef(idle_task_runner_), &run_count));
649 EnableIdleTasks(); 650 EnableIdleTasks();
650 RunUntilIdle(); 651 RunUntilIdle();
651 EXPECT_EQ(1, run_count); 652 EXPECT_EQ(1, run_count);
652 653
653 // Reposted tasks shouldn't run until next idle period. 654 // Reposted tasks shouldn't run until next idle period.
654 RunUntilIdle(); 655 RunUntilIdle();
655 EXPECT_EQ(1, run_count); 656 EXPECT_EQ(1, run_count);
656 657
657 EnableIdleTasks(); 658 EnableIdleTasks();
658 RunUntilIdle(); 659 RunUntilIdle();
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
1420 EXPECT_FALSE(is_anticipated_before); 1421 EXPECT_FALSE(is_anticipated_before);
1421 EXPECT_FALSE(is_anticipated_after); 1422 EXPECT_FALSE(is_anticipated_after);
1422 } 1423 }
1423 1424
1424 TEST_F(RendererSchedulerImplTest, TestShouldYield) { 1425 TEST_F(RendererSchedulerImplTest, TestShouldYield) {
1425 bool should_yield_before = false; 1426 bool should_yield_before = false;
1426 bool should_yield_after = false; 1427 bool should_yield_after = false;
1427 1428
1428 default_task_runner_->PostTask( 1429 default_task_runner_->PostTask(
1429 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), 1430 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(),
1430 default_task_runner_, false, &should_yield_before, 1431 base::RetainedRef(default_task_runner_), false,
1431 &should_yield_after)); 1432 &should_yield_before, &should_yield_after));
1432 RunUntilIdle(); 1433 RunUntilIdle();
1433 // Posting to default runner shouldn't cause yielding. 1434 // Posting to default runner shouldn't cause yielding.
1434 EXPECT_FALSE(should_yield_before); 1435 EXPECT_FALSE(should_yield_before);
1435 EXPECT_FALSE(should_yield_after); 1436 EXPECT_FALSE(should_yield_after);
1436 1437
1437 default_task_runner_->PostTask( 1438 default_task_runner_->PostTask(
1438 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), 1439 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(),
1439 compositor_task_runner_, false, 1440 base::RetainedRef(compositor_task_runner_), false,
1440 &should_yield_before, &should_yield_after)); 1441 &should_yield_before, &should_yield_after));
1441 RunUntilIdle(); 1442 RunUntilIdle();
1442 // Posting while not mainthread scrolling shouldn't cause yielding. 1443 // Posting while not mainthread scrolling shouldn't cause yielding.
1443 EXPECT_FALSE(should_yield_before); 1444 EXPECT_FALSE(should_yield_before);
1444 EXPECT_FALSE(should_yield_after); 1445 EXPECT_FALSE(should_yield_after);
1445 1446
1446 default_task_runner_->PostTask( 1447 default_task_runner_->PostTask(
1447 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), 1448 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(),
1448 compositor_task_runner_, true, &should_yield_before, 1449 base::RetainedRef(compositor_task_runner_), true,
1449 &should_yield_after)); 1450 &should_yield_before, &should_yield_after));
1450 RunUntilIdle(); 1451 RunUntilIdle();
1451 // We should be able to switch to compositor priority mid-task. 1452 // We should be able to switch to compositor priority mid-task.
1452 EXPECT_FALSE(should_yield_before); 1453 EXPECT_FALSE(should_yield_before);
1453 EXPECT_TRUE(should_yield_after); 1454 EXPECT_TRUE(should_yield_after);
1454 } 1455 }
1455 1456
1456 TEST_F(RendererSchedulerImplTest, TestShouldYield_TouchStart) { 1457 TEST_F(RendererSchedulerImplTest, TestShouldYield_TouchStart) {
1457 // Receiving a touchstart should immediately trigger yielding, even if 1458 // Receiving a touchstart should immediately trigger yielding, even if
1458 // there's no immediately pending work in the compositor queue. 1459 // there's no immediately pending work in the compositor queue.
1459 EXPECT_FALSE(scheduler_->ShouldYieldForHighPriorityWork()); 1460 EXPECT_FALSE(scheduler_->ShouldYieldForHighPriorityWork());
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1824 1825
1825 TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodRepeating) { 1826 TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodRepeating) {
1826 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 1827 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
1827 std::vector<base::TimeTicks> actual_deadlines; 1828 std::vector<base::TimeTicks> actual_deadlines;
1828 int run_count = 0; 1829 int run_count = 0;
1829 1830
1830 max_idle_task_reposts = 3; 1831 max_idle_task_reposts = 3;
1831 base::TimeTicks clock_before(clock_->NowTicks()); 1832 base::TimeTicks clock_before(clock_->NowTicks());
1832 base::TimeDelta idle_task_runtime(base::TimeDelta::FromMilliseconds(10)); 1833 base::TimeDelta idle_task_runtime(base::TimeDelta::FromMilliseconds(10));
1833 idle_task_runner_->PostIdleTask( 1834 idle_task_runner_->PostIdleTask(
1834 FROM_HERE, base::Bind(&RepostingUpdateClockIdleTestTask, 1835 FROM_HERE,
1835 idle_task_runner_, &run_count, clock_.get(), 1836 base::Bind(&RepostingUpdateClockIdleTestTask,
1836 idle_task_runtime, &actual_deadlines)); 1837 base::RetainedRef(idle_task_runner_), &run_count, clock_.get(),
1838 idle_task_runtime, &actual_deadlines));
1837 scheduler_->BeginFrameNotExpectedSoon(); 1839 scheduler_->BeginFrameNotExpectedSoon();
1838 RunUntilIdle(); 1840 RunUntilIdle();
1839 EXPECT_EQ(3, run_count); 1841 EXPECT_EQ(3, run_count);
1840 EXPECT_THAT( 1842 EXPECT_THAT(
1841 actual_deadlines, 1843 actual_deadlines,
1842 testing::ElementsAre( 1844 testing::ElementsAre(
1843 clock_before + maximum_idle_period_duration(), 1845 clock_before + maximum_idle_period_duration(),
1844 clock_before + idle_task_runtime + maximum_idle_period_duration(), 1846 clock_before + idle_task_runtime + maximum_idle_period_duration(),
1845 clock_before + (2 * idle_task_runtime) + 1847 clock_before + (2 * idle_task_runtime) +
1846 maximum_idle_period_duration())); 1848 maximum_idle_period_duration()));
1847 1849
1848 // Check that idle tasks don't run after the idle period ends with a 1850 // Check that idle tasks don't run after the idle period ends with a
1849 // new BeginMainFrame. 1851 // new BeginMainFrame.
1850 max_idle_task_reposts = 5; 1852 max_idle_task_reposts = 5;
1851 idle_task_runner_->PostIdleTask( 1853 idle_task_runner_->PostIdleTask(
1852 FROM_HERE, base::Bind(&RepostingUpdateClockIdleTestTask, 1854 FROM_HERE,
1853 idle_task_runner_, &run_count, clock_.get(), 1855 base::Bind(&RepostingUpdateClockIdleTestTask,
1854 idle_task_runtime, &actual_deadlines)); 1856 base::RetainedRef(idle_task_runner_), &run_count, clock_.get(),
1857 idle_task_runtime, &actual_deadlines));
1855 idle_task_runner_->PostIdleTask( 1858 idle_task_runner_->PostIdleTask(
1856 FROM_HERE, base::Bind(&WillBeginFrameIdleTask, 1859 FROM_HERE, base::Bind(&WillBeginFrameIdleTask,
1857 base::Unretained(scheduler_.get()), clock_.get())); 1860 base::Unretained(scheduler_.get()), clock_.get()));
1858 RunUntilIdle(); 1861 RunUntilIdle();
1859 EXPECT_EQ(4, run_count); 1862 EXPECT_EQ(4, run_count);
1860 } 1863 }
1861 1864
1862 TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodDoesNotWakeScheduler) { 1865 TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodDoesNotWakeScheduler) {
1863 base::TimeTicks deadline_in_task; 1866 base::TimeTicks deadline_in_task;
1864 int run_count = 0; 1867 int run_count = 0;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1973 BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(), 1976 BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
1974 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); 1977 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
1975 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired()); 1978 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
1976 } 1979 }
1977 1980
1978 TEST_F(RendererSchedulerImplTest, TestRendererHiddenIdlePeriod) { 1981 TEST_F(RendererSchedulerImplTest, TestRendererHiddenIdlePeriod) {
1979 int run_count = 0; 1982 int run_count = 0;
1980 1983
1981 max_idle_task_reposts = 2; 1984 max_idle_task_reposts = 2;
1982 idle_task_runner_->PostIdleTask( 1985 idle_task_runner_->PostIdleTask(
1983 FROM_HERE, 1986 FROM_HERE, base::Bind(&RepostingIdleTestTask,
1984 base::Bind(&RepostingIdleTestTask, idle_task_runner_, &run_count)); 1987 base::RetainedRef(idle_task_runner_), &run_count));
1985 1988
1986 // Renderer should start in visible state. 1989 // Renderer should start in visible state.
1987 RunUntilIdle(); 1990 RunUntilIdle();
1988 EXPECT_EQ(0, run_count); 1991 EXPECT_EQ(0, run_count);
1989 1992
1990 // When we hide the renderer it should start a max deadline idle period, which 1993 // When we hide the renderer it should start a max deadline idle period, which
1991 // will run an idle task and then immediately start a new idle period, which 1994 // will run an idle task and then immediately start a new idle period, which
1992 // runs the second idle task. 1995 // runs the second idle task.
1993 scheduler_->SetAllRenderWidgetsHidden(true); 1996 scheduler_->SetAllRenderWidgetsHidden(true);
1994 RunUntilIdle(); 1997 RunUntilIdle();
1995 EXPECT_EQ(2, run_count); 1998 EXPECT_EQ(2, run_count);
1996 1999
1997 // Advance time by amount of time by the maximum amount of time we execute 2000 // Advance time by amount of time by the maximum amount of time we execute
1998 // idle tasks when hidden (plus some slack) - idle period should have ended. 2001 // idle tasks when hidden (plus some slack) - idle period should have ended.
1999 max_idle_task_reposts = 3; 2002 max_idle_task_reposts = 3;
2000 idle_task_runner_->PostIdleTask( 2003 idle_task_runner_->PostIdleTask(
2001 FROM_HERE, 2004 FROM_HERE, base::Bind(&RepostingIdleTestTask,
2002 base::Bind(&RepostingIdleTestTask, idle_task_runner_, &run_count)); 2005 base::RetainedRef(idle_task_runner_), &run_count));
2003 clock_->Advance(end_idle_when_hidden_delay() + 2006 clock_->Advance(end_idle_when_hidden_delay() +
2004 base::TimeDelta::FromMilliseconds(10)); 2007 base::TimeDelta::FromMilliseconds(10));
2005 RunUntilIdle(); 2008 RunUntilIdle();
2006 EXPECT_EQ(2, run_count); 2009 EXPECT_EQ(2, run_count);
2007 } 2010 }
2008 2011
2009 TEST_F(RendererSchedulerImplTest, TimerQueueEnabledByDefault) { 2012 TEST_F(RendererSchedulerImplTest, TimerQueueEnabledByDefault) {
2010 std::vector<std::string> run_order; 2013 std::vector<std::string> run_order;
2011 PostTestTasks(&run_order, "T1 T2"); 2014 PostTestTasks(&run_order, "T1 T2");
2012 RunUntilIdle(); 2015 RunUntilIdle();
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
2797 2800
2798 // Make sure TouchStart causes a policy change. 2801 // Make sure TouchStart causes a policy change.
2799 scheduler_->DidHandleInputEventOnCompositorThread( 2802 scheduler_->DidHandleInputEventOnCompositorThread(
2800 FakeInputEvent(blink::WebInputEvent::TouchStart), 2803 FakeInputEvent(blink::WebInputEvent::TouchStart),
2801 RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD); 2804 RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD);
2802 EXPECT_EQ(RendererScheduler::UseCase::TOUCHSTART, 2805 EXPECT_EQ(RendererScheduler::UseCase::TOUCHSTART,
2803 ForceUpdatePolicyAndGetCurrentUseCase()); 2806 ForceUpdatePolicyAndGetCurrentUseCase());
2804 } 2807 }
2805 2808
2806 } // namespace scheduler 2809 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/child/scheduler_helper_unittest.cc ('k') | components/sessions/core/base_session_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698