OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "cc/surfaces/display_scheduler.h" | 5 #include "cc/surfaces/display_scheduler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/test/null_task_runner.h" | 8 #include "base/test/null_task_runner.h" |
9 #include "base/test/simple_test_tick_clock.h" | |
9 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
10 #include "cc/output/begin_frame_args.h" | 11 #include "cc/output/begin_frame_args.h" |
11 #include "cc/surfaces/display.h" | 12 #include "cc/surfaces/display.h" |
12 #include "cc/test/scheduler_test_common.h" | 13 #include "cc/test/scheduler_test_common.h" |
13 #include "cc/test/test_now_source.h" | |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
16 namespace cc { | 16 namespace cc { |
17 namespace { | 17 namespace { |
18 | 18 |
19 class FakeDisplaySchedulerClient : public DisplaySchedulerClient { | 19 class FakeDisplaySchedulerClient : public DisplaySchedulerClient { |
20 public: | 20 public: |
21 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {} | 21 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {} |
22 | 22 |
23 ~FakeDisplaySchedulerClient() override {} | 23 ~FakeDisplaySchedulerClient() override {} |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
63 } | 63 } |
64 | 64 |
65 protected: | 65 protected: |
66 int scheduler_begin_frame_deadline_count_; | 66 int scheduler_begin_frame_deadline_count_; |
67 }; | 67 }; |
68 | 68 |
69 class DisplaySchedulerTest : public testing::Test { | 69 class DisplaySchedulerTest : public testing::Test { |
70 public: | 70 public: |
71 DisplaySchedulerTest() { | 71 DisplaySchedulerTest() { |
72 const int max_pending_swaps = 1; | 72 const int max_pending_swaps = 1; |
73 now_src_ = TestNowSource::Create(); | 73 now_src_ = make_scoped_ptr(new base::SimpleTestTickClock()); |
mithro-old
2015/06/04 07:41:10
This should be done in the initializer list.
Ankur Verma
2015/06/05 14:39:16
Done.
| |
74 now_src_->Advance(base::TimeDelta::FromInternalValue(10000)); | |
74 null_task_runner_ = make_scoped_refptr(new base::NullTaskRunner); | 75 null_task_runner_ = make_scoped_refptr(new base::NullTaskRunner); |
75 client_ = make_scoped_ptr(new FakeDisplaySchedulerClient); | 76 client_ = make_scoped_ptr(new FakeDisplaySchedulerClient); |
76 scheduler_ = make_scoped_ptr( | 77 scheduler_ = make_scoped_ptr( |
77 new TestDisplayScheduler(client_.get(), &fake_begin_frame_source_, | 78 new TestDisplayScheduler(client_.get(), &fake_begin_frame_source_, |
78 null_task_runner_, max_pending_swaps)); | 79 null_task_runner_, max_pending_swaps)); |
79 } | 80 } |
80 | 81 |
81 ~DisplaySchedulerTest() override {} | 82 ~DisplaySchedulerTest() override {} |
82 | 83 |
83 void SetUp() override { scheduler_->SetRootSurfaceResourcesLocked(false); } | 84 void SetUp() override { scheduler_->SetRootSurfaceResourcesLocked(false); } |
84 | 85 |
85 void BeginFrameForTest() { | 86 void BeginFrameForTest() { |
86 base::TimeTicks frame_time = now_src_->Now(); | 87 base::TimeTicks frame_time = now_src_->NowTicks(); |
87 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); | 88 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); |
88 base::TimeTicks deadline = frame_time + interval - | 89 base::TimeTicks deadline = frame_time + interval - |
89 BeginFrameArgs::DefaultEstimatedParentDrawTime(); | 90 BeginFrameArgs::DefaultEstimatedParentDrawTime(); |
90 fake_begin_frame_source_.TestOnBeginFrame( | 91 fake_begin_frame_source_.TestOnBeginFrame( |
91 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, | 92 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, |
92 interval, BeginFrameArgs::NORMAL)); | 93 interval, BeginFrameArgs::NORMAL)); |
93 } | 94 } |
94 | 95 |
95 protected: | 96 protected: |
96 TestNowSource& now_src() { return *now_src_; } | 97 base::SimpleTestTickClock& now_src() { return *now_src_; } |
97 FakeDisplaySchedulerClient& client() { return *client_; } | 98 FakeDisplaySchedulerClient& client() { return *client_; } |
98 DisplayScheduler& scheduler() { return *scheduler_; } | 99 DisplayScheduler& scheduler() { return *scheduler_; } |
99 | 100 |
100 scoped_refptr<TestNowSource> now_src_; | 101 scoped_ptr<base::SimpleTestTickClock> now_src_; |
101 scoped_refptr<base::NullTaskRunner> null_task_runner_; | 102 scoped_refptr<base::NullTaskRunner> null_task_runner_; |
102 | 103 |
103 FakeBeginFrameSource fake_begin_frame_source_; | 104 FakeBeginFrameSource fake_begin_frame_source_; |
104 scoped_ptr<FakeDisplaySchedulerClient> client_; | 105 scoped_ptr<FakeDisplaySchedulerClient> client_; |
105 scoped_ptr<TestDisplayScheduler> scheduler_; | 106 scoped_ptr<TestDisplayScheduler> scheduler_; |
106 }; | 107 }; |
107 | 108 |
108 TEST_F(DisplaySchedulerTest, EntireDisplayDamagedDrawsImmediately) { | 109 TEST_F(DisplaySchedulerTest, EntireDisplayDamagedDrawsImmediately) { |
109 SurfaceId root_surface_id(1); | 110 SurfaceId root_surface_id(1); |
110 BeginFrameForTest(); | 111 BeginFrameForTest(); |
111 EXPECT_LT(now_src().Now(), | 112 EXPECT_LT(now_src().NowTicks(), |
112 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 113 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
113 scheduler_->EntireDisplayDamaged(root_surface_id); | 114 scheduler_->EntireDisplayDamaged(root_surface_id); |
114 EXPECT_GE(now_src().Now(), | 115 EXPECT_GE(now_src().NowTicks(), |
115 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 116 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
116 } | 117 } |
117 | 118 |
118 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { | 119 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { |
119 SurfaceId sid1(1); | 120 SurfaceId sid1(1); |
120 SurfaceId sid2(2); | 121 SurfaceId sid2(2); |
121 | 122 |
122 // Get scheduler to detect surface 1 as active by drawing | 123 // Get scheduler to detect surface 1 as active by drawing |
123 // two frames in a row with damage from surface 1. | 124 // two frames in a row with damage from surface 1. |
124 BeginFrameForTest(); | 125 BeginFrameForTest(); |
125 scheduler_->SurfaceDamaged(sid1); | 126 scheduler_->SurfaceDamaged(sid1); |
126 scheduler_->BeginFrameDeadlineForTest(); | 127 scheduler_->BeginFrameDeadlineForTest(); |
127 BeginFrameForTest(); | 128 BeginFrameForTest(); |
128 scheduler_->SurfaceDamaged(sid1); | 129 scheduler_->SurfaceDamaged(sid1); |
129 scheduler_->BeginFrameDeadlineForTest(); | 130 scheduler_->BeginFrameDeadlineForTest(); |
130 | 131 |
131 // Damage only from surface 2 (inactive) does not trigger deadline early. | 132 // Damage only from surface 2 (inactive) does not trigger deadline early. |
132 BeginFrameForTest(); | 133 BeginFrameForTest(); |
133 scheduler_->SurfaceDamaged(sid2); | 134 scheduler_->SurfaceDamaged(sid2); |
134 EXPECT_LT(now_src().Now(), | 135 EXPECT_LT(now_src().NowTicks(), |
135 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 136 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
136 | 137 |
137 // Damage from surface 1 triggers deadline early. | 138 // Damage from surface 1 triggers deadline early. |
138 scheduler_->SurfaceDamaged(sid1); | 139 scheduler_->SurfaceDamaged(sid1); |
139 EXPECT_GE(now_src().Now(), | 140 EXPECT_GE(now_src().NowTicks(), |
140 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 141 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
141 scheduler_->BeginFrameDeadlineForTest(); | 142 scheduler_->BeginFrameDeadlineForTest(); |
142 | 143 |
143 // Make both surface 1 and 2 active. | 144 // Make both surface 1 and 2 active. |
144 BeginFrameForTest(); | 145 BeginFrameForTest(); |
145 scheduler_->SurfaceDamaged(sid2); | 146 scheduler_->SurfaceDamaged(sid2); |
146 scheduler_->SurfaceDamaged(sid1); | 147 scheduler_->SurfaceDamaged(sid1); |
147 scheduler_->BeginFrameDeadlineForTest(); | 148 scheduler_->BeginFrameDeadlineForTest(); |
148 | 149 |
149 // Deadline doesn't trigger early until surface 1 and 2 are both damaged. | 150 // Deadline doesn't trigger early until surface 1 and 2 are both damaged. |
150 BeginFrameForTest(); | 151 BeginFrameForTest(); |
151 EXPECT_LT(now_src().Now(), | 152 EXPECT_LT(now_src().NowTicks(), |
152 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 153 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
153 scheduler_->SurfaceDamaged(sid1); | 154 scheduler_->SurfaceDamaged(sid1); |
154 EXPECT_LT(now_src().Now(), | 155 EXPECT_LT(now_src().NowTicks(), |
155 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 156 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
156 scheduler_->SurfaceDamaged(sid2); | 157 scheduler_->SurfaceDamaged(sid2); |
157 EXPECT_GE(now_src().Now(), | 158 EXPECT_GE(now_src().NowTicks(), |
158 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 159 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
159 scheduler_->BeginFrameDeadlineForTest(); | 160 scheduler_->BeginFrameDeadlineForTest(); |
160 } | 161 } |
161 | 162 |
162 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { | 163 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { |
163 SurfaceId sid1(1); | 164 SurfaceId sid1(1); |
164 | 165 |
165 // DrawAndSwap normally. | 166 // DrawAndSwap normally. |
166 BeginFrameForTest(); | 167 BeginFrameForTest(); |
167 EXPECT_LT(now_src().Now(), | 168 EXPECT_LT(now_src().NowTicks(), |
168 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 169 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
169 EXPECT_EQ(0, client_->draw_and_swap_count()); | 170 EXPECT_EQ(0, client_->draw_and_swap_count()); |
170 scheduler_->SurfaceDamaged(sid1); | 171 scheduler_->SurfaceDamaged(sid1); |
171 scheduler_->BeginFrameDeadlineForTest(); | 172 scheduler_->BeginFrameDeadlineForTest(); |
172 EXPECT_EQ(1, client_->draw_and_swap_count()); | 173 EXPECT_EQ(1, client_->draw_and_swap_count()); |
173 | 174 |
174 // Deadline triggers immediately on OutputSurfaceLost. | 175 // Deadline triggers immediately on OutputSurfaceLost. |
175 BeginFrameForTest(); | 176 BeginFrameForTest(); |
176 EXPECT_LT(now_src().Now(), | 177 EXPECT_LT(now_src().NowTicks(), |
177 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 178 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
178 scheduler_->OutputSurfaceLost(); | 179 scheduler_->OutputSurfaceLost(); |
179 EXPECT_GE(now_src().Now(), | 180 EXPECT_GE(now_src().NowTicks(), |
180 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 181 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
181 | 182 |
182 // Deadline does not DrawAndSwap after OutputSurfaceLost. | 183 // Deadline does not DrawAndSwap after OutputSurfaceLost. |
183 EXPECT_EQ(1, client_->draw_and_swap_count()); | 184 EXPECT_EQ(1, client_->draw_and_swap_count()); |
184 scheduler_->SurfaceDamaged(sid1); | 185 scheduler_->SurfaceDamaged(sid1); |
185 scheduler_->BeginFrameDeadlineForTest(); | 186 scheduler_->BeginFrameDeadlineForTest(); |
186 EXPECT_EQ(1, client_->draw_and_swap_count()); | 187 EXPECT_EQ(1, client_->draw_and_swap_count()); |
187 } | 188 } |
188 | 189 |
189 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { | 190 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { |
190 SurfaceId sid1(1); | 191 SurfaceId sid1(1); |
191 base::TimeTicks late_deadline; | 192 base::TimeTicks late_deadline; |
192 | 193 |
193 // DrawAndSwap normally. | 194 // DrawAndSwap normally. |
194 BeginFrameForTest(); | 195 BeginFrameForTest(); |
195 EXPECT_LT(now_src().Now(), | 196 EXPECT_LT(now_src().NowTicks(), |
196 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 197 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
197 EXPECT_EQ(0, client_->draw_and_swap_count()); | 198 EXPECT_EQ(0, client_->draw_and_swap_count()); |
198 scheduler_->SurfaceDamaged(sid1); | 199 scheduler_->SurfaceDamaged(sid1); |
199 scheduler_->BeginFrameDeadlineForTest(); | 200 scheduler_->BeginFrameDeadlineForTest(); |
200 EXPECT_EQ(1, client_->draw_and_swap_count()); | 201 EXPECT_EQ(1, client_->draw_and_swap_count()); |
201 | 202 |
202 // Deadline triggers late while root resources are locked. | 203 // Deadline triggers late while root resources are locked. |
203 late_deadline = now_src().Now() + BeginFrameArgs::DefaultInterval(); | 204 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
204 BeginFrameForTest(); | 205 BeginFrameForTest(); |
205 scheduler_->SurfaceDamaged(sid1); | 206 scheduler_->SurfaceDamaged(sid1); |
206 EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 207 EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
207 scheduler_->SetRootSurfaceResourcesLocked(true); | 208 scheduler_->SetRootSurfaceResourcesLocked(true); |
208 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 209 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
209 | 210 |
210 // Deadline does not DrawAndSwap while root resources are locked. | 211 // Deadline does not DrawAndSwap while root resources are locked. |
211 EXPECT_EQ(1, client_->draw_and_swap_count()); | 212 EXPECT_EQ(1, client_->draw_and_swap_count()); |
212 scheduler_->SurfaceDamaged(sid1); | 213 scheduler_->SurfaceDamaged(sid1); |
213 scheduler_->BeginFrameDeadlineForTest(); | 214 scheduler_->BeginFrameDeadlineForTest(); |
214 EXPECT_EQ(1, client_->draw_and_swap_count()); | 215 EXPECT_EQ(1, client_->draw_and_swap_count()); |
215 | 216 |
216 // Deadline triggers normally when root resources are unlocked. | 217 // Deadline triggers normally when root resources are unlocked. |
217 late_deadline = now_src().Now() + BeginFrameArgs::DefaultInterval(); | 218 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
218 BeginFrameForTest(); | 219 BeginFrameForTest(); |
219 scheduler_->SurfaceDamaged(sid1); | 220 scheduler_->SurfaceDamaged(sid1); |
220 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 221 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
221 scheduler_->SetRootSurfaceResourcesLocked(false); | 222 scheduler_->SetRootSurfaceResourcesLocked(false); |
222 EXPECT_EQ(base::TimeTicks(), | 223 EXPECT_EQ(base::TimeTicks(), |
223 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 224 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
224 | 225 |
225 EXPECT_EQ(1, client_->draw_and_swap_count()); | 226 EXPECT_EQ(1, client_->draw_and_swap_count()); |
226 scheduler_->BeginFrameDeadlineForTest(); | 227 scheduler_->BeginFrameDeadlineForTest(); |
227 EXPECT_EQ(2, client_->draw_and_swap_count()); | 228 EXPECT_EQ(2, client_->draw_and_swap_count()); |
228 } | 229 } |
229 | 230 |
230 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { | 231 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { |
231 SurfaceId sid1(1); | 232 SurfaceId sid1(1); |
232 SurfaceId sid2(2); | 233 SurfaceId sid2(2); |
233 base::TimeTicks late_deadline; | 234 base::TimeTicks late_deadline; |
234 | 235 |
235 // Get scheduler to detect surface 1 and 2 as active. | 236 // Get scheduler to detect surface 1 and 2 as active. |
236 BeginFrameForTest(); | 237 BeginFrameForTest(); |
237 scheduler_->SurfaceDamaged(sid1); | 238 scheduler_->SurfaceDamaged(sid1); |
238 scheduler_->SurfaceDamaged(sid2); | 239 scheduler_->SurfaceDamaged(sid2); |
239 scheduler_->BeginFrameDeadlineForTest(); | 240 scheduler_->BeginFrameDeadlineForTest(); |
240 BeginFrameForTest(); | 241 BeginFrameForTest(); |
241 scheduler_->SurfaceDamaged(sid1); | 242 scheduler_->SurfaceDamaged(sid1); |
242 scheduler_->SurfaceDamaged(sid2); | 243 scheduler_->SurfaceDamaged(sid2); |
243 scheduler_->BeginFrameDeadlineForTest(); | 244 scheduler_->BeginFrameDeadlineForTest(); |
244 | 245 |
245 // DrawAndSwap normally. | 246 // DrawAndSwap normally. |
246 BeginFrameForTest(); | 247 BeginFrameForTest(); |
247 EXPECT_LT(now_src().Now(), | 248 EXPECT_LT(now_src().NowTicks(), |
248 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); | 249 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
249 EXPECT_EQ(2, client_->draw_and_swap_count()); | 250 EXPECT_EQ(2, client_->draw_and_swap_count()); |
250 scheduler_->SurfaceDamaged(sid1); | 251 scheduler_->SurfaceDamaged(sid1); |
251 scheduler_->SurfaceDamaged(sid2); | 252 scheduler_->SurfaceDamaged(sid2); |
252 scheduler_->BeginFrameDeadlineForTest(); | 253 scheduler_->BeginFrameDeadlineForTest(); |
253 EXPECT_EQ(3, client_->draw_and_swap_count()); | 254 EXPECT_EQ(3, client_->draw_and_swap_count()); |
254 scheduler_->DidSwapBuffers(); | 255 scheduler_->DidSwapBuffers(); |
255 | 256 |
256 // Deadline triggers early when swap throttled. | 257 // Deadline triggers early when swap throttled. |
257 BeginFrameForTest(); | 258 BeginFrameForTest(); |
258 // Damage surface 1, but not surface 2 so we avoid triggering deadline | 259 // Damage surface 1, but not surface 2 so we avoid triggering deadline |
259 // early because all surfaces are ready. | 260 // early because all surfaces are ready. |
260 scheduler_->SurfaceDamaged(sid1); | 261 scheduler_->SurfaceDamaged(sid1); |
261 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), | 262 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), |
262 base::TimeTicks()); | 263 base::TimeTicks()); |
263 | 264 |
264 // Don't draw and swap in deadline while swap throttled. | 265 // Don't draw and swap in deadline while swap throttled. |
265 EXPECT_EQ(3, client_->draw_and_swap_count()); | 266 EXPECT_EQ(3, client_->draw_and_swap_count()); |
266 scheduler_->BeginFrameDeadlineForTest(); | 267 scheduler_->BeginFrameDeadlineForTest(); |
267 EXPECT_EQ(3, client_->draw_and_swap_count()); | 268 EXPECT_EQ(3, client_->draw_and_swap_count()); |
268 | 269 |
269 // Deadline triggers normally once not swap throttled. | 270 // Deadline triggers normally once not swap throttled. |
270 // Damage from previous BeginFrame should cary over, so don't damage again. | 271 // Damage from previous BeginFrame should cary over, so don't damage again. |
271 late_deadline = now_src().Now() + BeginFrameArgs::DefaultInterval(); | 272 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
272 scheduler_->DidSwapBuffersComplete(); | 273 scheduler_->DidSwapBuffersComplete(); |
273 BeginFrameForTest(); | 274 BeginFrameForTest(); |
274 EXPECT_GT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), | 275 EXPECT_GT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), |
275 now_src().Now()); | 276 now_src().NowTicks()); |
276 EXPECT_LT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), late_deadline); | 277 EXPECT_LT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), late_deadline); |
277 // Still waiting for surface 2. Once it updates, deadline should trigger | 278 // Still waiting for surface 2. Once it updates, deadline should trigger |
278 // immediately again. | 279 // immediately again. |
279 scheduler_->SurfaceDamaged(sid2); | 280 scheduler_->SurfaceDamaged(sid2); |
280 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), | 281 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), |
281 base::TimeTicks()); | 282 base::TimeTicks()); |
282 // Draw and swap now that we aren't throttled. | 283 // Draw and swap now that we aren't throttled. |
283 EXPECT_EQ(3, client_->draw_and_swap_count()); | 284 EXPECT_EQ(3, client_->draw_and_swap_count()); |
284 scheduler_->BeginFrameDeadlineForTest(); | 285 scheduler_->BeginFrameDeadlineForTest(); |
285 EXPECT_EQ(4, client_->draw_and_swap_count()); | 286 EXPECT_EQ(4, client_->draw_and_swap_count()); |
(...skipping 26 matching lines...) Expand all Loading... | |
312 | 313 |
313 scheduler_->SetRootSurfaceResourcesLocked(true); | 314 scheduler_->SetRootSurfaceResourcesLocked(true); |
314 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); | 315 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); |
315 | 316 |
316 scheduler_->OutputSurfaceLost(); | 317 scheduler_->OutputSurfaceLost(); |
317 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); | 318 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); |
318 } | 319 } |
319 | 320 |
320 } // namespace | 321 } // namespace |
321 } // namespace cc | 322 } // namespace cc |
OLD | NEW |