OLD | NEW |
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 "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/test/simple_test_tick_clock.h" | 8 #include "base/test/simple_test_tick_clock.h" |
9 #include "cc/output/begin_frame_args.h" | 9 #include "cc/output/begin_frame_args.h" |
10 #include "cc/test/ordered_simple_task_runner.h" | 10 #include "cc/test/ordered_simple_task_runner.h" |
(...skipping 2132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2143 RunUntilIdle(); | 2143 RunUntilIdle(); |
2144 | 2144 |
2145 EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase()); | 2145 EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase()); |
2146 EXPECT_TRUE(HaveSeenABeginMainframe()); | 2146 EXPECT_TRUE(HaveSeenABeginMainframe()); |
2147 EXPECT_TRUE(LoadingTasksSeemExpensive()); | 2147 EXPECT_TRUE(LoadingTasksSeemExpensive()); |
2148 EXPECT_FALSE(TimerTasksSeemExpensive()); | 2148 EXPECT_FALSE(TimerTasksSeemExpensive()); |
2149 EXPECT_TRUE(TouchStartExpectedSoon()); | 2149 EXPECT_TRUE(TouchStartExpectedSoon()); |
2150 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1"))); | 2150 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1"))); |
2151 } | 2151 } |
2152 | 2152 |
| 2153 TEST_F(RendererSchedulerImplTest, |
| 2154 ExpensiveLoadingTasksNotBlockedDuringMainThreadGestures) { |
| 2155 std::vector<std::string> run_order; |
| 2156 |
| 2157 SimulateExpensiveTasks(loading_task_runner_); |
| 2158 |
| 2159 // Loading tasks should not be disabled during main thread user user |
| 2160 // interactions. |
| 2161 PostTestTasks(&run_order, "C1 L1"); |
| 2162 |
| 2163 // Trigger main_thread_gesture UseCase |
| 2164 WillBeginMainThreadGestureFrame(); |
| 2165 RunUntilIdle(); |
| 2166 EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_GESTURE, CurrentUseCase()); |
| 2167 |
| 2168 EXPECT_TRUE(LoadingTasksSeemExpensive()); |
| 2169 EXPECT_FALSE(TimerTasksSeemExpensive()); |
| 2170 EXPECT_THAT(run_order, |
| 2171 testing::ElementsAre(std::string("C1"), std::string("L1"))); |
| 2172 } |
| 2173 |
2153 TEST_F(RendererSchedulerImplTest, ModeratelyExpensiveTimer_NotBlocked) { | 2174 TEST_F(RendererSchedulerImplTest, ModeratelyExpensiveTimer_NotBlocked) { |
2154 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); | 2175 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); |
2155 for (int i = 0; i < 20; i++) { | 2176 for (int i = 0; i < 20; i++) { |
2156 simulate_timer_task_ran_ = false; | 2177 simulate_timer_task_ran_ = false; |
2157 compositor_task_runner_->PostTask( | 2178 compositor_task_runner_->PostTask( |
2158 FROM_HERE, | 2179 FROM_HERE, |
2159 base::Bind( | 2180 base::Bind( |
2160 &RendererSchedulerImplTest::SimulateMainThreadGestureCompositorTask, | 2181 &RendererSchedulerImplTest::SimulateMainThreadGestureCompositorTask, |
2161 base::Unretained(this), base::TimeDelta::FromMilliseconds(4))); | 2182 base::Unretained(this), base::TimeDelta::FromMilliseconds(4))); |
2162 timer_task_runner_->PostTask( | 2183 timer_task_runner_->PostTask( |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2205 } | 2226 } |
2206 | 2227 |
2207 base::TimeDelta time_till_next_frame = | 2228 base::TimeDelta time_till_next_frame = |
2208 EstimatedNextFrameBegin() - clock_->NowTicks(); | 2229 EstimatedNextFrameBegin() - clock_->NowTicks(); |
2209 if (time_till_next_frame > base::TimeDelta()) | 2230 if (time_till_next_frame > base::TimeDelta()) |
2210 clock_->Advance(time_till_next_frame); | 2231 clock_->Advance(time_till_next_frame); |
2211 } | 2232 } |
2212 } | 2233 } |
2213 | 2234 |
2214 } // namespace scheduler | 2235 } // namespace scheduler |
OLD | NEW |