| 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" |
| 11 #include "cc/output/begin_frame_args.h" | 11 #include "cc/output/begin_frame_args.h" |
| 12 #include "cc/surfaces/display.h" | 12 #include "cc/surfaces/display.h" |
| 13 #include "cc/test/fake_external_begin_frame_source.h" | 13 #include "cc/test/fake_external_begin_frame_source.h" |
| 14 #include "cc/test/scheduler_test_common.h" | 14 #include "cc/test/scheduler_test_common.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 16 |
| 17 namespace cc { | 17 namespace cc { |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 const int kMaxPendingSwaps = 1; | 20 const int kMaxPendingSwaps = 1; |
| 21 | 21 |
| 22 static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1); |
| 23 |
| 22 class FakeDisplaySchedulerClient : public DisplaySchedulerClient { | 24 class FakeDisplaySchedulerClient : public DisplaySchedulerClient { |
| 23 public: | 25 public: |
| 24 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {} | 26 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {} |
| 25 | 27 |
| 26 ~FakeDisplaySchedulerClient() override {} | 28 ~FakeDisplaySchedulerClient() override {} |
| 27 | 29 |
| 28 bool DrawAndSwap() override { | 30 bool DrawAndSwap() override { |
| 29 draw_and_swap_count_++; | 31 draw_and_swap_count_++; |
| 30 return true; | 32 return true; |
| 31 } | 33 } |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 | 99 |
| 98 FakeExternalBeginFrameSource fake_begin_frame_source_; | 100 FakeExternalBeginFrameSource fake_begin_frame_source_; |
| 99 | 101 |
| 100 base::SimpleTestTickClock now_src_; | 102 base::SimpleTestTickClock now_src_; |
| 101 scoped_refptr<base::NullTaskRunner> task_runner_; | 103 scoped_refptr<base::NullTaskRunner> task_runner_; |
| 102 FakeDisplaySchedulerClient client_; | 104 FakeDisplaySchedulerClient client_; |
| 103 TestDisplayScheduler scheduler_; | 105 TestDisplayScheduler scheduler_; |
| 104 }; | 106 }; |
| 105 | 107 |
| 106 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { | 108 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { |
| 107 SurfaceId root_surface_id1(0, 1, 0); | 109 SurfaceId root_surface_id1(kArbitraryFrameSinkId, 1, 0); |
| 108 SurfaceId root_surface_id2(0, 2, 0); | 110 SurfaceId root_surface_id2(kArbitraryFrameSinkId, 2, 0); |
| 109 SurfaceId sid1(0, 3, 0); | 111 SurfaceId sid1(kArbitraryFrameSinkId, 3, 0); |
| 110 base::TimeTicks late_deadline; | 112 base::TimeTicks late_deadline; |
| 111 | 113 |
| 112 scheduler_.SetVisible(true); | 114 scheduler_.SetVisible(true); |
| 113 | 115 |
| 114 // Go trough an initial BeginFrame cycle with the root surface. | 116 // Go trough an initial BeginFrame cycle with the root surface. |
| 115 BeginFrameForTest(); | 117 BeginFrameForTest(); |
| 116 scheduler_.SetNewRootSurface(root_surface_id1); | 118 scheduler_.SetNewRootSurface(root_surface_id1); |
| 117 scheduler_.BeginFrameDeadlineForTest(); | 119 scheduler_.BeginFrameDeadlineForTest(); |
| 118 | 120 |
| 119 // 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... |
| 134 BeginFrameForTest(); | 136 BeginFrameForTest(); |
| 135 scheduler_.SurfaceDamaged(sid1); | 137 scheduler_.SurfaceDamaged(sid1); |
| 136 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 138 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 137 scheduler_.SurfaceDamaged(root_surface_id2); | 139 scheduler_.SurfaceDamaged(root_surface_id2); |
| 138 EXPECT_GE(now_src().NowTicks(), | 140 EXPECT_GE(now_src().NowTicks(), |
| 139 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 141 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 140 scheduler_.BeginFrameDeadlineForTest(); | 142 scheduler_.BeginFrameDeadlineForTest(); |
| 141 } | 143 } |
| 142 | 144 |
| 143 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilDamagedSurface) { | 145 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilDamagedSurface) { |
| 144 SurfaceId root_surface_id(0, 1, 0); | 146 SurfaceId root_surface_id(kArbitraryFrameSinkId, 1, 0); |
| 145 SurfaceId sid1(0, 2, 0); | 147 SurfaceId sid1(kArbitraryFrameSinkId, 2, 0); |
| 146 base::TimeTicks late_deadline; | 148 base::TimeTicks late_deadline; |
| 147 | 149 |
| 148 scheduler_.SetVisible(true); | 150 scheduler_.SetVisible(true); |
| 149 | 151 |
| 150 // Go trough an initial BeginFrame cycle with the root surface. | 152 // Go trough an initial BeginFrame cycle with the root surface. |
| 151 BeginFrameForTest(); | 153 BeginFrameForTest(); |
| 152 scheduler_.SetNewRootSurface(root_surface_id); | 154 scheduler_.SetNewRootSurface(root_surface_id); |
| 153 scheduler_.BeginFrameDeadlineForTest(); | 155 scheduler_.BeginFrameDeadlineForTest(); |
| 154 | 156 |
| 155 // 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... |
| 170 BeginFrameForTest(); | 172 BeginFrameForTest(); |
| 171 scheduler_.SurfaceDamaged(sid1); | 173 scheduler_.SurfaceDamaged(sid1); |
| 172 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 174 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 173 scheduler_.SurfaceDamaged(root_surface_id); | 175 scheduler_.SurfaceDamaged(root_surface_id); |
| 174 EXPECT_GE(now_src().NowTicks(), | 176 EXPECT_GE(now_src().NowTicks(), |
| 175 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 177 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 176 scheduler_.BeginFrameDeadlineForTest(); | 178 scheduler_.BeginFrameDeadlineForTest(); |
| 177 } | 179 } |
| 178 | 180 |
| 179 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { | 181 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { |
| 180 SurfaceId root_surface_id(0, 0, 0); | 182 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 181 SurfaceId sid1(0, 1, 0); | 183 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 182 SurfaceId sid2(0, 2, 0); | 184 SurfaceId sid2(kArbitraryFrameSinkId, 2, 0); |
| 183 | 185 |
| 184 scheduler_.SetVisible(true); | 186 scheduler_.SetVisible(true); |
| 185 | 187 |
| 186 // Set the root surface | 188 // Set the root surface |
| 187 scheduler_.SetNewRootSurface(root_surface_id); | 189 scheduler_.SetNewRootSurface(root_surface_id); |
| 188 | 190 |
| 189 // Get scheduler to detect surface 1 as active by drawing | 191 // Get scheduler to detect surface 1 as active by drawing |
| 190 // two frames in a row with damage from surface 1. | 192 // two frames in a row with damage from surface 1. |
| 191 BeginFrameForTest(); | 193 BeginFrameForTest(); |
| 192 scheduler_.SurfaceDamaged(sid1); | 194 scheduler_.SurfaceDamaged(sid1); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 BeginFrameForTest(); | 238 BeginFrameForTest(); |
| 237 EXPECT_LT(now_src().NowTicks(), | 239 EXPECT_LT(now_src().NowTicks(), |
| 238 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 240 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 239 scheduler_.SurfaceDamaged(root_surface_id); | 241 scheduler_.SurfaceDamaged(root_surface_id); |
| 240 EXPECT_GE(now_src().NowTicks(), | 242 EXPECT_GE(now_src().NowTicks(), |
| 241 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 243 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 242 scheduler_.BeginFrameDeadlineForTest(); | 244 scheduler_.BeginFrameDeadlineForTest(); |
| 243 } | 245 } |
| 244 | 246 |
| 245 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { | 247 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { |
| 246 SurfaceId root_surface_id(0, 0, 0); | 248 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 247 SurfaceId sid1(0, 1, 0); | 249 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 248 | 250 |
| 249 scheduler_.SetVisible(true); | 251 scheduler_.SetVisible(true); |
| 250 | 252 |
| 251 // Set the root surface | 253 // Set the root surface |
| 252 scheduler_.SetNewRootSurface(root_surface_id); | 254 scheduler_.SetNewRootSurface(root_surface_id); |
| 253 | 255 |
| 254 // DrawAndSwap normally. | 256 // DrawAndSwap normally. |
| 255 BeginFrameForTest(); | 257 BeginFrameForTest(); |
| 256 EXPECT_LT(now_src().NowTicks(), | 258 EXPECT_LT(now_src().NowTicks(), |
| 257 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 259 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 269 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 271 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 270 | 272 |
| 271 // Deadline does not DrawAndSwap after OutputSurfaceLost. | 273 // Deadline does not DrawAndSwap after OutputSurfaceLost. |
| 272 EXPECT_EQ(1, client_.draw_and_swap_count()); | 274 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 273 scheduler_.SurfaceDamaged(sid1); | 275 scheduler_.SurfaceDamaged(sid1); |
| 274 scheduler_.BeginFrameDeadlineForTest(); | 276 scheduler_.BeginFrameDeadlineForTest(); |
| 275 EXPECT_EQ(1, client_.draw_and_swap_count()); | 277 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 276 } | 278 } |
| 277 | 279 |
| 278 TEST_F(DisplaySchedulerTest, VisibleWithoutDamageNoTicks) { | 280 TEST_F(DisplaySchedulerTest, VisibleWithoutDamageNoTicks) { |
| 279 SurfaceId root_surface_id(0, 0, 0); | 281 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 280 SurfaceId sid1(0, 1, 0); | 282 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 281 | 283 |
| 282 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 284 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
| 283 scheduler_.SetVisible(true); | 285 scheduler_.SetVisible(true); |
| 284 | 286 |
| 285 // 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 |
| 286 // is some damage. | 288 // is some damage. |
| 287 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 289 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
| 288 scheduler_.SetNewRootSurface(root_surface_id); | 290 scheduler_.SetNewRootSurface(root_surface_id); |
| 289 | 291 |
| 290 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 292 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
| 291 } | 293 } |
| 292 | 294 |
| 293 TEST_F(DisplaySchedulerTest, VisibleWithDamageTicks) { | 295 TEST_F(DisplaySchedulerTest, VisibleWithDamageTicks) { |
| 294 SurfaceId root_surface_id(0, 0, 0); | 296 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 295 SurfaceId sid1(0, 1, 0); | 297 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 296 | 298 |
| 297 scheduler_.SetNewRootSurface(root_surface_id); | 299 scheduler_.SetNewRootSurface(root_surface_id); |
| 298 | 300 |
| 299 // When there is damage, start listening for begin frames once becoming | 301 // When there is damage, start listening for begin frames once becoming |
| 300 // visible. | 302 // visible. |
| 301 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 303 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
| 302 scheduler_.SetVisible(true); | 304 scheduler_.SetVisible(true); |
| 303 | 305 |
| 304 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 306 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
| 305 } | 307 } |
| 306 | 308 |
| 307 TEST_F(DisplaySchedulerTest, Visibility) { | 309 TEST_F(DisplaySchedulerTest, Visibility) { |
| 308 SurfaceId root_surface_id(0, 0, 0); | 310 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 309 SurfaceId sid1(0, 1, 0); | 311 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 310 | 312 |
| 311 scheduler_.SetNewRootSurface(root_surface_id); | 313 scheduler_.SetNewRootSurface(root_surface_id); |
| 312 scheduler_.SetVisible(true); | 314 scheduler_.SetVisible(true); |
| 313 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 315 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
| 314 | 316 |
| 315 // DrawAndSwap normally. | 317 // DrawAndSwap normally. |
| 316 BeginFrameForTest(); | 318 BeginFrameForTest(); |
| 317 EXPECT_LT(now_src().NowTicks(), | 319 EXPECT_LT(now_src().NowTicks(), |
| 318 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 320 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 319 EXPECT_EQ(0, client_.draw_and_swap_count()); | 321 EXPECT_EQ(0, client_.draw_and_swap_count()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 347 // Does not start listening for begin frames when damage arrives. | 349 // Does not start listening for begin frames when damage arrives. |
| 348 scheduler_.SurfaceDamaged(sid1); | 350 scheduler_.SurfaceDamaged(sid1); |
| 349 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | 351 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); |
| 350 | 352 |
| 351 // But does when becoming visible with damage again. | 353 // But does when becoming visible with damage again. |
| 352 scheduler_.SetVisible(true); | 354 scheduler_.SetVisible(true); |
| 353 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | 355 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); |
| 354 } | 356 } |
| 355 | 357 |
| 356 TEST_F(DisplaySchedulerTest, ResizeCausesSwap) { | 358 TEST_F(DisplaySchedulerTest, ResizeCausesSwap) { |
| 357 SurfaceId root_surface_id(0, 0, 0); | 359 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 358 SurfaceId sid1(0, 1, 0); | 360 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 359 | 361 |
| 360 scheduler_.SetVisible(true); | 362 scheduler_.SetVisible(true); |
| 361 | 363 |
| 362 // Set the root surface | 364 // Set the root surface |
| 363 scheduler_.SetNewRootSurface(root_surface_id); | 365 scheduler_.SetNewRootSurface(root_surface_id); |
| 364 | 366 |
| 365 // DrawAndSwap normally. | 367 // DrawAndSwap normally. |
| 366 BeginFrameForTest(); | 368 BeginFrameForTest(); |
| 367 EXPECT_LT(now_src().NowTicks(), | 369 EXPECT_LT(now_src().NowTicks(), |
| 368 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 370 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 369 EXPECT_EQ(0, client_.draw_and_swap_count()); | 371 EXPECT_EQ(0, client_.draw_and_swap_count()); |
| 370 scheduler_.SurfaceDamaged(sid1); | 372 scheduler_.SurfaceDamaged(sid1); |
| 371 scheduler_.BeginFrameDeadlineForTest(); | 373 scheduler_.BeginFrameDeadlineForTest(); |
| 372 EXPECT_EQ(1, client_.draw_and_swap_count()); | 374 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 373 | 375 |
| 374 scheduler_.DisplayResized(); | 376 scheduler_.DisplayResized(); |
| 375 BeginFrameForTest(); | 377 BeginFrameForTest(); |
| 376 // DisplayResized should trigger a swap to happen. | 378 // DisplayResized should trigger a swap to happen. |
| 377 scheduler_.BeginFrameDeadlineForTest(); | 379 scheduler_.BeginFrameDeadlineForTest(); |
| 378 EXPECT_EQ(2, client_.draw_and_swap_count()); | 380 EXPECT_EQ(2, client_.draw_and_swap_count()); |
| 379 } | 381 } |
| 380 | 382 |
| 381 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { | 383 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { |
| 382 SurfaceId root_surface_id(0, 0, 0); | 384 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 383 SurfaceId sid1(0, 1, 0); | 385 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 384 base::TimeTicks late_deadline; | 386 base::TimeTicks late_deadline; |
| 385 | 387 |
| 386 scheduler_.SetVisible(true); | 388 scheduler_.SetVisible(true); |
| 387 | 389 |
| 388 // Set the root surface | 390 // Set the root surface |
| 389 scheduler_.SetNewRootSurface(root_surface_id); | 391 scheduler_.SetNewRootSurface(root_surface_id); |
| 390 | 392 |
| 391 // DrawAndSwap normally. | 393 // DrawAndSwap normally. |
| 392 BeginFrameForTest(); | 394 BeginFrameForTest(); |
| 393 EXPECT_LT(now_src().NowTicks(), | 395 EXPECT_LT(now_src().NowTicks(), |
| (...skipping 26 matching lines...) Expand all Loading... |
| 420 scheduler_.SurfaceDamaged(root_surface_id); | 422 scheduler_.SurfaceDamaged(root_surface_id); |
| 421 EXPECT_EQ(base::TimeTicks(), | 423 EXPECT_EQ(base::TimeTicks(), |
| 422 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 424 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 423 | 425 |
| 424 EXPECT_EQ(1, client_.draw_and_swap_count()); | 426 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 425 scheduler_.BeginFrameDeadlineForTest(); | 427 scheduler_.BeginFrameDeadlineForTest(); |
| 426 EXPECT_EQ(2, client_.draw_and_swap_count()); | 428 EXPECT_EQ(2, client_.draw_and_swap_count()); |
| 427 } | 429 } |
| 428 | 430 |
| 429 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { | 431 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { |
| 430 SurfaceId root_surface_id(0, 0, 0); | 432 SurfaceId root_surface_id(kArbitraryFrameSinkId, 0, 0); |
| 431 SurfaceId sid1(0, 1, 0); | 433 SurfaceId sid1(kArbitraryFrameSinkId, 1, 0); |
| 432 SurfaceId sid2(0, 2, 0); | 434 SurfaceId sid2(kArbitraryFrameSinkId, 2, 0); |
| 433 | 435 |
| 434 scheduler_.SetVisible(true); | 436 scheduler_.SetVisible(true); |
| 435 | 437 |
| 436 // Set the root surface | 438 // Set the root surface |
| 437 scheduler_.SetNewRootSurface(root_surface_id); | 439 scheduler_.SetNewRootSurface(root_surface_id); |
| 438 | 440 |
| 439 // Get scheduler to detect surface 1 and 2 as active. | 441 // Get scheduler to detect surface 1 and 2 as active. |
| 440 BeginFrameForTest(); | 442 BeginFrameForTest(); |
| 441 scheduler_.SurfaceDamaged(sid1); | 443 scheduler_.SurfaceDamaged(sid1); |
| 442 scheduler_.SurfaceDamaged(sid2); | 444 scheduler_.SurfaceDamaged(sid2); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 base::TimeTicks()); | 489 base::TimeTicks()); |
| 488 // Draw and swap now that we aren't throttled. | 490 // Draw and swap now that we aren't throttled. |
| 489 EXPECT_EQ(3, client_.draw_and_swap_count()); | 491 EXPECT_EQ(3, client_.draw_and_swap_count()); |
| 490 scheduler_.BeginFrameDeadlineForTest(); | 492 scheduler_.BeginFrameDeadlineForTest(); |
| 491 EXPECT_EQ(4, client_.draw_and_swap_count()); | 493 EXPECT_EQ(4, client_.draw_and_swap_count()); |
| 492 } | 494 } |
| 493 | 495 |
| 494 // This test verfies that we try to reschedule the deadline | 496 // This test verfies that we try to reschedule the deadline |
| 495 // after any event that may change what deadline we want. | 497 // after any event that may change what deadline we want. |
| 496 TEST_F(DisplaySchedulerTest, ScheduleBeginFrameDeadline) { | 498 TEST_F(DisplaySchedulerTest, ScheduleBeginFrameDeadline) { |
| 497 SurfaceId root_surface_id(0, 1, 0); | 499 SurfaceId root_surface_id(kArbitraryFrameSinkId, 1, 0); |
| 498 SurfaceId sid1(0, 2, 0); | 500 SurfaceId sid1(kArbitraryFrameSinkId, 2, 0); |
| 499 int count = 1; | 501 int count = 1; |
| 500 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); | 502 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); |
| 501 | 503 |
| 502 scheduler_.SetVisible(true); | 504 scheduler_.SetVisible(true); |
| 503 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 505 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
| 504 | 506 |
| 505 scheduler_.SetVisible(true); | 507 scheduler_.SetVisible(true); |
| 506 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); | 508 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); |
| 507 | 509 |
| 508 scheduler_.SetVisible(false); | 510 scheduler_.SetVisible(false); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 | 543 |
| 542 scheduler_.SetRootSurfaceResourcesLocked(true); | 544 scheduler_.SetRootSurfaceResourcesLocked(true); |
| 543 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 545 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
| 544 | 546 |
| 545 scheduler_.OutputSurfaceLost(); | 547 scheduler_.OutputSurfaceLost(); |
| 546 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 548 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
| 547 } | 549 } |
| 548 | 550 |
| 549 } // namespace | 551 } // namespace |
| 550 } // namespace cc | 552 } // namespace cc |
| OLD | NEW |