| 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 <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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |