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

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

Issue 591473003: (Reland) cc:Use impl-side painting in LTH context lost test (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
sohanjg 2014/09/20 09:56:18 We had a check here in the prev patch for, EXPECT
danakj 2014/09/22 14:57:33 Ah ok, it was a bad check I guess, sorry.
sohanjg 2014/09/22 15:12:12 np :)
467 if (lose_after_evict_) 491 if (lose_after_evict_)
468 LoseContext(); 492 LoseContext();
469 } 493 }
470 494
471 virtual void DidCommitAndDrawFrame() OVERRIDE { 495 virtual void DidCommitAndDrawFrame() OVERRIDE {
472 if (num_commits_ > 1) 496 if (num_commits_ > 1)
danakj 2014/09/22 14:57:33 I don't see anything setting this variable anymore
sohanjg 2014/09/22 15:12:13 Done.
473 return; 497 return;
474 EXPECT_TRUE(layer_->HaveBackingAt(0, 0)); 498 if (!layer_tree_host()->settings().impl_side_painting) {
499 EXPECT_TRUE(content_layer_->HaveBackingAt(0, 0));
500 }
475 PostEvictTextures(); 501 PostEvictTextures();
502
503 EndTest();
danakj 2014/09/22 14:57:33 Can you move this into the num_commits_ > 1 early
sohanjg 2014/09/22 15:12:13 Done. You mean EndTest here, as well in early-out,
danakj 2014/09/22 15:15:33 No, just in the early out. We want to end after we
sohanjg_ 2014/09/22 17:12:28 Hmm..ok..it seems like few of the test goes to tim
476 } 504 }
477 505
478 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { 506 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
479 LayerTreeHostContextTest::CommitCompleteOnThread(impl); 507 if (impl->settings().impl_side_painting) {
480 if (num_commits_ > 1) 508 FakePictureLayerImpl* picture_impl =
481 return; 509 static_cast<FakePictureLayerImpl*>(impl->active_tree()->root_layer());
482 ++num_commits_; 510 EXPECT_TRUE(picture_impl->HighResTiling()->TileAt(0, 0)->IsReadyToDraw());
483 if (!lose_after_evict_) 511 } else {
484 LoseContext(); 512 FakeContentLayerImpl* content_impl =
513 static_cast<FakeContentLayerImpl*>(impl->active_tree()->root_layer());
514 EXPECT_TRUE(content_impl->HaveResourceForTileAt(0, 0));
515 }
516
485 impl_host_ = impl; 517 impl_host_ = impl;
486 } 518 }
487 519
488 virtual void DidInitializeOutputSurface() OVERRIDE { EndTest(); } 520 virtual void DidInitializeOutputSurface() OVERRIDE {}
489 521
490 virtual void AfterTest() OVERRIDE {} 522 virtual void AfterTest() OVERRIDE {}
491 523
492 protected: 524 protected:
493 bool lose_after_evict_; 525 bool lose_after_evict_;
494 FakeContentLayerClient client_; 526 FakeContentLayerClient client_;
495 scoped_refptr<FakeContentLayer> layer_; 527 scoped_refptr<FakeContentLayer> content_layer_;
528 scoped_refptr<FakePictureLayer> picture_layer_;
496 LayerTreeHostImpl* impl_host_; 529 LayerTreeHostImpl* impl_host_;
497 int num_commits_; 530 int num_commits_;
498 }; 531 };
499 532
500 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 533 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
501 LoseAfterEvict_SingleThread_DirectRenderer) { 534 LoseAfterEvict_SingleThread_DirectRenderer) {
502 lose_after_evict_ = true; 535 lose_after_evict_ = true;
503 RunTest(false, false, false); 536 RunTest(false, false, false);
504 } 537 }
505 538
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 594 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
562 LoseBeforeEvict_MultiThread_DelegatingRenderer_ImplSidePaint) { 595 LoseBeforeEvict_MultiThread_DelegatingRenderer_ImplSidePaint) {
563 lose_after_evict_ = false; 596 lose_after_evict_ = false;
564 RunTest(true, true, true); 597 RunTest(true, true, true);
565 } 598 }
566 599
567 class LayerTreeHostContextTestLostContextWhileUpdatingResources 600 class LayerTreeHostContextTestLostContextWhileUpdatingResources
568 : public LayerTreeHostContextTest { 601 : public LayerTreeHostContextTest {
569 public: 602 public:
570 LayerTreeHostContextTestLostContextWhileUpdatingResources() 603 LayerTreeHostContextTestLostContextWhileUpdatingResources()
571 : parent_(FakeContentLayer::Create(&client_)), 604 : num_children_(50), times_to_lose_on_end_query_(3) {}
572 num_children_(50),
573 times_to_lose_on_end_query_(3) {}
574 605
575 virtual scoped_ptr<TestWebGraphicsContext3D> CreateContext3d() OVERRIDE { 606 virtual scoped_ptr<TestWebGraphicsContext3D> CreateContext3d() OVERRIDE {
576 scoped_ptr<TestWebGraphicsContext3D> context = 607 scoped_ptr<TestWebGraphicsContext3D> context =
577 LayerTreeHostContextTest::CreateContext3d(); 608 LayerTreeHostContextTest::CreateContext3d();
578 if (times_to_lose_on_end_query_) { 609 if (times_to_lose_on_end_query_) {
579 --times_to_lose_on_end_query_; 610 --times_to_lose_on_end_query_;
580 context->set_times_end_query_succeeds(5); 611 context->set_times_end_query_succeeds(5);
581 } 612 }
582 return context.Pass(); 613 return context.Pass();
583 } 614 }
584 615
585 virtual void SetupTree() OVERRIDE { 616 virtual void SetupTree() OVERRIDE {
617 if (layer_tree_host()->settings().impl_side_painting)
618 parent_ = FakePictureLayer::Create(&client_);
619 else
620 parent_ = FakeContentLayer::Create(&client_);
621
586 parent_->SetBounds(gfx::Size(num_children_, 1)); 622 parent_->SetBounds(gfx::Size(num_children_, 1));
587 623
588 for (int i = 0; i < num_children_; i++) { 624 for (int i = 0; i < num_children_; i++) {
589 scoped_refptr<FakeContentLayer> child = 625 scoped_refptr<Layer> child;
590 FakeContentLayer::Create(&client_); 626 if (layer_tree_host()->settings().impl_side_painting)
627 child = FakePictureLayer::Create(&client_);
628 else
629 child = FakeContentLayer::Create(&client_);
591 child->SetPosition(gfx::PointF(i, 0.f)); 630 child->SetPosition(gfx::PointF(i, 0.f));
592 child->SetBounds(gfx::Size(1, 1)); 631 child->SetBounds(gfx::Size(1, 1));
593 parent_->AddChild(child); 632 parent_->AddChild(child);
594 } 633 }
595 634
596 layer_tree_host()->SetRootLayer(parent_); 635 layer_tree_host()->SetRootLayer(parent_);
597 LayerTreeHostContextTest::SetupTree(); 636 LayerTreeHostContextTest::SetupTree();
598 } 637 }
599 638
600 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 639 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
601 640
602 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 641 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
603 EXPECT_EQ(0, times_to_lose_on_end_query_); 642 EXPECT_EQ(0, times_to_lose_on_end_query_);
604 EndTest(); 643 EndTest();
605 } 644 }
606 645
607 virtual void AfterTest() OVERRIDE { 646 virtual void AfterTest() OVERRIDE {
608 EXPECT_EQ(0, times_to_lose_on_end_query_); 647 EXPECT_EQ(0, times_to_lose_on_end_query_);
609 } 648 }
610 649
611 private: 650 private:
612 FakeContentLayerClient client_; 651 FakeContentLayerClient client_;
613 scoped_refptr<FakeContentLayer> parent_; 652 scoped_refptr<Layer> parent_;
614 int num_children_; 653 int num_children_;
615 int times_to_lose_on_end_query_; 654 int times_to_lose_on_end_query_;
616 }; 655 };
617 656
618 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F( 657 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F(
619 LayerTreeHostContextTestLostContextWhileUpdatingResources); 658 LayerTreeHostContextTestLostContextWhileUpdatingResources);
620 659
621 class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest { 660 class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest {
622 public: 661 public:
623 LayerTreeHostContextTestLayersNotified() 662 LayerTreeHostContextTestLayersNotified()
624 : LayerTreeHostContextTest(), num_commits_(0) {} 663 : LayerTreeHostContextTest(), num_commits_(0) {}
625 664
626 virtual void SetupTree() OVERRIDE { 665 virtual void SetupTree() OVERRIDE {
627 root_ = FakeContentLayer::Create(&client_); 666 if (layer_tree_host()->settings().impl_side_painting) {
628 child_ = FakeContentLayer::Create(&client_); 667 root_ = FakePictureLayer::Create(&client_);
629 grandchild_ = FakeContentLayer::Create(&client_); 668 child_ = FakePictureLayer::Create(&client_);
669 grandchild_ = FakePictureLayer::Create(&client_);
670 } else {
671 root_ = FakeContentLayer::Create(&client_);
672 child_ = FakeContentLayer::Create(&client_);
673 grandchild_ = FakeContentLayer::Create(&client_);
674 }
630 675
631 root_->AddChild(child_); 676 root_->AddChild(child_);
632 child_->AddChild(grandchild_); 677 child_->AddChild(grandchild_);
633 678
634 layer_tree_host()->SetRootLayer(root_); 679 layer_tree_host()->SetRootLayer(root_);
635 LayerTreeHostContextTest::SetupTree(); 680 LayerTreeHostContextTest::SetupTree();
636 } 681 }
637 682
638 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 683 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
639 684
640 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 685 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
641 LayerTreeHostContextTest::DidActivateTreeOnThread(host_impl); 686 LayerTreeHostContextTest::DidActivateTreeOnThread(host_impl);
642 687
643 FakeContentLayerImpl* root = static_cast<FakeContentLayerImpl*>( 688 FakePictureLayerImpl* root_picture = NULL;
644 host_impl->active_tree()->root_layer()); 689 FakePictureLayerImpl* child_picture = NULL;
645 FakeContentLayerImpl* child = 690 FakePictureLayerImpl* grandchild_picture = NULL;
646 static_cast<FakeContentLayerImpl*>(root->children()[0]); 691 FakeContentLayerImpl* root_content = NULL;
647 FakeContentLayerImpl* grandchild = 692 FakeContentLayerImpl* child_content = NULL;
648 static_cast<FakeContentLayerImpl*>(child->children()[0]); 693 FakeContentLayerImpl* grandchild_content = NULL;
694
695 if (layer_tree_host()->settings().impl_side_painting) {
696 root_picture = static_cast<FakePictureLayerImpl*>(
697 host_impl->active_tree()->root_layer());
698 child_picture =
699 static_cast<FakePictureLayerImpl*>(root_picture->children()[0]);
700 grandchild_picture =
701 static_cast<FakePictureLayerImpl*>(child_picture->children()[0]);
702
703 } else {
704 root_content = static_cast<FakeContentLayerImpl*>(
705 host_impl->active_tree()->root_layer());
706 child_content =
707 static_cast<FakeContentLayerImpl*>(root_content->children()[0]);
708 grandchild_content =
709 static_cast<FakeContentLayerImpl*>(child_content->children()[0]);
710 }
649 711
650 ++num_commits_; 712 ++num_commits_;
651 switch (num_commits_) { 713 switch (num_commits_) {
652 case 1: 714 case 1:
653 EXPECT_EQ(0u, root->lost_output_surface_count()); 715 if (layer_tree_host()->settings().impl_side_painting) {
654 EXPECT_EQ(0u, child->lost_output_surface_count()); 716 EXPECT_EQ(0u, root_picture->release_resources_count());
655 EXPECT_EQ(0u, grandchild->lost_output_surface_count()); 717 EXPECT_EQ(0u, child_picture->release_resources_count());
718 EXPECT_EQ(0u, grandchild_picture->release_resources_count());
719 } else {
720 EXPECT_EQ(0u, root_content->lost_output_surface_count());
721 EXPECT_EQ(0u, child_content->lost_output_surface_count());
722 EXPECT_EQ(0u, grandchild_content->lost_output_surface_count());
723 }
724
656 // Lose the context and struggle to recreate it. 725 // Lose the context and struggle to recreate it.
657 LoseContext(); 726 LoseContext();
658 times_to_fail_create_ = 1; 727 times_to_fail_create_ = 1;
659 break; 728 break;
660 case 2: 729 case 2:
661 EXPECT_GE(1u, root->lost_output_surface_count()); 730 if (layer_tree_host()->settings().impl_side_painting) {
662 EXPECT_GE(1u, child->lost_output_surface_count()); 731 EXPECT_TRUE(root_picture->release_resources_count());
663 EXPECT_GE(1u, grandchild->lost_output_surface_count()); 732 EXPECT_TRUE(child_picture->release_resources_count());
733 EXPECT_TRUE(grandchild_picture->release_resources_count());
734 } else {
735 EXPECT_TRUE(root_content->lost_output_surface_count());
736 EXPECT_TRUE(child_content->lost_output_surface_count());
737 EXPECT_TRUE(grandchild_content->lost_output_surface_count());
738 }
739
664 EndTest(); 740 EndTest();
665 break; 741 break;
666 default: 742 default:
667 NOTREACHED(); 743 NOTREACHED();
668 } 744 }
669 } 745 }
670 746
671 virtual void AfterTest() OVERRIDE {} 747 virtual void AfterTest() OVERRIDE {}
672 748
673 private: 749 private:
674 int num_commits_; 750 int num_commits_;
675 751
676 FakeContentLayerClient client_; 752 FakeContentLayerClient client_;
677 scoped_refptr<FakeContentLayer> root_; 753 scoped_refptr<Layer> root_;
678 scoped_refptr<FakeContentLayer> child_; 754 scoped_refptr<Layer> child_;
679 scoped_refptr<FakeContentLayer> grandchild_; 755 scoped_refptr<Layer> grandchild_;
680 }; 756 };
681 757
682 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestLayersNotified); 758 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestLayersNotified);
683 759
684 class LayerTreeHostContextTestDontUseLostResources 760 class LayerTreeHostContextTestDontUseLostResources
685 : public LayerTreeHostContextTest { 761 : public LayerTreeHostContextTest {
686 public: 762 public:
687 LayerTreeHostContextTestDontUseLostResources() : lost_context_(false) { 763 LayerTreeHostContextTestDontUseLostResources() : lost_context_(false) {
688 context_should_support_io_surface_ = true; 764 context_should_support_io_surface_ = true;
689 765
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 scoped_refptr<Layer> root = Layer::Create(); 823 scoped_refptr<Layer> root = Layer::Create();
748 root->SetBounds(gfx::Size(10, 10)); 824 root->SetBounds(gfx::Size(10, 10));
749 root->SetIsDrawable(true); 825 root->SetIsDrawable(true);
750 826
751 scoped_refptr<FakeDelegatedRendererLayer> delegated = 827 scoped_refptr<FakeDelegatedRendererLayer> delegated =
752 FakeDelegatedRendererLayer::Create(delegated_frame_provider_.get()); 828 FakeDelegatedRendererLayer::Create(delegated_frame_provider_.get());
753 delegated->SetBounds(gfx::Size(10, 10)); 829 delegated->SetBounds(gfx::Size(10, 10));
754 delegated->SetIsDrawable(true); 830 delegated->SetIsDrawable(true);
755 root->AddChild(delegated); 831 root->AddChild(delegated);
756 832
757 scoped_refptr<ContentLayer> content = ContentLayer::Create(&client_); 833 scoped_refptr<Layer> layer;
758 content->SetBounds(gfx::Size(10, 10)); 834 if (layer_tree_host()->settings().impl_side_painting)
759 content->SetIsDrawable(true); 835 layer = PictureLayer::Create(&client_);
760 root->AddChild(content); 836 else
837 layer = ContentLayer::Create(&client_);
838 layer->SetBounds(gfx::Size(10, 10));
839 layer->SetIsDrawable(true);
840 root->AddChild(layer);
761 841
762 scoped_refptr<TextureLayer> texture = TextureLayer::CreateForMailbox(NULL); 842 scoped_refptr<TextureLayer> texture = TextureLayer::CreateForMailbox(NULL);
763 texture->SetBounds(gfx::Size(10, 10)); 843 texture->SetBounds(gfx::Size(10, 10));
764 texture->SetIsDrawable(true); 844 texture->SetIsDrawable(true);
765 texture->SetTextureMailbox( 845 texture->SetTextureMailbox(
766 TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point), 846 TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point),
767 SingleReleaseCallback::Create( 847 SingleReleaseCallback::Create(
768 base::Bind(&LayerTreeHostContextTestDontUseLostResources:: 848 base::Bind(&LayerTreeHostContextTestDontUseLostResources::
769 EmptyReleaseCallback))); 849 EmptyReleaseCallback)));
770 root->AddChild(texture); 850 root->AddChild(texture);
771 851
772 scoped_refptr<ContentLayer> mask = ContentLayer::Create(&client_); 852 scoped_refptr<Layer> mask;
853 if (layer_tree_host()->settings().impl_side_painting)
854 mask = PictureLayer::Create(&client_);
855 else
856 mask = ContentLayer::Create(&client_);
773 mask->SetBounds(gfx::Size(10, 10)); 857 mask->SetBounds(gfx::Size(10, 10));
774 858
775 scoped_refptr<ContentLayer> content_with_mask = 859 scoped_refptr<Layer> layer_with_mask;
776 ContentLayer::Create(&client_); 860 if (layer_tree_host()->settings().impl_side_painting)
777 content_with_mask->SetBounds(gfx::Size(10, 10)); 861 layer_with_mask = PictureLayer::Create(&client_);
778 content_with_mask->SetIsDrawable(true); 862 else
779 content_with_mask->SetMaskLayer(mask.get()); 863 layer_with_mask = ContentLayer::Create(&client_);
780 root->AddChild(content_with_mask); 864 layer_with_mask->SetBounds(gfx::Size(10, 10));
865 layer_with_mask->SetIsDrawable(true);
866 layer_with_mask->SetMaskLayer(mask.get());
867 root->AddChild(layer_with_mask);
781 868
782 scoped_refptr<VideoLayer> video_color = 869 scoped_refptr<VideoLayer> video_color =
783 VideoLayer::Create(&color_frame_provider_, media::VIDEO_ROTATION_0); 870 VideoLayer::Create(&color_frame_provider_, media::VIDEO_ROTATION_0);
784 video_color->SetBounds(gfx::Size(10, 10)); 871 video_color->SetBounds(gfx::Size(10, 10));
785 video_color->SetIsDrawable(true); 872 video_color->SetIsDrawable(true);
786 root->AddChild(video_color); 873 root->AddChild(video_color);
787 874
788 scoped_refptr<VideoLayer> video_hw = 875 scoped_refptr<VideoLayer> video_hw =
789 VideoLayer::Create(&hw_frame_provider_, media::VIDEO_ROTATION_0); 876 VideoLayer::Create(&hw_frame_provider_, media::VIDEO_ROTATION_0);
790 video_hw->SetBounds(gfx::Size(10, 10)); 877 video_hw->SetBounds(gfx::Size(10, 10));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 root->AddChild(io_surface); 918 root->AddChild(io_surface);
832 } 919 }
833 920
834 // Enable the hud. 921 // Enable the hud.
835 LayerTreeDebugState debug_state; 922 LayerTreeDebugState debug_state;
836 debug_state.show_property_changed_rects = true; 923 debug_state.show_property_changed_rects = true;
837 layer_tree_host()->SetDebugState(debug_state); 924 layer_tree_host()->SetDebugState(debug_state);
838 925
839 scoped_refptr<PaintedScrollbarLayer> scrollbar = 926 scoped_refptr<PaintedScrollbarLayer> scrollbar =
840 PaintedScrollbarLayer::Create( 927 PaintedScrollbarLayer::Create(
841 scoped_ptr<Scrollbar>(new FakeScrollbar).Pass(), content->id()); 928 scoped_ptr<Scrollbar>(new FakeScrollbar).Pass(), layer->id());
842 scrollbar->SetBounds(gfx::Size(10, 10)); 929 scrollbar->SetBounds(gfx::Size(10, 10));
843 scrollbar->SetIsDrawable(true); 930 scrollbar->SetIsDrawable(true);
844 root->AddChild(scrollbar); 931 root->AddChild(scrollbar);
845 932
846 layer_tree_host()->SetRootLayer(root); 933 layer_tree_host()->SetRootLayer(root);
847 LayerTreeHostContextTest::SetupTree(); 934 LayerTreeHostContextTest::SetupTree();
848 } 935 }
849 936
850 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 937 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
851 938
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
1404 } 1491 }
1405 } 1492 }
1406 }; 1493 };
1407 1494
1408 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostEviction); 1495 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostEviction);
1409 1496
1410 class LayerTreeHostContextTestSurfaceCreateCallback 1497 class LayerTreeHostContextTestSurfaceCreateCallback
1411 : public LayerTreeHostContextTest { 1498 : public LayerTreeHostContextTest {
1412 public: 1499 public:
1413 LayerTreeHostContextTestSurfaceCreateCallback() 1500 LayerTreeHostContextTestSurfaceCreateCallback()
1414 : LayerTreeHostContextTest(), 1501 : LayerTreeHostContextTest() {}
1415 layer_(FakeContentLayer::Create(&client_)) {}
1416 1502
1417 virtual void SetupTree() OVERRIDE { 1503 virtual void SetupTree() OVERRIDE {
1418 layer_->SetBounds(gfx::Size(10, 20)); 1504 if (layer_tree_host()->settings().impl_side_painting) {
1419 layer_tree_host()->SetRootLayer(layer_); 1505 picture_layer_ = FakePictureLayer::Create(&client_);
1506 picture_layer_->SetBounds(gfx::Size(10, 20));
1507 layer_tree_host()->SetRootLayer(picture_layer_);
1508 } else {
1509 content_layer_ = FakeContentLayer::Create(&client_);
1510 content_layer_->SetBounds(gfx::Size(10, 20));
1511 layer_tree_host()->SetRootLayer(content_layer_);
1512 }
1513
1420 LayerTreeHostContextTest::SetupTree(); 1514 LayerTreeHostContextTest::SetupTree();
1421 } 1515 }
1422 1516
1423 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 1517 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
1424 1518
1425 virtual void DidCommit() OVERRIDE { 1519 virtual void DidCommit() OVERRIDE {
1426 switch (layer_tree_host()->source_frame_number()) { 1520 switch (layer_tree_host()->source_frame_number()) {
1427 case 1: 1521 case 1:
1428 EXPECT_EQ(1u, layer_->output_surface_created_count()); 1522 if (layer_tree_host()->settings().impl_side_painting)
1523 EXPECT_EQ(1u, picture_layer_->output_surface_created_count());
1524 else
1525 EXPECT_EQ(1u, content_layer_->output_surface_created_count());
1429 layer_tree_host()->SetNeedsCommit(); 1526 layer_tree_host()->SetNeedsCommit();
1430 break; 1527 break;
1431 case 2: 1528 case 2:
1432 EXPECT_EQ(1u, layer_->output_surface_created_count()); 1529 if (layer_tree_host()->settings().impl_side_painting)
1530 EXPECT_EQ(1u, picture_layer_->output_surface_created_count());
1531 else
1532 EXPECT_EQ(1u, content_layer_->output_surface_created_count());
1433 layer_tree_host()->SetNeedsCommit(); 1533 layer_tree_host()->SetNeedsCommit();
1434 break; 1534 break;
1435 case 3: 1535 case 3:
1436 EXPECT_EQ(1u, layer_->output_surface_created_count()); 1536 if (layer_tree_host()->settings().impl_side_painting)
1537 EXPECT_EQ(1u, picture_layer_->output_surface_created_count());
1538 else
1539 EXPECT_EQ(1u, content_layer_->output_surface_created_count());
1437 break; 1540 break;
1438 case 4: 1541 case 4:
1439 EXPECT_EQ(2u, layer_->output_surface_created_count()); 1542 if (layer_tree_host()->settings().impl_side_painting)
1543 EXPECT_EQ(2u, picture_layer_->output_surface_created_count());
1544 else
1545 EXPECT_EQ(2u, content_layer_->output_surface_created_count());
1440 layer_tree_host()->SetNeedsCommit(); 1546 layer_tree_host()->SetNeedsCommit();
1441 break; 1547 break;
1442 } 1548 }
1443 } 1549 }
1444 1550
1445 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { 1551 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE {
1446 LayerTreeHostContextTest::CommitCompleteOnThread(impl); 1552 LayerTreeHostContextTest::CommitCompleteOnThread(impl);
1447 switch (LastCommittedSourceFrameNumber(impl)) { 1553 switch (LastCommittedSourceFrameNumber(impl)) {
1448 case 0: 1554 case 0:
1449 break; 1555 break;
1450 case 1: 1556 case 1:
1451 break; 1557 break;
1452 case 2: 1558 case 2:
1453 LoseContext(); 1559 LoseContext();
1454 break; 1560 break;
1455 case 3: 1561 case 3:
1456 EndTest(); 1562 EndTest();
1457 break; 1563 break;
1458 } 1564 }
1459 } 1565 }
1460 1566
1461 virtual void AfterTest() OVERRIDE {} 1567 virtual void AfterTest() OVERRIDE {}
1462 1568
1463 protected: 1569 protected:
1464 FakeContentLayerClient client_; 1570 FakeContentLayerClient client_;
1465 scoped_refptr<FakeContentLayer> layer_; 1571 scoped_refptr<FakePictureLayer> picture_layer_;
1572 scoped_refptr<FakeContentLayer> content_layer_;
1466 }; 1573 };
1467 1574
1468 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestSurfaceCreateCallback); 1575 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestSurfaceCreateCallback);
1469 1576
1470 class LayerTreeHostContextTestLoseAfterSendingBeginMainFrame 1577 class LayerTreeHostContextTestLoseAfterSendingBeginMainFrame
1471 : public LayerTreeHostContextTest { 1578 : public LayerTreeHostContextTest {
1472 protected: 1579 protected:
1473 virtual void BeginTest() OVERRIDE { 1580 virtual void BeginTest() OVERRIDE {
1474 deferred_ = false; 1581 deferred_ = false;
1475 PostSetNeedsCommitToMainThread(); 1582 PostSetNeedsCommitToMainThread();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1521 virtual void AfterTest() OVERRIDE {} 1628 virtual void AfterTest() OVERRIDE {}
1522 1629
1523 bool deferred_; 1630 bool deferred_;
1524 }; 1631 };
1525 1632
1526 SINGLE_AND_MULTI_THREAD_TEST_F( 1633 SINGLE_AND_MULTI_THREAD_TEST_F(
1527 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); 1634 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame);
1528 1635
1529 } // namespace 1636 } // namespace
1530 } // namespace cc 1637 } // 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