OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "cc/layers/delegated_frame_provider.h" | 8 #include "cc/layers/delegated_frame_provider.h" |
9 #include "cc/layers/delegated_frame_resource_collection.h" | 9 #include "cc/layers/delegated_frame_resource_collection.h" |
10 #include "cc/layers/heads_up_display_layer.h" | 10 #include "cc/layers/heads_up_display_layer.h" |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 } | 375 } |
376 | 376 |
377 void DidInitializeOutputSurface() override { EXPECT_TRUE(false); } | 377 void DidInitializeOutputSurface() override { EXPECT_TRUE(false); } |
378 | 378 |
379 void AfterTest() override {} | 379 void AfterTest() override {} |
380 }; | 380 }; |
381 | 381 |
382 SINGLE_AND_MULTI_THREAD_TEST_F( | 382 SINGLE_AND_MULTI_THREAD_TEST_F( |
383 LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); | 383 LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); |
384 | 384 |
| 385 // This tests the OutputSurface release logic in the following sequence. |
| 386 // SetUp LTH and create and init OutputSurface |
| 387 // LTH::SetVisible(false); |
| 388 // LTH::ReleaseOutputSurface(); |
| 389 // ... |
| 390 // LTH::SetVisible(true); |
| 391 // Create and init new OutputSurface |
| 392 class LayerTreeHostClientTakeAwayOutputSurface |
| 393 : public LayerTreeHostContextTest { |
| 394 public: |
| 395 LayerTreeHostClientTakeAwayOutputSurface() |
| 396 : LayerTreeHostContextTest(), setos_counter_(0) {} |
| 397 |
| 398 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 399 |
| 400 void RequestNewOutputSurface() override { |
| 401 if (layer_tree_host()->visible()) |
| 402 CreateAndSetOutputSurface(); |
| 403 } |
| 404 |
| 405 void CreateAndSetOutputSurface() { |
| 406 scoped_ptr<OutputSurface> surface = |
| 407 LayerTreeHostContextTest::CreateOutputSurface(); |
| 408 CHECK(surface); |
| 409 setos_counter_++; |
| 410 layer_tree_host()->SetOutputSurface(surface.Pass()); |
| 411 } |
| 412 |
| 413 void HideAndReleaseOutputSurface() { |
| 414 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
| 415 layer_tree_host()->SetVisible(false); |
| 416 scoped_ptr<OutputSurface> surface = |
| 417 layer_tree_host()->ReleaseOutputSurface(); |
| 418 CHECK(surface); |
| 419 surface->context_provider()->DetachFromThread(); |
| 420 MainThreadTaskRunner()->PostTask( |
| 421 FROM_HERE, |
| 422 base::Bind(&LayerTreeHostClientTakeAwayOutputSurface::MakeVisible, |
| 423 base::Unretained(this))); |
| 424 } |
| 425 |
| 426 void DidInitializeOutputSurface() override { |
| 427 EXPECT_TRUE(layer_tree_host()->visible()); |
| 428 if (setos_counter_ == 1) { |
| 429 MainThreadTaskRunner()->PostTask( |
| 430 FROM_HERE, base::Bind(&LayerTreeHostClientTakeAwayOutputSurface:: |
| 431 HideAndReleaseOutputSurface, |
| 432 base::Unretained(this))); |
| 433 } else { |
| 434 EndTest(); |
| 435 } |
| 436 } |
| 437 |
| 438 void MakeVisible() { |
| 439 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
| 440 layer_tree_host()->SetVisible(true); |
| 441 } |
| 442 |
| 443 void AfterTest() override {} |
| 444 |
| 445 int setos_counter_; |
| 446 }; |
| 447 |
| 448 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostClientTakeAwayOutputSurface); |
| 449 |
385 class MultipleCompositeDoesNotCreateOutputSurface | 450 class MultipleCompositeDoesNotCreateOutputSurface |
386 : public LayerTreeHostContextTest { | 451 : public LayerTreeHostContextTest { |
387 public: | 452 public: |
388 MultipleCompositeDoesNotCreateOutputSurface() | 453 MultipleCompositeDoesNotCreateOutputSurface() |
389 : LayerTreeHostContextTest(), request_count_(0) {} | 454 : LayerTreeHostContextTest(), request_count_(0) {} |
390 | 455 |
391 void InitializeSettings(LayerTreeSettings* settings) override { | 456 void InitializeSettings(LayerTreeSettings* settings) override { |
392 settings->single_thread_proxy_scheduler = false; | 457 settings->single_thread_proxy_scheduler = false; |
393 settings->use_zero_copy = true; | 458 settings->use_zero_copy = true; |
394 } | 459 } |
(...skipping 1163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1558 void AfterTest() override {} | 1623 void AfterTest() override {} |
1559 | 1624 |
1560 bool deferred_; | 1625 bool deferred_; |
1561 }; | 1626 }; |
1562 | 1627 |
1563 SINGLE_AND_MULTI_THREAD_TEST_F( | 1628 SINGLE_AND_MULTI_THREAD_TEST_F( |
1564 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); | 1629 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); |
1565 | 1630 |
1566 } // namespace | 1631 } // namespace |
1567 } // namespace cc | 1632 } // namespace cc |
OLD | NEW |