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 "base/compiler_specific.h" | 5 #include "base/compiler_specific.h" |
6 #include "base/macros.h" | 6 #include "base/macros.h" |
7 #include "cc/test/fake_content_layer_client.h" | 7 #include "cc/test/fake_content_layer_client.h" |
8 #include "cc/test/fake_picture_layer.h" | 8 #include "cc/test/fake_picture_layer.h" |
9 #include "cc/test/layer_tree_test.h" | 9 #include "cc/test/layer_tree_test.h" |
10 #include "cc/trees/proxy_impl.h" | 10 #include "cc/trees/proxy_impl.h" |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 | 413 |
414 private: | 414 private: |
415 base::Lock activate_blocked_lock_; | 415 base::Lock activate_blocked_lock_; |
416 bool activate_blocked_ = false; | 416 bool activate_blocked_ = false; |
417 | 417 |
418 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestCommitWaitsForActivationMFBA); | 418 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestCommitWaitsForActivationMFBA); |
419 }; | 419 }; |
420 | 420 |
421 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestCommitWaitsForActivationMFBA); | 421 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestCommitWaitsForActivationMFBA); |
422 | 422 |
| 423 // Test for activation time passed in BeginFrameArgs. |
| 424 class LayerTreeHostProxyTestActivationTime : public LayerTreeHostProxyTest { |
| 425 protected: |
| 426 LayerTreeHostProxyTestActivationTime() = default; |
| 427 |
| 428 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 429 |
| 430 void InitializeSettings(LayerTreeSettings* settings) override { |
| 431 settings->main_frame_before_activation_enabled = true; |
| 432 LayerTreeHostProxyTest::InitializeSettings(settings); |
| 433 } |
| 434 |
| 435 void DidSendBeginMainFrameOnThread(LayerTreeHostImpl* impl) override { |
| 436 if (activate_blocked_) { |
| 437 impl->BlockNotifyReadyToActivateForTesting(false); |
| 438 { |
| 439 base::AutoLock hold(activate_blocked_lock_); |
| 440 activate_blocked_ = false; |
| 441 } |
| 442 } |
| 443 } |
| 444 |
| 445 void BeginMainFrame(const BeginFrameArgs& args) override { |
| 446 switch (args.source_frame_number) { |
| 447 case 0: |
| 448 // Initial frame, no activation yet. |
| 449 EXPECT_EQ(0UL, args.ready_to_activate_time.size()); |
| 450 break; |
| 451 case 1: |
| 452 // Frame #1, activation for Frame #0. |
| 453 EXPECT_EQ(1UL, args.ready_to_activate_time.size()); |
| 454 EXPECT_EQ(0UL, args.ready_to_activate_time[0].first); |
| 455 break; |
| 456 case 2: |
| 457 // Frame #2, activation is delayed in BeginCommitOnThread. |
| 458 EXPECT_EQ(0UL, args.ready_to_activate_time.size()); |
| 459 break; |
| 460 case 3: |
| 461 // Frame #3, received activation for Frame #1 & #2. |
| 462 EXPECT_EQ(2UL, args.ready_to_activate_time.size()); |
| 463 EXPECT_EQ(1UL, args.ready_to_activate_time[0].first); |
| 464 EXPECT_EQ(2UL, args.ready_to_activate_time[1].first); |
| 465 EndTest(); |
| 466 } |
| 467 } |
| 468 |
| 469 void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override { |
| 470 if (impl->sync_tree()->source_frame_number() == 0 || |
| 471 impl->sync_tree()->source_frame_number() == 2) |
| 472 PostSetNeedsCommitToMainThread(); // invoke for Frame #3 |
| 473 } |
| 474 |
| 475 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { |
| 476 // Block activation for Frame #1 |
| 477 if (impl->sync_tree()->source_frame_number() == 1) { |
| 478 impl->BlockNotifyReadyToActivateForTesting(true); |
| 479 PostSetNeedsCommitToMainThread(); |
| 480 { |
| 481 base::AutoLock hold(activate_blocked_lock_); |
| 482 activate_blocked_ = true; |
| 483 } |
| 484 } |
| 485 } |
| 486 |
| 487 void AfterTest() override {} |
| 488 |
| 489 private: |
| 490 base::Lock activate_blocked_lock_; |
| 491 bool activate_blocked_ = false; |
| 492 |
| 493 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestActivationTime); |
| 494 }; |
| 495 |
| 496 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestActivationTime); |
| 497 |
423 } // namespace cc | 498 } // namespace cc |
OLD | NEW |