Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: cc/trees/layer_tree_host_unittest_context.cc

Issue 475633008: cc: Use impl-side painting in LTH context lost tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove extra add_draw_rect Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/content_layer.h" 8 #include "cc/layers/content_layer.h"
9 #include "cc/layers/delegated_frame_provider.h" 9 #include "cc/layers/delegated_frame_provider.h"
10 #include "cc/layers/delegated_frame_resource_collection.h" 10 #include "cc/layers/delegated_frame_resource_collection.h"
(...skipping 10 matching lines...) Expand all
21 #include "cc/resources/single_release_callback.h" 21 #include "cc/resources/single_release_callback.h"
22 #include "cc/test/fake_content_layer.h" 22 #include "cc/test/fake_content_layer.h"
23 #include "cc/test/fake_content_layer_client.h" 23 #include "cc/test/fake_content_layer_client.h"
24 #include "cc/test/fake_content_layer_impl.h" 24 #include "cc/test/fake_content_layer_impl.h"
25 #include "cc/test/fake_delegated_renderer_layer.h" 25 #include "cc/test/fake_delegated_renderer_layer.h"
26 #include "cc/test/fake_delegated_renderer_layer_impl.h" 26 #include "cc/test/fake_delegated_renderer_layer_impl.h"
27 #include "cc/test/fake_layer_tree_host_client.h" 27 #include "cc/test/fake_layer_tree_host_client.h"
28 #include "cc/test/fake_output_surface.h" 28 #include "cc/test/fake_output_surface.h"
29 #include "cc/test/fake_output_surface_client.h" 29 #include "cc/test/fake_output_surface_client.h"
30 #include "cc/test/fake_painted_scrollbar_layer.h" 30 #include "cc/test/fake_painted_scrollbar_layer.h"
31 #include "cc/test/fake_picture_layer.h"
32 #include "cc/test/fake_picture_layer_impl.h"
31 #include "cc/test/fake_scoped_ui_resource.h" 33 #include "cc/test/fake_scoped_ui_resource.h"
32 #include "cc/test/fake_scrollbar.h" 34 #include "cc/test/fake_scrollbar.h"
33 #include "cc/test/fake_video_frame_provider.h" 35 #include "cc/test/fake_video_frame_provider.h"
34 #include "cc/test/layer_tree_test.h" 36 #include "cc/test/layer_tree_test.h"
35 #include "cc/test/render_pass_test_common.h" 37 #include "cc/test/render_pass_test_common.h"
36 #include "cc/test/test_context_provider.h" 38 #include "cc/test/test_context_provider.h"
37 #include "cc/test/test_shared_bitmap_manager.h" 39 #include "cc/test/test_shared_bitmap_manager.h"
38 #include "cc/test/test_web_graphics_context_3d.h" 40 #include "cc/test/test_web_graphics_context_3d.h"
39 #include "cc/trees/layer_tree_host_impl.h" 41 #include "cc/trees/layer_tree_host_impl.h"
40 #include "cc/trees/layer_tree_impl.h" 42 #include "cc/trees/layer_tree_impl.h"
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); 318 LayerTreeHostClientNotReadyDoesNotCreateOutputSurface);
317 319
318 class LayerTreeHostContextTestLostContextSucceedsWithContent 320 class LayerTreeHostContextTestLostContextSucceedsWithContent
319 : public LayerTreeHostContextTestLostContextSucceeds { 321 : public LayerTreeHostContextTestLostContextSucceeds {
320 public: 322 public:
321 virtual void SetupTree() OVERRIDE { 323 virtual void SetupTree() OVERRIDE {
322 root_ = Layer::Create(); 324 root_ = Layer::Create();
323 root_->SetBounds(gfx::Size(10, 10)); 325 root_->SetBounds(gfx::Size(10, 10));
324 root_->SetIsDrawable(true); 326 root_->SetIsDrawable(true);
325 327
326 content_ = FakeContentLayer::Create(&client_); 328 // Paint non-solid color.
327 content_->SetBounds(gfx::Size(10, 10)); 329 SkPaint paint;
328 content_->SetIsDrawable(true); 330 paint.setColor(SkColorSetARGB(100, 80, 200, 200));
331 client_.add_draw_rect(gfx::Rect(0, 0, 5, 5), paint);
329 332
330 root_->AddChild(content_); 333 if (layer_tree_host()->settings().impl_side_painting)
334 layer_ = FakePictureLayer::Create(&client_);
335 else
336 layer_ = FakeContentLayer::Create(&client_);
337 layer_->SetBounds(gfx::Size(10, 10));
338 layer_->SetIsDrawable(true);
339
340 root_->AddChild(layer_);
331 341
332 layer_tree_host()->SetRootLayer(root_); 342 layer_tree_host()->SetRootLayer(root_);
333 LayerTreeHostContextTest::SetupTree(); 343 LayerTreeHostContextTest::SetupTree();
334 } 344 }
335 345
336 virtual void InvalidateAndSetNeedsCommit() OVERRIDE { 346 virtual void InvalidateAndSetNeedsCommit() OVERRIDE {
337 // Invalidate the render surface so we don't try to use a cached copy of the 347 // Invalidate the render surface so we don't try to use a cached copy of the
338 // surface. We want to make sure to test the drawing paths for drawing to 348 // surface. We want to make sure to test the drawing paths for drawing to
339 // a child surface. 349 // a child surface.
340 content_->SetNeedsDisplay(); 350 layer_->SetNeedsDisplay();
341 LayerTreeHostContextTestLostContextSucceeds::InvalidateAndSetNeedsCommit(); 351 LayerTreeHostContextTestLostContextSucceeds::InvalidateAndSetNeedsCommit();
342 } 352 }
343 353
344 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 354 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
345 FakeContentLayerImpl* content_impl = static_cast<FakeContentLayerImpl*>( 355 if (!host_impl->settings().impl_side_painting) {
346 host_impl->active_tree()->root_layer()->children()[0]); 356 FakeContentLayerImpl* content_impl = static_cast<FakeContentLayerImpl*>(
347 // Even though the context was lost, we should have a resource. The 357 host_impl->active_tree()->root_layer()->children()[0]);
348 // TestWebGraphicsContext3D ensures that this resource is created with 358 // Even though the context was lost, we should have a resource. The
349 // the active context. 359 // TestWebGraphicsContext3D ensures that this resource is created with
350 EXPECT_TRUE(content_impl->HaveResourceForTileAt(0, 0)); 360 // the active context.
361 EXPECT_TRUE(content_impl->HaveResourceForTileAt(0, 0));
362 } else {
363 FakePictureLayerImpl* picture_impl = static_cast<FakePictureLayerImpl*>(
364 host_impl->active_tree()->root_layer()->children()[0]);
365 EXPECT_TRUE(picture_impl->HighResTiling()->TileAt(0, 0)->IsReadyToDraw());
366 }
351 } 367 }
352 368
353 protected: 369 protected:
354 FakeContentLayerClient client_; 370 FakeContentLayerClient client_;
355 scoped_refptr<Layer> root_; 371 scoped_refptr<Layer> root_;
356 scoped_refptr<ContentLayer> content_; 372 scoped_refptr<Layer> layer_;
357 }; 373 };
358 374
359 // This test uses TiledLayer to check for a working context. 375 // This test uses TiledLayer and PictureLayer to check for a working context.
360 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F( 376 SINGLE_AND_MULTI_THREAD_TEST_F(
361 LayerTreeHostContextTestLostContextSucceedsWithContent); 377 LayerTreeHostContextTestLostContextSucceedsWithContent);
362 378
363 class LayerTreeHostContextTestCreateOutputSurfaceFails 379 class LayerTreeHostContextTestCreateOutputSurfaceFails
364 : public LayerTreeHostContextTest { 380 : public LayerTreeHostContextTest {
365 public: 381 public:
366 // Run a test that initially fails OutputSurface creation |times_to_fail| 382 // Run a test that initially fails OutputSurface creation |times_to_fail|
367 // times. If |expect_fallback_attempt| is |true|, an attempt to create a 383 // times. If |expect_fallback_attempt| is |true|, an attempt to create a
368 // fallback/software OutputSurface is expected to occur. 384 // fallback/software OutputSurface is expected to occur.
369 LayerTreeHostContextTestCreateOutputSurfaceFails(int times_to_fail, 385 LayerTreeHostContextTestCreateOutputSurfaceFails(int times_to_fail,
370 bool expect_fallback_attempt) 386 bool expect_fallback_attempt)
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 }; 446 };
431 447
432 SINGLE_AND_MULTI_THREAD_TEST_F( 448 SINGLE_AND_MULTI_THREAD_TEST_F(
433 LayerTreeHostContextTestCreateOutputSurfaceFailsWithFallback); 449 LayerTreeHostContextTestCreateOutputSurfaceFailsWithFallback);
434 450
435 class LayerTreeHostContextTestLostContextAndEvictTextures 451 class LayerTreeHostContextTestLostContextAndEvictTextures
436 : public LayerTreeHostContextTest { 452 : public LayerTreeHostContextTest {
437 public: 453 public:
438 LayerTreeHostContextTestLostContextAndEvictTextures() 454 LayerTreeHostContextTestLostContextAndEvictTextures()
439 : LayerTreeHostContextTest(), 455 : LayerTreeHostContextTest(),
440 layer_(FakeContentLayer::Create(&client_)),
441 impl_host_(0), 456 impl_host_(0),
442 num_commits_(0) {} 457 num_commits_(0) {}
443 458
444 virtual void SetupTree() OVERRIDE { 459 virtual void SetupTree() OVERRIDE {
445 layer_->SetBounds(gfx::Size(10, 20)); 460 if (layer_tree_host()->settings().impl_side_painting) {
446 layer_tree_host()->SetRootLayer(layer_); 461 picture_layer_ = FakePictureLayer::Create(&client_);
462 picture_layer_->SetBounds(gfx::Size(10, 20));
463 layer_tree_host()->SetRootLayer(picture_layer_);
464 } else {
465 content_layer_ = FakeContentLayer::Create(&client_);
466 content_layer_->SetBounds(gfx::Size(10, 20));
467 layer_tree_host()->SetRootLayer(content_layer_);
468 }
469
447 LayerTreeHostContextTest::SetupTree(); 470 LayerTreeHostContextTest::SetupTree();
448 } 471 }
449 472
450 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 473 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
451 474
452 void PostEvictTextures() { 475 void PostEvictTextures() {
453 if (HasImplThread()) { 476 if (HasImplThread()) {
454 ImplThreadTaskRunner()->PostTask( 477 ImplThreadTaskRunner()->PostTask(
455 FROM_HERE, 478 FROM_HERE,
456 base::Bind(&LayerTreeHostContextTestLostContextAndEvictTextures:: 479 base::Bind(&LayerTreeHostContextTestLostContextAndEvictTextures::
457 EvictTexturesOnImplThread, 480 EvictTexturesOnImplThread,
458 base::Unretained(this))); 481 base::Unretained(this)));
459 } else { 482 } else {
460 DebugScopedSetImplThread impl(proxy()); 483 DebugScopedSetImplThread impl(proxy());
461 EvictTexturesOnImplThread(); 484 EvictTexturesOnImplThread();
462 } 485 }
463 } 486 }
464 487
465 void EvictTexturesOnImplThread() { 488 void EvictTexturesOnImplThread() {
466 impl_host_->EvictTexturesForTesting(); 489 impl_host_->EvictTexturesForTesting();
490 if (impl_host_->settings().impl_side_painting) {
491 FakePictureLayerImpl* picture_impl = static_cast<FakePictureLayerImpl*>(
492 impl_host_->active_tree()->root_layer()->children()[0]);
493 EXPECT_FALSE(
494 picture_impl->HighResTiling()->TileAt(0, 0)->IsReadyToDraw());
495 }
467 if (lose_after_evict_) 496 if (lose_after_evict_)
468 LoseContext(); 497 LoseContext();
469 } 498 }
470 499
471 virtual void DidCommitAndDrawFrame() OVERRIDE { 500 virtual void DidCommitAndDrawFrame() OVERRIDE {
472 if (num_commits_ > 1) 501 if (num_commits_ > 1)
473 return; 502 return;
474 EXPECT_TRUE(layer_->HaveBackingAt(0, 0)); 503 if (!layer_tree_host()->settings().impl_side_painting) {
504 EXPECT_TRUE(content_layer_->HaveBackingAt(0, 0));
505 }
475 PostEvictTextures(); 506 PostEvictTextures();
476 } 507 }
477 508
478 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { 509 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
479 LayerTreeHostContextTest::CommitCompleteOnThread(impl); 510 if (impl->settings().impl_side_painting) {
480 if (num_commits_ > 1) 511 FakePictureLayerImpl* picture_impl = static_cast<FakePictureLayerImpl*>(
481 return; 512 impl->active_tree()->root_layer()->children()[0]);
482 ++num_commits_; 513 EXPECT_TRUE(picture_impl->HighResTiling()->TileAt(0, 0)->IsReadyToDraw());
483 if (!lose_after_evict_) 514 }
484 LoseContext(); 515
485 impl_host_ = impl; 516 impl_host_ = impl;
486 } 517 }
487 518
488 virtual void DidInitializeOutputSurface() OVERRIDE { EndTest(); } 519 virtual void DidInitializeOutputSurface() OVERRIDE { EndTest(); }
489 520
490 virtual void AfterTest() OVERRIDE {} 521 virtual void AfterTest() OVERRIDE {}
491 522
492 protected: 523 protected:
493 bool lose_after_evict_; 524 bool lose_after_evict_;
494 FakeContentLayerClient client_; 525 FakeContentLayerClient client_;
495 scoped_refptr<FakeContentLayer> layer_; 526 scoped_refptr<FakeContentLayer> content_layer_;
527 scoped_refptr<FakePictureLayer> picture_layer_;
496 LayerTreeHostImpl* impl_host_; 528 LayerTreeHostImpl* impl_host_;
497 int num_commits_; 529 int num_commits_;
498 }; 530 };
499 531
500 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 532 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
501 LoseAfterEvict_SingleThread_DirectRenderer) { 533 LoseAfterEvict_SingleThread_DirectRenderer) {
502 lose_after_evict_ = true; 534 lose_after_evict_ = true;
503 RunTest(false, false, false); 535 RunTest(false, false, false);
504 } 536 }
505 537
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 593 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
562 LoseBeforeEvict_MultiThread_DelegatingRenderer_ImplSidePaint) { 594 LoseBeforeEvict_MultiThread_DelegatingRenderer_ImplSidePaint) {
563 lose_after_evict_ = false; 595 lose_after_evict_ = false;
564 RunTest(true, true, true); 596 RunTest(true, true, true);
565 } 597 }
566 598
567 class LayerTreeHostContextTestLostContextWhileUpdatingResources 599 class LayerTreeHostContextTestLostContextWhileUpdatingResources
568 : public LayerTreeHostContextTest { 600 : public LayerTreeHostContextTest {
569 public: 601 public:
570 LayerTreeHostContextTestLostContextWhileUpdatingResources() 602 LayerTreeHostContextTestLostContextWhileUpdatingResources()
571 : parent_(FakeContentLayer::Create(&client_)), 603 : num_children_(50), times_to_lose_on_end_query_(3) {}
572 num_children_(50),
573 times_to_lose_on_end_query_(3) {}
574 604
575 virtual scoped_ptr<TestWebGraphicsContext3D> CreateContext3d() OVERRIDE { 605 virtual scoped_ptr<TestWebGraphicsContext3D> CreateContext3d() OVERRIDE {
576 scoped_ptr<TestWebGraphicsContext3D> context = 606 scoped_ptr<TestWebGraphicsContext3D> context =
577 LayerTreeHostContextTest::CreateContext3d(); 607 LayerTreeHostContextTest::CreateContext3d();
578 if (times_to_lose_on_end_query_) { 608 if (times_to_lose_on_end_query_) {
579 --times_to_lose_on_end_query_; 609 --times_to_lose_on_end_query_;
580 context->set_times_end_query_succeeds(5); 610 context->set_times_end_query_succeeds(5);
581 } 611 }
582 return context.Pass(); 612 return context.Pass();
583 } 613 }
584 614
585 virtual void SetupTree() OVERRIDE { 615 virtual void SetupTree() OVERRIDE {
616 if (layer_tree_host()->settings().impl_side_painting)
617 parent_ = FakePictureLayer::Create(&client_);
618 else
619 parent_ = FakeContentLayer::Create(&client_);
620
586 parent_->SetBounds(gfx::Size(num_children_, 1)); 621 parent_->SetBounds(gfx::Size(num_children_, 1));
587 622
588 for (int i = 0; i < num_children_; i++) { 623 for (int i = 0; i < num_children_; i++) {
589 scoped_refptr<FakeContentLayer> child = 624 scoped_refptr<Layer> child;
590 FakeContentLayer::Create(&client_); 625 if (layer_tree_host()->settings().impl_side_painting)
626 child = FakePictureLayer::Create(&client_);
627 else
628 child = FakeContentLayer::Create(&client_);
591 child->SetPosition(gfx::PointF(i, 0.f)); 629 child->SetPosition(gfx::PointF(i, 0.f));
592 child->SetBounds(gfx::Size(1, 1)); 630 child->SetBounds(gfx::Size(1, 1));
593 parent_->AddChild(child); 631 parent_->AddChild(child);
594 } 632 }
595 633
596 layer_tree_host()->SetRootLayer(parent_); 634 layer_tree_host()->SetRootLayer(parent_);
597 LayerTreeHostContextTest::SetupTree(); 635 LayerTreeHostContextTest::SetupTree();
598 } 636 }
599 637
600 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 638 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
601 639
602 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 640 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
603 EXPECT_EQ(0, times_to_lose_on_end_query_); 641 EXPECT_EQ(0, times_to_lose_on_end_query_);
604 EndTest(); 642 EndTest();
605 } 643 }
606 644
607 virtual void AfterTest() OVERRIDE { 645 virtual void AfterTest() OVERRIDE {
608 EXPECT_EQ(0, times_to_lose_on_end_query_); 646 EXPECT_EQ(0, times_to_lose_on_end_query_);
609 } 647 }
610 648
611 private: 649 private:
612 FakeContentLayerClient client_; 650 FakeContentLayerClient client_;
613 scoped_refptr<FakeContentLayer> parent_; 651 scoped_refptr<Layer> parent_;
614 int num_children_; 652 int num_children_;
615 int times_to_lose_on_end_query_; 653 int times_to_lose_on_end_query_;
616 }; 654 };
617 655
618 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F( 656 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F(
619 LayerTreeHostContextTestLostContextWhileUpdatingResources); 657 LayerTreeHostContextTestLostContextWhileUpdatingResources);
620 658
621 class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest { 659 class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest {
622 public: 660 public:
623 LayerTreeHostContextTestLayersNotified() 661 LayerTreeHostContextTestLayersNotified()
624 : LayerTreeHostContextTest(), num_commits_(0) {} 662 : LayerTreeHostContextTest(), num_commits_(0) {}
625 663
626 virtual void SetupTree() OVERRIDE { 664 virtual void SetupTree() OVERRIDE {
627 root_ = FakeContentLayer::Create(&client_); 665 if (layer_tree_host()->settings().impl_side_painting) {
628 child_ = FakeContentLayer::Create(&client_); 666 root_ = FakePictureLayer::Create(&client_);
629 grandchild_ = FakeContentLayer::Create(&client_); 667 child_ = FakePictureLayer::Create(&client_);
668 grandchild_ = FakePictureLayer::Create(&client_);
669 } else {
670 root_ = FakeContentLayer::Create(&client_);
671 child_ = FakeContentLayer::Create(&client_);
672 grandchild_ = FakeContentLayer::Create(&client_);
673 }
630 674
631 root_->AddChild(child_); 675 root_->AddChild(child_);
632 child_->AddChild(grandchild_); 676 child_->AddChild(grandchild_);
633 677
634 layer_tree_host()->SetRootLayer(root_); 678 layer_tree_host()->SetRootLayer(root_);
635 LayerTreeHostContextTest::SetupTree(); 679 LayerTreeHostContextTest::SetupTree();
636 } 680 }
637 681
638 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 682 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
639 683
640 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 684 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
641 LayerTreeHostContextTest::DidActivateTreeOnThread(host_impl); 685 LayerTreeHostContextTest::DidActivateTreeOnThread(host_impl);
642 686
643 FakeContentLayerImpl* root = static_cast<FakeContentLayerImpl*>( 687 FakePictureLayerImpl* root_picture = NULL;
644 host_impl->active_tree()->root_layer()); 688 FakePictureLayerImpl* child_picture = NULL;
645 FakeContentLayerImpl* child = 689 FakePictureLayerImpl* grandchild_picture = NULL;
646 static_cast<FakeContentLayerImpl*>(root->children()[0]); 690 FakeContentLayerImpl* root_content = NULL;
647 FakeContentLayerImpl* grandchild = 691 FakeContentLayerImpl* child_content = NULL;
648 static_cast<FakeContentLayerImpl*>(child->children()[0]); 692 FakeContentLayerImpl* grandchild_content = NULL;
693
694 if (layer_tree_host()->settings().impl_side_painting) {
695 root_picture = static_cast<FakePictureLayerImpl*>(
696 host_impl->active_tree()->root_layer());
697 child_picture =
698 static_cast<FakePictureLayerImpl*>(root_picture->children()[0]);
699 grandchild_picture =
700 static_cast<FakePictureLayerImpl*>(child_picture->children()[0]);
701
702 } else {
703 root_content = static_cast<FakeContentLayerImpl*>(
704 host_impl->active_tree()->root_layer());
705 child_content =
706 static_cast<FakeContentLayerImpl*>(root_content->children()[0]);
707 grandchild_content =
708 static_cast<FakeContentLayerImpl*>(child_content->children()[0]);
709 }
649 710
650 ++num_commits_; 711 ++num_commits_;
651 switch (num_commits_) { 712 switch (num_commits_) {
652 case 1: 713 case 1:
653 EXPECT_EQ(0u, root->lost_output_surface_count()); 714 if (layer_tree_host()->settings().impl_side_painting) {
654 EXPECT_EQ(0u, child->lost_output_surface_count()); 715 EXPECT_EQ(0u, root_picture->release_resources_count());
655 EXPECT_EQ(0u, grandchild->lost_output_surface_count()); 716 EXPECT_EQ(0u, child_picture->release_resources_count());
717 EXPECT_EQ(0u, grandchild_picture->release_resources_count());
718 } else {
719 EXPECT_EQ(0u, root_content->lost_output_surface_count());
720 EXPECT_EQ(0u, child_content->lost_output_surface_count());
721 EXPECT_EQ(0u, grandchild_content->lost_output_surface_count());
722 }
723
656 // Lose the context and struggle to recreate it. 724 // Lose the context and struggle to recreate it.
657 LoseContext(); 725 LoseContext();
658 times_to_fail_create_ = 1; 726 times_to_fail_create_ = 1;
659 break; 727 break;
660 case 2: 728 case 2:
661 EXPECT_GE(1u, root->lost_output_surface_count()); 729 if (layer_tree_host()->settings().impl_side_painting) {
662 EXPECT_GE(1u, child->lost_output_surface_count()); 730 EXPECT_TRUE(root_picture->release_resources_count());
663 EXPECT_GE(1u, grandchild->lost_output_surface_count()); 731 EXPECT_TRUE(child_picture->release_resources_count());
732 EXPECT_TRUE(grandchild_picture->release_resources_count());
733 } else {
734 EXPECT_TRUE(root_content->lost_output_surface_count());
735 EXPECT_TRUE(child_content->lost_output_surface_count());
736 EXPECT_TRUE(grandchild_content->lost_output_surface_count());
737 }
738
664 EndTest(); 739 EndTest();
665 break; 740 break;
666 default: 741 default:
667 NOTREACHED(); 742 NOTREACHED();
668 } 743 }
669 } 744 }
670 745
671 virtual void AfterTest() OVERRIDE {} 746 virtual void AfterTest() OVERRIDE {}
672 747
673 private: 748 private:
674 int num_commits_; 749 int num_commits_;
675 750
676 FakeContentLayerClient client_; 751 FakeContentLayerClient client_;
677 scoped_refptr<FakeContentLayer> root_; 752 scoped_refptr<Layer> root_;
678 scoped_refptr<FakeContentLayer> child_; 753 scoped_refptr<Layer> child_;
679 scoped_refptr<FakeContentLayer> grandchild_; 754 scoped_refptr<Layer> grandchild_;
680 }; 755 };
681 756
682 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestLayersNotified); 757 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestLayersNotified);
683 758
684 class LayerTreeHostContextTestDontUseLostResources 759 class LayerTreeHostContextTestDontUseLostResources
685 : public LayerTreeHostContextTest { 760 : public LayerTreeHostContextTest {
686 public: 761 public:
687 LayerTreeHostContextTestDontUseLostResources() : lost_context_(false) { 762 LayerTreeHostContextTestDontUseLostResources() : lost_context_(false) {
688 context_should_support_io_surface_ = true; 763 context_should_support_io_surface_ = true;
689 764
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 scoped_refptr<Layer> root = Layer::Create(); 822 scoped_refptr<Layer> root = Layer::Create();
748 root->SetBounds(gfx::Size(10, 10)); 823 root->SetBounds(gfx::Size(10, 10));
749 root->SetIsDrawable(true); 824 root->SetIsDrawable(true);
750 825
751 scoped_refptr<FakeDelegatedRendererLayer> delegated = 826 scoped_refptr<FakeDelegatedRendererLayer> delegated =
752 FakeDelegatedRendererLayer::Create(delegated_frame_provider_.get()); 827 FakeDelegatedRendererLayer::Create(delegated_frame_provider_.get());
753 delegated->SetBounds(gfx::Size(10, 10)); 828 delegated->SetBounds(gfx::Size(10, 10));
754 delegated->SetIsDrawable(true); 829 delegated->SetIsDrawable(true);
755 root->AddChild(delegated); 830 root->AddChild(delegated);
756 831
757 scoped_refptr<ContentLayer> content = ContentLayer::Create(&client_); 832 scoped_refptr<Layer> layer;
758 content->SetBounds(gfx::Size(10, 10)); 833 if (layer_tree_host()->settings().impl_side_painting)
759 content->SetIsDrawable(true); 834 layer = PictureLayer::Create(&client_);
760 root->AddChild(content); 835 else
836 layer = ContentLayer::Create(&client_);
837 layer->SetBounds(gfx::Size(10, 10));
838 layer->SetIsDrawable(true);
839 root->AddChild(layer);
761 840
762 scoped_refptr<TextureLayer> texture = TextureLayer::CreateForMailbox(NULL); 841 scoped_refptr<TextureLayer> texture = TextureLayer::CreateForMailbox(NULL);
763 texture->SetBounds(gfx::Size(10, 10)); 842 texture->SetBounds(gfx::Size(10, 10));
764 texture->SetIsDrawable(true); 843 texture->SetIsDrawable(true);
765 texture->SetTextureMailbox( 844 texture->SetTextureMailbox(
766 TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point), 845 TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point),
767 SingleReleaseCallback::Create( 846 SingleReleaseCallback::Create(
768 base::Bind(&LayerTreeHostContextTestDontUseLostResources:: 847 base::Bind(&LayerTreeHostContextTestDontUseLostResources::
769 EmptyReleaseCallback))); 848 EmptyReleaseCallback)));
770 root->AddChild(texture); 849 root->AddChild(texture);
771 850
772 scoped_refptr<ContentLayer> mask = ContentLayer::Create(&client_); 851 scoped_refptr<Layer> mask;
852 if (layer_tree_host()->settings().impl_side_painting)
853 mask = PictureLayer::Create(&client_);
854 else
855 mask = ContentLayer::Create(&client_);
773 mask->SetBounds(gfx::Size(10, 10)); 856 mask->SetBounds(gfx::Size(10, 10));
774 857
775 scoped_refptr<ContentLayer> content_with_mask = 858 scoped_refptr<Layer> layer_with_mask;
776 ContentLayer::Create(&client_); 859 if (layer_tree_host()->settings().impl_side_painting)
777 content_with_mask->SetBounds(gfx::Size(10, 10)); 860 layer_with_mask = PictureLayer::Create(&client_);
778 content_with_mask->SetIsDrawable(true); 861 else
779 content_with_mask->SetMaskLayer(mask.get()); 862 layer_with_mask = ContentLayer::Create(&client_);
780 root->AddChild(content_with_mask); 863 layer_with_mask->SetBounds(gfx::Size(10, 10));
864 layer_with_mask->SetIsDrawable(true);
865 layer_with_mask->SetMaskLayer(mask.get());
866 root->AddChild(layer_with_mask);
781 867
782 scoped_refptr<VideoLayer> video_color = 868 scoped_refptr<VideoLayer> video_color =
783 VideoLayer::Create(&color_frame_provider_, media::VIDEO_ROTATION_0); 869 VideoLayer::Create(&color_frame_provider_, media::VIDEO_ROTATION_0);
784 video_color->SetBounds(gfx::Size(10, 10)); 870 video_color->SetBounds(gfx::Size(10, 10));
785 video_color->SetIsDrawable(true); 871 video_color->SetIsDrawable(true);
786 root->AddChild(video_color); 872 root->AddChild(video_color);
787 873
788 scoped_refptr<VideoLayer> video_hw = 874 scoped_refptr<VideoLayer> video_hw =
789 VideoLayer::Create(&hw_frame_provider_, media::VIDEO_ROTATION_0); 875 VideoLayer::Create(&hw_frame_provider_, media::VIDEO_ROTATION_0);
790 video_hw->SetBounds(gfx::Size(10, 10)); 876 video_hw->SetBounds(gfx::Size(10, 10));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 root->AddChild(io_surface); 917 root->AddChild(io_surface);
832 } 918 }
833 919
834 // Enable the hud. 920 // Enable the hud.
835 LayerTreeDebugState debug_state; 921 LayerTreeDebugState debug_state;
836 debug_state.show_property_changed_rects = true; 922 debug_state.show_property_changed_rects = true;
837 layer_tree_host()->SetDebugState(debug_state); 923 layer_tree_host()->SetDebugState(debug_state);
838 924
839 scoped_refptr<PaintedScrollbarLayer> scrollbar = 925 scoped_refptr<PaintedScrollbarLayer> scrollbar =
840 PaintedScrollbarLayer::Create( 926 PaintedScrollbarLayer::Create(
841 scoped_ptr<Scrollbar>(new FakeScrollbar).Pass(), content->id()); 927 scoped_ptr<Scrollbar>(new FakeScrollbar).Pass(), layer->id());
842 scrollbar->SetBounds(gfx::Size(10, 10)); 928 scrollbar->SetBounds(gfx::Size(10, 10));
843 scrollbar->SetIsDrawable(true); 929 scrollbar->SetIsDrawable(true);
844 root->AddChild(scrollbar); 930 root->AddChild(scrollbar);
845 931
846 layer_tree_host()->SetRootLayer(root); 932 layer_tree_host()->SetRootLayer(root);
847 LayerTreeHostContextTest::SetupTree(); 933 LayerTreeHostContextTest::SetupTree();
848 } 934 }
849 935
850 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 936 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
851 937
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
1404 } 1490 }
1405 } 1491 }
1406 }; 1492 };
1407 1493
1408 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostEviction); 1494 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostEviction);
1409 1495
1410 class LayerTreeHostContextTestSurfaceCreateCallback 1496 class LayerTreeHostContextTestSurfaceCreateCallback
1411 : public LayerTreeHostContextTest { 1497 : public LayerTreeHostContextTest {
1412 public: 1498 public:
1413 LayerTreeHostContextTestSurfaceCreateCallback() 1499 LayerTreeHostContextTestSurfaceCreateCallback()
1414 : LayerTreeHostContextTest(), 1500 : LayerTreeHostContextTest() {}
1415 layer_(FakeContentLayer::Create(&client_)) {}
1416 1501
1417 virtual void SetupTree() OVERRIDE { 1502 virtual void SetupTree() OVERRIDE {
1418 layer_->SetBounds(gfx::Size(10, 20)); 1503 if (layer_tree_host()->settings().impl_side_painting) {
1419 layer_tree_host()->SetRootLayer(layer_); 1504 picture_layer_ = FakePictureLayer::Create(&client_);
1505 picture_layer_->SetBounds(gfx::Size(10, 20));
1506 layer_tree_host()->SetRootLayer(picture_layer_);
1507 } else {
1508 content_layer_ = FakeContentLayer::Create(&client_);
1509 content_layer_->SetBounds(gfx::Size(10, 20));
1510 layer_tree_host()->SetRootLayer(content_layer_);
1511 }
1512
1420 LayerTreeHostContextTest::SetupTree(); 1513 LayerTreeHostContextTest::SetupTree();
1421 } 1514 }
1422 1515
1423 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 1516 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
1424 1517
1425 virtual void DidCommit() OVERRIDE { 1518 virtual void DidCommit() OVERRIDE {
1426 switch (layer_tree_host()->source_frame_number()) { 1519 switch (layer_tree_host()->source_frame_number()) {
1427 case 1: 1520 case 1:
1428 EXPECT_EQ(1u, layer_->output_surface_created_count()); 1521 if (layer_tree_host()->settings().impl_side_painting)
1522 EXPECT_EQ(1u, picture_layer_->output_surface_created_count());
1523 else
1524 EXPECT_EQ(1u, content_layer_->output_surface_created_count());
1429 layer_tree_host()->SetNeedsCommit(); 1525 layer_tree_host()->SetNeedsCommit();
1430 break; 1526 break;
1431 case 2: 1527 case 2:
1432 EXPECT_EQ(1u, layer_->output_surface_created_count()); 1528 if (layer_tree_host()->settings().impl_side_painting)
1529 EXPECT_EQ(1u, picture_layer_->output_surface_created_count());
1530 else
1531 EXPECT_EQ(1u, content_layer_->output_surface_created_count());
1433 layer_tree_host()->SetNeedsCommit(); 1532 layer_tree_host()->SetNeedsCommit();
1434 break; 1533 break;
1435 case 3: 1534 case 3:
1436 EXPECT_EQ(1u, layer_->output_surface_created_count()); 1535 if (layer_tree_host()->settings().impl_side_painting)
1536 EXPECT_EQ(1u, picture_layer_->output_surface_created_count());
1537 else
1538 EXPECT_EQ(1u, content_layer_->output_surface_created_count());
1437 break; 1539 break;
1438 case 4: 1540 case 4:
1439 EXPECT_EQ(2u, layer_->output_surface_created_count()); 1541 if (layer_tree_host()->settings().impl_side_painting)
1542 EXPECT_EQ(2u, picture_layer_->output_surface_created_count());
1543 else
1544 EXPECT_EQ(2u, content_layer_->output_surface_created_count());
1440 layer_tree_host()->SetNeedsCommit(); 1545 layer_tree_host()->SetNeedsCommit();
1441 break; 1546 break;
1442 } 1547 }
1443 } 1548 }
1444 1549
1445 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { 1550 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE {
1446 LayerTreeHostContextTest::CommitCompleteOnThread(impl); 1551 LayerTreeHostContextTest::CommitCompleteOnThread(impl);
1447 switch (LastCommittedSourceFrameNumber(impl)) { 1552 switch (LastCommittedSourceFrameNumber(impl)) {
1448 case 0: 1553 case 0:
1449 break; 1554 break;
1450 case 1: 1555 case 1:
1451 break; 1556 break;
1452 case 2: 1557 case 2:
1453 LoseContext(); 1558 LoseContext();
1454 break; 1559 break;
1455 case 3: 1560 case 3:
1456 EndTest(); 1561 EndTest();
1457 break; 1562 break;
1458 } 1563 }
1459 } 1564 }
1460 1565
1461 virtual void AfterTest() OVERRIDE {} 1566 virtual void AfterTest() OVERRIDE {}
1462 1567
1463 protected: 1568 protected:
1464 FakeContentLayerClient client_; 1569 FakeContentLayerClient client_;
1465 scoped_refptr<FakeContentLayer> layer_; 1570 scoped_refptr<FakePictureLayer> picture_layer_;
1571 scoped_refptr<FakeContentLayer> content_layer_;
1466 }; 1572 };
1467 1573
1468 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestSurfaceCreateCallback); 1574 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestSurfaceCreateCallback);
1469 1575
1470 class LayerTreeHostContextTestLoseAfterSendingBeginMainFrame 1576 class LayerTreeHostContextTestLoseAfterSendingBeginMainFrame
1471 : public LayerTreeHostContextTest { 1577 : public LayerTreeHostContextTest {
1472 protected: 1578 protected:
1473 virtual void BeginTest() OVERRIDE { 1579 virtual void BeginTest() OVERRIDE {
1474 deferred_ = false; 1580 deferred_ = false;
1475 PostSetNeedsCommitToMainThread(); 1581 PostSetNeedsCommitToMainThread();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1521 virtual void AfterTest() OVERRIDE {} 1627 virtual void AfterTest() OVERRIDE {}
1522 1628
1523 bool deferred_; 1629 bool deferred_;
1524 }; 1630 };
1525 1631
1526 SINGLE_AND_MULTI_THREAD_TEST_F( 1632 SINGLE_AND_MULTI_THREAD_TEST_F(
1527 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); 1633 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame);
1528 1634
1529 } // namespace 1635 } // namespace
1530 } // namespace cc 1636 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698