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 2106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2117 scheduler_->ResumeTimerQueue(); | 2117 scheduler_->ResumeTimerQueue(); |
2118 RunUntilIdle(); | 2118 RunUntilIdle(); |
2119 EXPECT_TRUE(run_order.empty()); | 2119 EXPECT_TRUE(run_order.empty()); |
2120 | 2120 |
2121 scheduler_->ResumeTimerQueue(); | 2121 scheduler_->ResumeTimerQueue(); |
2122 RunUntilIdle(); | 2122 RunUntilIdle(); |
2123 EXPECT_THAT(run_order, | 2123 EXPECT_THAT(run_order, |
2124 testing::ElementsAre(std::string("T1"), std::string("T2"))); | 2124 testing::ElementsAre(std::string("T1"), std::string("T2"))); |
2125 } | 2125 } |
2126 | 2126 |
| 2127 TEST_F(RendererSchedulerImplTest, SuspendRendererWhenBackgrounded) { |
| 2128 // Assume that the renderer is backgrounded. |
| 2129 scheduler_->OnRendererBackgrounded(); |
| 2130 |
| 2131 // Tasks don't fire when the renderer is suspended. |
| 2132 std::vector<std::string> run_order; |
| 2133 PostTestTasks(&run_order, "T1 T2"); |
| 2134 scheduler_->SuspendRenderer(); |
| 2135 RunUntilIdle(); |
| 2136 EXPECT_TRUE(run_order.empty()); |
| 2137 |
| 2138 // The queued tasks fire when the tab goes foregrounded. |
| 2139 scheduler_->OnRendererForegrounded(); |
| 2140 RunUntilIdle(); |
| 2141 EXPECT_THAT(run_order, |
| 2142 testing::ElementsAre(std::string("T1"), std::string("T2"))); |
| 2143 } |
| 2144 |
2127 TEST_F(RendererSchedulerImplTest, UseCaseToString) { | 2145 TEST_F(RendererSchedulerImplTest, UseCaseToString) { |
2128 CheckAllUseCaseToString(); | 2146 CheckAllUseCaseToString(); |
2129 } | 2147 } |
2130 | 2148 |
2131 TEST_F(RendererSchedulerImplTest, MismatchedDidHandleInputEventOnMainThread) { | 2149 TEST_F(RendererSchedulerImplTest, MismatchedDidHandleInputEventOnMainThread) { |
2132 // This should not DCHECK because there was no corresponding compositor side | 2150 // This should not DCHECK because there was no corresponding compositor side |
2133 // call to DidHandleInputEventOnCompositorThread with | 2151 // call to DidHandleInputEventOnCompositorThread with |
2134 // INPUT_EVENT_ACK_STATE_NOT_CONSUMED. There are legitimate reasons for the | 2152 // INPUT_EVENT_ACK_STATE_NOT_CONSUMED. There are legitimate reasons for the |
2135 // compositor to not be there and we don't want to make debugging impossible. | 2153 // compositor to not be there and we don't want to make debugging impossible. |
2136 scheduler_->DidHandleInputEventOnMainThread( | 2154 scheduler_->DidHandleInputEventOnMainThread( |
(...skipping 847 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2984 } | 3002 } |
2985 | 3003 |
2986 // Timer tasks should not have been starved by the expensive compositor | 3004 // Timer tasks should not have been starved by the expensive compositor |
2987 // tasks. | 3005 // tasks. |
2988 EXPECT_EQ(TaskQueue::NORMAL_PRIORITY, | 3006 EXPECT_EQ(TaskQueue::NORMAL_PRIORITY, |
2989 scheduler_->CompositorTaskRunner()->GetQueuePriority()); | 3007 scheduler_->CompositorTaskRunner()->GetQueuePriority()); |
2990 EXPECT_EQ(1000u, run_order.size()); | 3008 EXPECT_EQ(1000u, run_order.size()); |
2991 } | 3009 } |
2992 | 3010 |
2993 } // namespace scheduler | 3011 } // namespace scheduler |
OLD | NEW |