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

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

Issue 1617013002: scheduler: Disable expensive task blocking policy in M48 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2564
Patch Set: Created 4 years, 11 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
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "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 886 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 SimulateMainThreadGestureStart(TouchEventPolicy::DONT_SEND_TOUCH_START, 897 SimulateMainThreadGestureStart(TouchEventPolicy::DONT_SEND_TOUCH_START,
898 blink::WebInputEvent::GestureScrollBegin); 898 blink::WebInputEvent::GestureScrollBegin);
899 scheduler_->DidCommitFrameToCompositor(); // Starts Idle Period 899 scheduler_->DidCommitFrameToCompositor(); // Starts Idle Period
900 RunUntilIdle(); 900 RunUntilIdle();
901 901
902 EXPECT_THAT(run_order, 902 EXPECT_THAT(run_order,
903 testing::ElementsAre(std::string("C1"), std::string("T1"))); 903 testing::ElementsAre(std::string("C1"), std::string("T1")));
904 } 904 }
905 905
906 TEST_F(RendererSchedulerImplTest, 906 TEST_F(RendererSchedulerImplTest,
907 ExpensiveTimersDontRunWhenMainThreadScrolling) { 907 ExpensiveTimersDontRunWhenMainThreadScrolling_DISABLED) {
908 std::vector<std::string> run_order; 908 std::vector<std::string> run_order;
909 909
910 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 910 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
911 SimulateExpensiveTasks(timer_task_runner_); 911 SimulateExpensiveTasks(timer_task_runner_);
912 DoMainFrame(); 912 DoMainFrame();
913 SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START, 913 SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START,
914 blink::WebInputEvent::GestureScrollBegin); 914 blink::WebInputEvent::GestureScrollBegin);
915 915
916 // Timers should now be disabled during main thread user user interactions. 916 // Timers should now be disabled during main thread user user interactions.
917 PostTestTasks(&run_order, "C1 T1"); 917 PostTestTasks(&run_order, "C1 T1");
(...skipping 12 matching lines...) Expand all
930 930
931 clock_->Advance(subsequent_input_expected_after_input_duration() * 2); 931 clock_->Advance(subsequent_input_expected_after_input_duration() * 2);
932 932
933 run_order.clear(); 933 run_order.clear();
934 RunUntilIdle(); 934 RunUntilIdle();
935 EXPECT_FALSE(TouchStartExpectedSoon()); 935 EXPECT_FALSE(TouchStartExpectedSoon());
936 EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase()); 936 EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
937 EXPECT_THAT(run_order, testing::ElementsAre(std::string("T1"))); 937 EXPECT_THAT(run_order, testing::ElementsAre(std::string("T1")));
938 } 938 }
939 939
940 TEST_F(RendererSchedulerImplTest, 940 TEST_F(
941 ExpensiveTimersDontRunWhenMainThreadScrolling_AndOnCriticalPath) { 941 RendererSchedulerImplTest,
942 ExpensiveTimersDontRunWhenMainThreadScrolling_AndOnCriticalPath_DISABLED) {
942 std::vector<std::string> run_order; 943 std::vector<std::string> run_order;
943 944
944 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 945 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
945 SimulateExpensiveTasks(timer_task_runner_); 946 SimulateExpensiveTasks(timer_task_runner_);
946 DoMainFrameOnCriticalPath(); 947 DoMainFrameOnCriticalPath();
947 SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START, 948 SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START,
948 blink::WebInputEvent::GestureScrollBegin); 949 blink::WebInputEvent::GestureScrollBegin);
949 950
950 // Timers should now be disabled during main thread user user interactions. 951 // Timers should now be disabled during main thread user user interactions.
951 PostTestTasks(&run_order, "C1 T1"); 952 PostTestTasks(&run_order, "C1 T1");
(...skipping 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after
2109 testing::ElementsAre(std::string("T4"), std::string("T5"))); 2110 testing::ElementsAre(std::string("T4"), std::string("T5")));
2110 2111
2111 // Subsequent timer tasks should fire as usual. 2112 // Subsequent timer tasks should fire as usual.
2112 run_order.clear(); 2113 run_order.clear();
2113 PostTestTasks(&run_order, "T6"); 2114 PostTestTasks(&run_order, "T6");
2114 RunUntilIdle(); 2115 RunUntilIdle();
2115 EXPECT_THAT(run_order, testing::ElementsAre(std::string("T6"))); 2116 EXPECT_THAT(run_order, testing::ElementsAre(std::string("T6")));
2116 } 2117 }
2117 2118
2118 TEST_F(RendererSchedulerImplTest, 2119 TEST_F(RendererSchedulerImplTest,
2119 ExpensiveLoadingTasksNotBlockedTillFirstBeginMainFrame) { 2120 ExpensiveLoadingTasksNotBlockedTillFirstBeginMainFrame_DISABLED) {
2120 std::vector<std::string> run_order; 2121 std::vector<std::string> run_order;
2121 2122
2122 EnableTaskBlocking(); 2123 EnableTaskBlocking();
2123 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2124 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2124 SimulateExpensiveTasks(loading_task_runner_); 2125 SimulateExpensiveTasks(loading_task_runner_);
2125 ForceTouchStartToBeExpectedSoon(); 2126 ForceTouchStartToBeExpectedSoon();
2126 PostTestTasks(&run_order, "L1 D1"); 2127 PostTestTasks(&run_order, "L1 D1");
2127 RunUntilIdle(); 2128 RunUntilIdle();
2128 2129
2129 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase()); 2130 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2163 2164
2164 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase()); 2165 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
2165 EXPECT_TRUE(HaveSeenABeginMainframe()); 2166 EXPECT_TRUE(HaveSeenABeginMainframe());
2166 EXPECT_TRUE(LoadingTasksSeemExpensive()); 2167 EXPECT_TRUE(LoadingTasksSeemExpensive());
2167 EXPECT_FALSE(TimerTasksSeemExpensive()); 2168 EXPECT_FALSE(TimerTasksSeemExpensive());
2168 EXPECT_FALSE(TouchStartExpectedSoon()); 2169 EXPECT_FALSE(TouchStartExpectedSoon());
2169 EXPECT_THAT(run_order, 2170 EXPECT_THAT(run_order,
2170 testing::ElementsAre(std::string("L1"), std::string("D1"))); 2171 testing::ElementsAre(std::string("L1"), std::string("D1")));
2171 } 2172 }
2172 2173
2173 TEST_F(RendererSchedulerImplTest, ExpensiveTimerTaskBlocked) { 2174 TEST_F(RendererSchedulerImplTest, ExpensiveTimerTaskBlocked_DISABLED) {
2174 std::vector<std::string> run_order; 2175 std::vector<std::string> run_order;
2175 2176
2176 EnableTaskBlocking(); 2177 EnableTaskBlocking();
2177 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2178 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2178 DoMainFrame(); 2179 DoMainFrame();
2179 SimulateExpensiveTasks(timer_task_runner_); 2180 SimulateExpensiveTasks(timer_task_runner_);
2180 ForceTouchStartToBeExpectedSoon(); 2181 ForceTouchStartToBeExpectedSoon();
2181 2182
2182 scheduler_->DidHandleInputEventOnCompositorThread( 2183 scheduler_->DidHandleInputEventOnCompositorThread(
2183 FakeInputEvent(blink::WebInputEvent::GestureFlingStart), 2184 FakeInputEvent(blink::WebInputEvent::GestureFlingStart),
(...skipping 29 matching lines...) Expand all
2213 ForceUpdatePolicyAndGetCurrentUseCase()); 2214 ForceUpdatePolicyAndGetCurrentUseCase());
2214 EXPECT_TRUE(HaveSeenABeginMainframe()); 2215 EXPECT_TRUE(HaveSeenABeginMainframe());
2215 EXPECT_FALSE(LoadingTasksSeemExpensive()); 2216 EXPECT_FALSE(LoadingTasksSeemExpensive());
2216 EXPECT_TRUE(TimerTasksSeemExpensive()); 2217 EXPECT_TRUE(TimerTasksSeemExpensive());
2217 EXPECT_TRUE(TouchStartExpectedSoon()); 2218 EXPECT_TRUE(TouchStartExpectedSoon());
2218 EXPECT_THAT(run_order, testing::ElementsAre(std::string("T1"), 2219 EXPECT_THAT(run_order, testing::ElementsAre(std::string("T1"),
2219 std::string("D1"))); 2220 std::string("D1")));
2220 } 2221 }
2221 2222
2222 TEST_F(RendererSchedulerImplTest, 2223 TEST_F(RendererSchedulerImplTest,
2223 ExpensiveTimerTaskNotBlocked_IfBeginMainFrameNotExpectedSoon) { 2224 ExpensiveTimerTaskNotBlocked_IfBeginMainFrameNotExpectedSoon_DISABLED) {
2224 std::vector<std::string> run_order; 2225 std::vector<std::string> run_order;
2225 2226
2226 EnableTaskBlocking(); 2227 EnableTaskBlocking();
2227 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2228 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2228 DoMainFrame(); 2229 DoMainFrame();
2229 SimulateExpensiveTasks(timer_task_runner_); 2230 SimulateExpensiveTasks(timer_task_runner_);
2230 ForceTouchStartToBeExpectedSoon(); 2231 ForceTouchStartToBeExpectedSoon();
2231 scheduler_->BeginFrameNotExpectedSoon(); 2232 scheduler_->BeginFrameNotExpectedSoon();
2232 2233
2233 scheduler_->DidHandleInputEventOnCompositorThread( 2234 scheduler_->DidHandleInputEventOnCompositorThread(
2234 FakeInputEvent(blink::WebInputEvent::GestureFlingStart), 2235 FakeInputEvent(blink::WebInputEvent::GestureFlingStart),
2235 RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD); 2236 RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD);
2236 PostTestTasks(&run_order, "T1 D1"); 2237 PostTestTasks(&run_order, "T1 D1");
2237 RunUntilIdle(); 2238 RunUntilIdle();
2238 2239
2239 EXPECT_EQ(UseCase::MAIN_THREAD_GESTURE, 2240 EXPECT_EQ(UseCase::MAIN_THREAD_GESTURE,
2240 ForceUpdatePolicyAndGetCurrentUseCase()); 2241 ForceUpdatePolicyAndGetCurrentUseCase());
2241 EXPECT_TRUE(HaveSeenABeginMainframe()); 2242 EXPECT_TRUE(HaveSeenABeginMainframe());
2242 EXPECT_FALSE(LoadingTasksSeemExpensive()); 2243 EXPECT_FALSE(LoadingTasksSeemExpensive());
2243 EXPECT_FALSE(TimerTasksSeemExpensive()); 2244 EXPECT_FALSE(TimerTasksSeemExpensive());
2244 EXPECT_TRUE(TouchStartExpectedSoon()); 2245 EXPECT_TRUE(TouchStartExpectedSoon());
2245 EXPECT_THAT(run_order, 2246 EXPECT_THAT(run_order,
2246 testing::ElementsAre(std::string("T1"), std::string("D1"))); 2247 testing::ElementsAre(std::string("T1"), std::string("D1")));
2247 } 2248 }
2248 2249
2249 TEST_F(RendererSchedulerImplTest, 2250 TEST_F(RendererSchedulerImplTest,
2250 ExpensiveLoadingTasksNotBlockedIfNavigationExpected) { 2251 ExpensiveLoadingTasksNotBlockedIfNavigationExpected_DISABLED) {
2251 std::vector<std::string> run_order; 2252 std::vector<std::string> run_order;
2252 2253
2253 EnableTaskBlocking(); 2254 EnableTaskBlocking();
2254 DoMainFrame(); 2255 DoMainFrame();
2255 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2256 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2256 SimulateExpensiveTasks(loading_task_runner_); 2257 SimulateExpensiveTasks(loading_task_runner_);
2257 ForceTouchStartToBeExpectedSoon(); 2258 ForceTouchStartToBeExpectedSoon();
2258 scheduler_->AddPendingNavigation(); 2259 scheduler_->AddPendingNavigation();
2259 2260
2260 PostTestTasks(&run_order, "L1 D1"); 2261 PostTestTasks(&run_order, "L1 D1");
(...skipping 18 matching lines...) Expand all
2279 EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase()); 2280 EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
2280 EXPECT_TRUE(HaveSeenABeginMainframe()); 2281 EXPECT_TRUE(HaveSeenABeginMainframe());
2281 EXPECT_TRUE(LoadingTasksSeemExpensive()); 2282 EXPECT_TRUE(LoadingTasksSeemExpensive());
2282 EXPECT_FALSE(TimerTasksSeemExpensive()); 2283 EXPECT_FALSE(TimerTasksSeemExpensive());
2283 EXPECT_TRUE(TouchStartExpectedSoon()); 2284 EXPECT_TRUE(TouchStartExpectedSoon());
2284 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1"))); 2285 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
2285 } 2286 }
2286 2287
2287 TEST_F( 2288 TEST_F(
2288 RendererSchedulerImplTest, 2289 RendererSchedulerImplTest,
2289 ExpensiveLoadingTasksNotBlockedIfNavigationExpected_MultipleNavigations) { 2290 ExpensiveLoadingTasksNotBlockedIfNavigationExpected_MultipleNavigations_DISA BLED) {
2290 std::vector<std::string> run_order; 2291 std::vector<std::string> run_order;
2291 2292
2292 EnableTaskBlocking(); 2293 EnableTaskBlocking();
2293 DoMainFrame(); 2294 DoMainFrame();
2294 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2295 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2295 SimulateExpensiveTasks(loading_task_runner_); 2296 SimulateExpensiveTasks(loading_task_runner_);
2296 ForceTouchStartToBeExpectedSoon(); 2297 ForceTouchStartToBeExpectedSoon();
2297 scheduler_->AddPendingNavigation(); 2298 scheduler_->AddPendingNavigation();
2298 scheduler_->AddPendingNavigation(); 2299 scheduler_->AddPendingNavigation();
2299 2300
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
2395 EXPECT_FALSE(LoadingTasksSeemExpensive()) << " i = " << i; 2396 EXPECT_FALSE(LoadingTasksSeemExpensive()) << " i = " << i;
2396 EXPECT_FALSE(TimerTasksSeemExpensive()) << " i = " << i; 2397 EXPECT_FALSE(TimerTasksSeemExpensive()) << " i = " << i;
2397 2398
2398 base::TimeDelta time_till_next_frame = 2399 base::TimeDelta time_till_next_frame =
2399 EstimatedNextFrameBegin() - clock_->NowTicks(); 2400 EstimatedNextFrameBegin() - clock_->NowTicks();
2400 if (time_till_next_frame > base::TimeDelta()) 2401 if (time_till_next_frame > base::TimeDelta())
2401 clock_->Advance(time_till_next_frame); 2402 clock_->Advance(time_till_next_frame);
2402 } 2403 }
2403 } 2404 }
2404 2405
2405 TEST_F(RendererSchedulerImplTest, ExpensiveTimer_Blocked) { 2406 TEST_F(RendererSchedulerImplTest, ExpensiveTimer_Blocked_DISABLED) {
2406 EnableTaskBlocking(); 2407 EnableTaskBlocking();
2407 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2408 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2408 SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START, 2409 SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START,
2409 blink::WebInputEvent::TouchMove); 2410 blink::WebInputEvent::TouchMove);
2410 RunUntilIdle(); 2411 RunUntilIdle();
2411 for (int i = 0; i < 20; i++) { 2412 for (int i = 0; i < 20; i++) {
2412 simulate_timer_task_ran_ = false; 2413 simulate_timer_task_ran_ = false;
2413 2414
2414 cc::BeginFrameArgs begin_frame_args = cc::BeginFrameArgs::Create( 2415 cc::BeginFrameArgs begin_frame_args = cc::BeginFrameArgs::Create(
2415 BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(), 2416 BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
(...skipping 24 matching lines...) Expand all
2440 } 2441 }
2441 2442
2442 base::TimeDelta time_till_next_frame = 2443 base::TimeDelta time_till_next_frame =
2443 EstimatedNextFrameBegin() - clock_->NowTicks(); 2444 EstimatedNextFrameBegin() - clock_->NowTicks();
2444 if (time_till_next_frame > base::TimeDelta()) 2445 if (time_till_next_frame > base::TimeDelta())
2445 clock_->Advance(time_till_next_frame); 2446 clock_->Advance(time_till_next_frame);
2446 } 2447 }
2447 } 2448 }
2448 2449
2449 } // namespace scheduler 2450 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698