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/test/simple_test_tick_clock.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 | 99 |
100 FakeExternalBeginFrameSource fake_begin_frame_source_; | 100 FakeExternalBeginFrameSource fake_begin_frame_source_; |
101 | 101 |
102 base::SimpleTestTickClock now_src_; | 102 base::SimpleTestTickClock now_src_; |
103 scoped_refptr<base::NullTaskRunner> task_runner_; | 103 scoped_refptr<base::NullTaskRunner> task_runner_; |
104 FakeDisplaySchedulerClient client_; | 104 FakeDisplaySchedulerClient client_; |
105 TestDisplayScheduler scheduler_; | 105 TestDisplayScheduler scheduler_; |
106 }; | 106 }; |
107 | 107 |
108 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { | 108 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { |
109 SurfaceId root_surface_id1(kArbitraryFrameSinkId, | 109 SurfaceId root_surface_id1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
110 LocalFrameId(1, base::UnguessableToken::Create())); | 110 SurfaceId root_surface_id2(kArbitraryFrameSinkId, LocalFrameId(2, 0)); |
111 SurfaceId root_surface_id2(kArbitraryFrameSinkId, | 111 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(3, 0)); |
112 LocalFrameId(2, base::UnguessableToken::Create())); | |
113 SurfaceId sid1(kArbitraryFrameSinkId, | |
114 LocalFrameId(3, base::UnguessableToken::Create())); | |
115 base::TimeTicks late_deadline; | 112 base::TimeTicks late_deadline; |
116 | 113 |
117 scheduler_.SetVisible(true); | 114 scheduler_.SetVisible(true); |
118 | 115 |
119 // Go trough an initial BeginFrame cycle with the root surface. | 116 // Go trough an initial BeginFrame cycle with the root surface. |
120 BeginFrameForTest(); | 117 BeginFrameForTest(); |
121 scheduler_.SetNewRootSurface(root_surface_id1); | 118 scheduler_.SetNewRootSurface(root_surface_id1); |
122 scheduler_.BeginFrameDeadlineForTest(); | 119 scheduler_.BeginFrameDeadlineForTest(); |
123 | 120 |
124 // Resize on the next begin frame cycle should cause the deadline to wait | 121 // Resize on the next begin frame cycle should cause the deadline to wait |
(...skipping 14 matching lines...) Expand all Loading... |
139 BeginFrameForTest(); | 136 BeginFrameForTest(); |
140 scheduler_.SurfaceDamaged(sid1); | 137 scheduler_.SurfaceDamaged(sid1); |
141 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 138 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
142 scheduler_.SurfaceDamaged(root_surface_id2); | 139 scheduler_.SurfaceDamaged(root_surface_id2); |
143 EXPECT_GE(now_src().NowTicks(), | 140 EXPECT_GE(now_src().NowTicks(), |
144 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 141 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
145 scheduler_.BeginFrameDeadlineForTest(); | 142 scheduler_.BeginFrameDeadlineForTest(); |
146 } | 143 } |
147 | 144 |
148 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilDamagedSurface) { | 145 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilDamagedSurface) { |
149 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 146 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
150 LocalFrameId(1, base::UnguessableToken::Create())); | 147 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(2, 0)); |
151 SurfaceId sid1(kArbitraryFrameSinkId, | |
152 LocalFrameId(2, base::UnguessableToken::Create())); | |
153 base::TimeTicks late_deadline; | 148 base::TimeTicks late_deadline; |
154 | 149 |
155 scheduler_.SetVisible(true); | 150 scheduler_.SetVisible(true); |
156 | 151 |
157 // Go trough an initial BeginFrame cycle with the root surface. | 152 // Go trough an initial BeginFrame cycle with the root surface. |
158 BeginFrameForTest(); | 153 BeginFrameForTest(); |
159 scheduler_.SetNewRootSurface(root_surface_id); | 154 scheduler_.SetNewRootSurface(root_surface_id); |
160 scheduler_.BeginFrameDeadlineForTest(); | 155 scheduler_.BeginFrameDeadlineForTest(); |
161 | 156 |
162 // Resize on the next begin frame cycle should cause the deadline to wait | 157 // Resize on the next begin frame cycle should cause the deadline to wait |
(...skipping 14 matching lines...) Expand all Loading... |
177 BeginFrameForTest(); | 172 BeginFrameForTest(); |
178 scheduler_.SurfaceDamaged(sid1); | 173 scheduler_.SurfaceDamaged(sid1); |
179 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 174 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
180 scheduler_.SurfaceDamaged(root_surface_id); | 175 scheduler_.SurfaceDamaged(root_surface_id); |
181 EXPECT_GE(now_src().NowTicks(), | 176 EXPECT_GE(now_src().NowTicks(), |
182 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 177 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
183 scheduler_.BeginFrameDeadlineForTest(); | 178 scheduler_.BeginFrameDeadlineForTest(); |
184 } | 179 } |
185 | 180 |
186 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { | 181 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { |
187 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 182 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
188 LocalFrameId(0, base::UnguessableToken::Create())); | 183 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
189 SurfaceId sid1(kArbitraryFrameSinkId, | 184 SurfaceId sid2(kArbitraryFrameSinkId, LocalFrameId(2, 0)); |
190 LocalFrameId(1, base::UnguessableToken::Create())); | |
191 SurfaceId sid2(kArbitraryFrameSinkId, | |
192 LocalFrameId(2, base::UnguessableToken::Create())); | |
193 | 185 |
194 scheduler_.SetVisible(true); | 186 scheduler_.SetVisible(true); |
195 | 187 |
196 // Set the root surface | 188 // Set the root surface |
197 scheduler_.SetNewRootSurface(root_surface_id); | 189 scheduler_.SetNewRootSurface(root_surface_id); |
198 | 190 |
199 // Get scheduler to detect surface 1 as active by drawing | 191 // Get scheduler to detect surface 1 as active by drawing |
200 // two frames in a row with damage from surface 1. | 192 // two frames in a row with damage from surface 1. |
201 BeginFrameForTest(); | 193 BeginFrameForTest(); |
202 scheduler_.SurfaceDamaged(sid1); | 194 scheduler_.SurfaceDamaged(sid1); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 BeginFrameForTest(); | 238 BeginFrameForTest(); |
247 EXPECT_LT(now_src().NowTicks(), | 239 EXPECT_LT(now_src().NowTicks(), |
248 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 240 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
249 scheduler_.SurfaceDamaged(root_surface_id); | 241 scheduler_.SurfaceDamaged(root_surface_id); |
250 EXPECT_GE(now_src().NowTicks(), | 242 EXPECT_GE(now_src().NowTicks(), |
251 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 243 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
252 scheduler_.BeginFrameDeadlineForTest(); | 244 scheduler_.BeginFrameDeadlineForTest(); |
253 } | 245 } |
254 | 246 |
255 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { | 247 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { |
256 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 248 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
257 LocalFrameId(0, base::UnguessableToken::Create())); | 249 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
258 SurfaceId sid1(kArbitraryFrameSinkId, | |
259 LocalFrameId(1, base::UnguessableToken::Create())); | |
260 | 250 |
261 scheduler_.SetVisible(true); | 251 scheduler_.SetVisible(true); |
262 | 252 |
263 // Set the root surface | 253 // Set the root surface |
264 scheduler_.SetNewRootSurface(root_surface_id); | 254 scheduler_.SetNewRootSurface(root_surface_id); |
265 | 255 |
266 // DrawAndSwap normally. | 256 // DrawAndSwap normally. |
267 BeginFrameForTest(); | 257 BeginFrameForTest(); |
268 EXPECT_LT(now_src().NowTicks(), | 258 EXPECT_LT(now_src().NowTicks(), |
269 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 259 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
(...skipping 11 matching lines...) Expand all Loading... |
281 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 271 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
282 | 272 |
283 // Deadline does not DrawAndSwap after OutputSurfaceLost. | 273 // Deadline does not DrawAndSwap after OutputSurfaceLost. |
284 EXPECT_EQ(1, client_.draw_and_swap_count()); | 274 EXPECT_EQ(1, client_.draw_and_swap_count()); |
285 scheduler_.SurfaceDamaged(sid1); | 275 scheduler_.SurfaceDamaged(sid1); |
286 scheduler_.BeginFrameDeadlineForTest(); | 276 scheduler_.BeginFrameDeadlineForTest(); |
287 EXPECT_EQ(1, client_.draw_and_swap_count()); | 277 EXPECT_EQ(1, client_.draw_and_swap_count()); |
288 } | 278 } |
289 | 279 |
290 TEST_F(DisplaySchedulerTest, VisibleWithoutDamageNoTicks) { | 280 TEST_F(DisplaySchedulerTest, VisibleWithoutDamageNoTicks) { |
291 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 281 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
292 LocalFrameId(0, base::UnguessableToken::Create())); | 282 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
293 SurfaceId sid1(kArbitraryFrameSinkId, | |
294 LocalFrameId(1, base::UnguessableToken::Create())); | |
295 | 283 |
296 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 284 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
297 scheduler_.SetVisible(true); | 285 scheduler_.SetVisible(true); |
298 | 286 |
299 // When becoming visible, don't start listening for begin frames until there | 287 // When becoming visible, don't start listening for begin frames until there |
300 // is some damage. | 288 // is some damage. |
301 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 289 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
302 scheduler_.SetNewRootSurface(root_surface_id); | 290 scheduler_.SetNewRootSurface(root_surface_id); |
303 | 291 |
304 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 292 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
305 } | 293 } |
306 | 294 |
307 TEST_F(DisplaySchedulerTest, VisibleWithDamageTicks) { | 295 TEST_F(DisplaySchedulerTest, VisibleWithDamageTicks) { |
308 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 296 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
309 LocalFrameId(0, base::UnguessableToken::Create())); | 297 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
310 SurfaceId sid1(kArbitraryFrameSinkId, | |
311 LocalFrameId(1, base::UnguessableToken::Create())); | |
312 | 298 |
313 scheduler_.SetNewRootSurface(root_surface_id); | 299 scheduler_.SetNewRootSurface(root_surface_id); |
314 | 300 |
315 // When there is damage, start listening for begin frames once becoming | 301 // When there is damage, start listening for begin frames once becoming |
316 // visible. | 302 // visible. |
317 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 303 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
318 scheduler_.SetVisible(true); | 304 scheduler_.SetVisible(true); |
319 | 305 |
320 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 306 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
321 } | 307 } |
322 | 308 |
323 TEST_F(DisplaySchedulerTest, Visibility) { | 309 TEST_F(DisplaySchedulerTest, Visibility) { |
324 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 310 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
325 LocalFrameId(0, base::UnguessableToken::Create())); | 311 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
326 SurfaceId sid1(kArbitraryFrameSinkId, | |
327 LocalFrameId(1, base::UnguessableToken::Create())); | |
328 | 312 |
329 scheduler_.SetNewRootSurface(root_surface_id); | 313 scheduler_.SetNewRootSurface(root_surface_id); |
330 scheduler_.SetVisible(true); | 314 scheduler_.SetVisible(true); |
331 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 315 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
332 | 316 |
333 // DrawAndSwap normally. | 317 // DrawAndSwap normally. |
334 BeginFrameForTest(); | 318 BeginFrameForTest(); |
335 EXPECT_LT(now_src().NowTicks(), | 319 EXPECT_LT(now_src().NowTicks(), |
336 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 320 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
337 EXPECT_EQ(0, client_.draw_and_swap_count()); | 321 EXPECT_EQ(0, client_.draw_and_swap_count()); |
(...skipping 27 matching lines...) Expand all Loading... |
365 // Does not start listening for begin frames when damage arrives. | 349 // Does not start listening for begin frames when damage arrives. |
366 scheduler_.SurfaceDamaged(sid1); | 350 scheduler_.SurfaceDamaged(sid1); |
367 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 351 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
368 | 352 |
369 // But does when becoming visible with damage again. | 353 // But does when becoming visible with damage again. |
370 scheduler_.SetVisible(true); | 354 scheduler_.SetVisible(true); |
371 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 355 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
372 } | 356 } |
373 | 357 |
374 TEST_F(DisplaySchedulerTest, ResizeCausesSwap) { | 358 TEST_F(DisplaySchedulerTest, ResizeCausesSwap) { |
375 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 359 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
376 LocalFrameId(0, base::UnguessableToken::Create())); | 360 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
377 SurfaceId sid1(kArbitraryFrameSinkId, | |
378 LocalFrameId(1, base::UnguessableToken::Create())); | |
379 | 361 |
380 scheduler_.SetVisible(true); | 362 scheduler_.SetVisible(true); |
381 | 363 |
382 // Set the root surface | 364 // Set the root surface |
383 scheduler_.SetNewRootSurface(root_surface_id); | 365 scheduler_.SetNewRootSurface(root_surface_id); |
384 | 366 |
385 // DrawAndSwap normally. | 367 // DrawAndSwap normally. |
386 BeginFrameForTest(); | 368 BeginFrameForTest(); |
387 EXPECT_LT(now_src().NowTicks(), | 369 EXPECT_LT(now_src().NowTicks(), |
388 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 370 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
389 EXPECT_EQ(0, client_.draw_and_swap_count()); | 371 EXPECT_EQ(0, client_.draw_and_swap_count()); |
390 scheduler_.SurfaceDamaged(sid1); | 372 scheduler_.SurfaceDamaged(sid1); |
391 scheduler_.BeginFrameDeadlineForTest(); | 373 scheduler_.BeginFrameDeadlineForTest(); |
392 EXPECT_EQ(1, client_.draw_and_swap_count()); | 374 EXPECT_EQ(1, client_.draw_and_swap_count()); |
393 | 375 |
394 scheduler_.DisplayResized(); | 376 scheduler_.DisplayResized(); |
395 BeginFrameForTest(); | 377 BeginFrameForTest(); |
396 // DisplayResized should trigger a swap to happen. | 378 // DisplayResized should trigger a swap to happen. |
397 scheduler_.BeginFrameDeadlineForTest(); | 379 scheduler_.BeginFrameDeadlineForTest(); |
398 EXPECT_EQ(2, client_.draw_and_swap_count()); | 380 EXPECT_EQ(2, client_.draw_and_swap_count()); |
399 } | 381 } |
400 | 382 |
401 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { | 383 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { |
402 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 384 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
403 LocalFrameId(0, base::UnguessableToken::Create())); | 385 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
404 SurfaceId sid1(kArbitraryFrameSinkId, | |
405 LocalFrameId(1, base::UnguessableToken::Create())); | |
406 base::TimeTicks late_deadline; | 386 base::TimeTicks late_deadline; |
407 | 387 |
408 scheduler_.SetVisible(true); | 388 scheduler_.SetVisible(true); |
409 | 389 |
410 // Set the root surface | 390 // Set the root surface |
411 scheduler_.SetNewRootSurface(root_surface_id); | 391 scheduler_.SetNewRootSurface(root_surface_id); |
412 | 392 |
413 // DrawAndSwap normally. | 393 // DrawAndSwap normally. |
414 BeginFrameForTest(); | 394 BeginFrameForTest(); |
415 EXPECT_LT(now_src().NowTicks(), | 395 EXPECT_LT(now_src().NowTicks(), |
(...skipping 26 matching lines...) Expand all Loading... |
442 scheduler_.SurfaceDamaged(root_surface_id); | 422 scheduler_.SurfaceDamaged(root_surface_id); |
443 EXPECT_EQ(base::TimeTicks(), | 423 EXPECT_EQ(base::TimeTicks(), |
444 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 424 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
445 | 425 |
446 EXPECT_EQ(1, client_.draw_and_swap_count()); | 426 EXPECT_EQ(1, client_.draw_and_swap_count()); |
447 scheduler_.BeginFrameDeadlineForTest(); | 427 scheduler_.BeginFrameDeadlineForTest(); |
448 EXPECT_EQ(2, client_.draw_and_swap_count()); | 428 EXPECT_EQ(2, client_.draw_and_swap_count()); |
449 } | 429 } |
450 | 430 |
451 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { | 431 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { |
452 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 432 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(0, 0)); |
453 LocalFrameId(0, base::UnguessableToken::Create())); | 433 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
454 SurfaceId sid1(kArbitraryFrameSinkId, | 434 SurfaceId sid2(kArbitraryFrameSinkId, LocalFrameId(2, 0)); |
455 LocalFrameId(1, base::UnguessableToken::Create())); | |
456 SurfaceId sid2(kArbitraryFrameSinkId, | |
457 LocalFrameId(2, base::UnguessableToken::Create())); | |
458 | 435 |
459 scheduler_.SetVisible(true); | 436 scheduler_.SetVisible(true); |
460 | 437 |
461 // Set the root surface | 438 // Set the root surface |
462 scheduler_.SetNewRootSurface(root_surface_id); | 439 scheduler_.SetNewRootSurface(root_surface_id); |
463 | 440 |
464 // Get scheduler to detect surface 1 and 2 as active. | 441 // Get scheduler to detect surface 1 and 2 as active. |
465 BeginFrameForTest(); | 442 BeginFrameForTest(); |
466 scheduler_.SurfaceDamaged(sid1); | 443 scheduler_.SurfaceDamaged(sid1); |
467 scheduler_.SurfaceDamaged(sid2); | 444 scheduler_.SurfaceDamaged(sid2); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 base::TimeTicks()); | 489 base::TimeTicks()); |
513 // Draw and swap now that we aren't throttled. | 490 // Draw and swap now that we aren't throttled. |
514 EXPECT_EQ(3, client_.draw_and_swap_count()); | 491 EXPECT_EQ(3, client_.draw_and_swap_count()); |
515 scheduler_.BeginFrameDeadlineForTest(); | 492 scheduler_.BeginFrameDeadlineForTest(); |
516 EXPECT_EQ(4, client_.draw_and_swap_count()); | 493 EXPECT_EQ(4, client_.draw_and_swap_count()); |
517 } | 494 } |
518 | 495 |
519 // This test verfies that we try to reschedule the deadline | 496 // This test verfies that we try to reschedule the deadline |
520 // after any event that may change what deadline we want. | 497 // after any event that may change what deadline we want. |
521 TEST_F(DisplaySchedulerTest, ScheduleBeginFrameDeadline) { | 498 TEST_F(DisplaySchedulerTest, ScheduleBeginFrameDeadline) { |
522 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 499 SurfaceId root_surface_id(kArbitraryFrameSinkId, LocalFrameId(1, 0)); |
523 LocalFrameId(1, base::UnguessableToken::Create())); | 500 SurfaceId sid1(kArbitraryFrameSinkId, LocalFrameId(2, 0)); |
524 SurfaceId sid1(kArbitraryFrameSinkId, | |
525 LocalFrameId(2, base::UnguessableToken::Create())); | |
526 int count = 1; | 501 int count = 1; |
527 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); | 502 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); |
528 | 503 |
529 scheduler_.SetVisible(true); | 504 scheduler_.SetVisible(true); |
530 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 505 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
531 | 506 |
532 scheduler_.SetVisible(true); | 507 scheduler_.SetVisible(true); |
533 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); | 508 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); |
534 | 509 |
535 scheduler_.SetVisible(false); | 510 scheduler_.SetVisible(false); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 | 543 |
569 scheduler_.SetRootSurfaceResourcesLocked(true); | 544 scheduler_.SetRootSurfaceResourcesLocked(true); |
570 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 545 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
571 | 546 |
572 scheduler_.OutputSurfaceLost(); | 547 scheduler_.OutputSurfaceLost(); |
573 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 548 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
574 } | 549 } |
575 | 550 |
576 } // namespace | 551 } // namespace |
577 } // namespace cc | 552 } // namespace cc |
OLD | NEW |