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

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

Issue 2016943003: scheduler: Avoid false alerts about expensive task blocking (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 <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 2859 matching lines...) Expand 10 before | Expand all | Expand 10 after
2870 ForceTouchStartToBeExpectedSoon(); 2870 ForceTouchStartToBeExpectedSoon();
2871 2871
2872 std::vector<std::string> run_order; 2872 std::vector<std::string> run_order;
2873 PostTestTasks(&run_order, "T1 T2"); 2873 PostTestTasks(&run_order, "T1 T2");
2874 RunUntilIdle(); 2874 RunUntilIdle();
2875 2875
2876 EXPECT_EQ(0u, run_order.size()); 2876 EXPECT_EQ(0u, run_order.size());
2877 EXPECT_EQ(0u, web_view_scheduler.console_warnings().size()); 2877 EXPECT_EQ(0u, web_view_scheduler.console_warnings().size());
2878 } 2878 }
2879 2879
2880 TEST_F(RendererSchedulerImplTest, BlockedTimerNotification_TOUCHSTART) {
2881 // Make sure we don't report warnings about blocked tasks during TOUCHSTART.
2882 WebViewSchedulerImplForTest web_view_scheduler(scheduler_.get());
2883
2884 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2885 DoMainFrame();
2886 SimulateExpensiveTasks(timer_task_runner_);
2887 SimulateCompositorGestureStart(TouchEventPolicy::SEND_TOUCH_START);
2888 scheduler_->DidHandleInputEventOnCompositorThread(
2889 FakeInputEvent(blink::WebInputEvent::TouchStart),
2890 RendererScheduler::InputEventState::EVENT_CONSUMED_BY_COMPOSITOR);
2891 EXPECT_EQ(UseCase::TOUCHSTART, ForceUpdatePolicyAndGetCurrentUseCase());
2892
2893 std::vector<std::string> run_order;
2894 PostTestTasks(&run_order, "T1 T2");
2895 RunUntilIdle();
2896
2897 EXPECT_EQ(0u, run_order.size());
2898 EXPECT_EQ(0u, web_view_scheduler.console_warnings().size());
2899 }
2900
2901 TEST_F(RendererSchedulerImplTest,
2902 BlockedTimerNotification_SYNCHRONIZED_GESTURE) {
2903 // Make sure we only report warnings during a high blocking threshold.
2904 WebViewSchedulerImplForTest web_view_scheduler(scheduler_.get());
2905
2906 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2907 DoMainFrame();
2908 SimulateExpensiveTasks(timer_task_runner_);
2909 SimulateCompositorGestureStart(TouchEventPolicy::DONT_SEND_TOUCH_START);
2910
2911 cc::BeginFrameArgs begin_frame_args = cc::BeginFrameArgs::Create(
2912 BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
2913 base::TimeDelta::FromMilliseconds(16), cc::BeginFrameArgs::NORMAL);
2914 begin_frame_args.on_critical_path = true;
2915 scheduler_->WillBeginFrame(begin_frame_args);
2916
2917 EXPECT_EQ(UseCase::SYNCHRONIZED_GESTURE,
2918 ForceUpdatePolicyAndGetCurrentUseCase());
2919
2920 std::vector<std::string> run_order;
2921 PostTestTasks(&run_order, "T1 T2");
2922 RunUntilIdle();
2923
2924 EXPECT_EQ(0u, run_order.size());
2925 EXPECT_EQ(0u, web_view_scheduler.console_warnings().size());
2926 }
2927
2880 namespace { 2928 namespace {
2881 void SlowCountingTask(size_t* count, 2929 void SlowCountingTask(size_t* count,
2882 base::SimpleTestTickClock* clock, 2930 base::SimpleTestTickClock* clock,
2883 int task_duration, 2931 int task_duration,
2884 scoped_refptr<base::SingleThreadTaskRunner> timer_queue) { 2932 scoped_refptr<base::SingleThreadTaskRunner> timer_queue) {
2885 clock->Advance(base::TimeDelta::FromMilliseconds(task_duration)); 2933 clock->Advance(base::TimeDelta::FromMilliseconds(task_duration));
2886 if (++(*count) < 500) { 2934 if (++(*count) < 500) {
2887 timer_queue->PostTask(FROM_HERE, base::Bind(SlowCountingTask, count, clock, 2935 timer_queue->PostTask(FROM_HERE, base::Bind(SlowCountingTask, count, clock,
2888 task_duration, timer_queue)); 2936 task_duration, timer_queue));
2889 } 2937 }
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
3156 base::Unretained(this))); 3204 base::Unretained(this)));
3157 EXPECT_EQ(UseCase::MAIN_THREAD_GESTURE, CurrentUseCase()) << "i = " << i; 3205 EXPECT_EQ(UseCase::MAIN_THREAD_GESTURE, CurrentUseCase()) << "i = " << i;
3158 } 3206 }
3159 3207
3160 EXPECT_EQ(TaskQueue::HIGH_PRIORITY, 3208 EXPECT_EQ(TaskQueue::HIGH_PRIORITY,
3161 scheduler_->CompositorTaskRunner()->GetQueuePriority()); 3209 scheduler_->CompositorTaskRunner()->GetQueuePriority());
3162 EXPECT_EQ(279u, run_order.size()); 3210 EXPECT_EQ(279u, run_order.size());
3163 } 3211 }
3164 3212
3165 } // namespace scheduler 3213 } // 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