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

Side by Side Diff: cc/output/overlay_unittest.cc

Issue 1455023002: cc: Replace Pass() with std::move() in some subdirs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@pass-cc
Patch Set: pass-cc2: . Created 5 years, 1 month 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/output/output_surface_unittest.cc ('k') | cc/output/renderer_pixeltest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "cc/base/region.h" 5 #include "cc/base/region.h"
6 #include "cc/output/compositor_frame_metadata.h" 6 #include "cc/output/compositor_frame_metadata.h"
7 #include "cc/output/gl_renderer.h" 7 #include "cc/output/gl_renderer.h"
8 #include "cc/output/output_surface.h" 8 #include "cc/output/output_surface.h"
9 #include "cc/output/output_surface_client.h" 9 #include "cc/output/output_surface_client.h"
10 #include "cc/output/overlay_candidate_validator.h" 10 #include "cc/output/overlay_candidate_validator.h"
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 187
188 scoped_ptr<RenderPass> pass = RenderPass::Create(); 188 scoped_ptr<RenderPass> pass = RenderPass::Create();
189 pass->SetAll(id, 189 pass->SetAll(id,
190 output_rect, 190 output_rect,
191 output_rect, 191 output_rect,
192 gfx::Transform(), 192 gfx::Transform(),
193 has_transparent_background); 193 has_transparent_background);
194 194
195 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 195 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
196 shared_state->opacity = 1.f; 196 shared_state->opacity = 1.f;
197 return pass.Pass(); 197 return pass;
198 } 198 }
199 199
200 ResourceId CreateResource(ResourceProvider* resource_provider, 200 ResourceId CreateResource(ResourceProvider* resource_provider,
201 const gfx::Size& size, 201 const gfx::Size& size,
202 bool is_overlay_candidate) { 202 bool is_overlay_candidate) {
203 TextureMailbox mailbox = 203 TextureMailbox mailbox =
204 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D, 204 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D,
205 size, is_overlay_candidate); 205 size, is_overlay_candidate);
206 scoped_ptr<SingleReleaseCallbackImpl> release_callback = 206 scoped_ptr<SingleReleaseCallbackImpl> release_callback =
207 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); 207 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased));
208 208
209 return resource_provider->CreateResourceFromTextureMailbox( 209 return resource_provider->CreateResourceFromTextureMailbox(
210 mailbox, release_callback.Pass()); 210 mailbox, std::move(release_callback));
211 } 211 }
212 212
213 SolidColorDrawQuad* CreateSolidColorQuadAt( 213 SolidColorDrawQuad* CreateSolidColorQuadAt(
214 const SharedQuadState* shared_quad_state, 214 const SharedQuadState* shared_quad_state,
215 SkColor color, 215 SkColor color,
216 RenderPass* render_pass, 216 RenderPass* render_pass,
217 const gfx::Rect& rect) { 217 const gfx::Rect& rect) {
218 SolidColorDrawQuad* quad = 218 SolidColorDrawQuad* quad =
219 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 219 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
220 quad->SetNew(shared_quad_state, rect, rect, color, false); 220 quad->SetNew(shared_quad_state, rect, rect, color, false);
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 pass.get()); 401 pass.get());
402 unsigned original_resource_id = original_quad->resource_id(); 402 unsigned original_resource_id = original_quad->resource_id();
403 403
404 // Add something behind it. 404 // Add something behind it.
405 CreateFullscreenOpaqueQuad(resource_provider_.get(), 405 CreateFullscreenOpaqueQuad(resource_provider_.get(),
406 pass->shared_quad_state_list.back(), pass.get()); 406 pass->shared_quad_state_list.back(), pass.get());
407 CreateFullscreenOpaqueQuad(resource_provider_.get(), 407 CreateFullscreenOpaqueQuad(resource_provider_.get(),
408 pass->shared_quad_state_list.back(), pass.get()); 408 pass->shared_quad_state_list.back(), pass.get());
409 409
410 RenderPassList pass_list; 410 RenderPassList pass_list;
411 pass_list.push_back(pass.Pass()); 411 pass_list.push_back(std::move(pass));
412 412
413 // Check for potential candidates. 413 // Check for potential candidates.
414 OverlayCandidateList candidate_list; 414 OverlayCandidateList candidate_list;
415 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 415 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
416 &candidate_list, &damage_rect_); 416 &candidate_list, &damage_rect_);
417 417
418 ASSERT_EQ(1U, pass_list.size()); 418 ASSERT_EQ(1U, pass_list.size());
419 ASSERT_EQ(1U, candidate_list.size()); 419 ASSERT_EQ(1U, candidate_list.size());
420 420
421 RenderPass* main_pass = pass_list.back().get(); 421 RenderPass* main_pass = pass_list.back().get();
(...skipping 21 matching lines...) Expand all
443 original_quad->uv_bottom_right = gfx::PointF(1, 1); 443 original_quad->uv_bottom_right = gfx::PointF(1, 1);
444 unsigned candidate_id = original_quad->resource_id(); 444 unsigned candidate_id = original_quad->resource_id();
445 445
446 // Add something behind it. 446 // Add something behind it.
447 CreateFullscreenOpaqueQuad(resource_provider_.get(), 447 CreateFullscreenOpaqueQuad(resource_provider_.get(),
448 pass->shared_quad_state_list.back(), pass.get()); 448 pass->shared_quad_state_list.back(), pass.get());
449 CreateFullscreenOpaqueQuad(resource_provider_.get(), 449 CreateFullscreenOpaqueQuad(resource_provider_.get(),
450 pass->shared_quad_state_list.back(), pass.get()); 450 pass->shared_quad_state_list.back(), pass.get());
451 451
452 RenderPassList pass_list; 452 RenderPassList pass_list;
453 pass_list.push_back(pass.Pass()); 453 pass_list.push_back(std::move(pass));
454 454
455 // Check for potential candidates. 455 // Check for potential candidates.
456 OverlayCandidateList candidate_list; 456 OverlayCandidateList candidate_list;
457 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 457 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
458 &candidate_list, &damage_rect_); 458 &candidate_list, &damage_rect_);
459 459
460 // Ensure that the display and uv rects have cropping applied to them. 460 // Ensure that the display and uv rects have cropping applied to them.
461 ASSERT_EQ(1U, pass_list.size()); 461 ASSERT_EQ(1U, pass_list.size());
462 ASSERT_EQ(1U, candidate_list.size()); 462 ASSERT_EQ(1U, candidate_list.size());
463 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); 463 EXPECT_EQ(candidate_id, candidate_list[0].resource_id);
(...skipping 10 matching lines...) Expand all
474 kOverlayTopLeftRect); 474 kOverlayTopLeftRect);
475 CreateCandidateQuadAt(resource_provider_.get(), 475 CreateCandidateQuadAt(resource_provider_.get(),
476 pass->shared_quad_state_list.back(), pass.get(), 476 pass->shared_quad_state_list.back(), pass.get(),
477 kOverlayBottomRightRect); 477 kOverlayBottomRightRect);
478 478
479 // Add something behind it. 479 // Add something behind it.
480 CreateFullscreenOpaqueQuad(resource_provider_.get(), 480 CreateFullscreenOpaqueQuad(resource_provider_.get(),
481 pass->shared_quad_state_list.back(), pass.get()); 481 pass->shared_quad_state_list.back(), pass.get());
482 482
483 RenderPassList pass_list; 483 RenderPassList pass_list;
484 pass_list.push_back(pass.Pass()); 484 pass_list.push_back(std::move(pass));
485 OverlayCandidateList candidate_list; 485 OverlayCandidateList candidate_list;
486 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 486 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
487 &candidate_list, &damage_rect_); 487 &candidate_list, &damage_rect_);
488 488
489 // Both candidates should become overlays. 489 // Both candidates should become overlays.
490 EXPECT_EQ(1u, pass_list.size()); 490 EXPECT_EQ(1u, pass_list.size());
491 EXPECT_EQ(2u, candidate_list.size()); 491 EXPECT_EQ(2u, candidate_list.size());
492 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); 492 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect);
493 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), 493 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect),
494 candidate_list[1].display_rect); 494 candidate_list[1].display_rect);
(...skipping 13 matching lines...) Expand all
508 kOverlayTopLeftRect); 508 kOverlayTopLeftRect);
509 CreateCandidateQuadAt(resource_provider_.get(), 509 CreateCandidateQuadAt(resource_provider_.get(),
510 pass->shared_quad_state_list.back(), pass.get(), 510 pass->shared_quad_state_list.back(), pass.get(),
511 kOverlayRect); 511 kOverlayRect);
512 512
513 // Add something behind it. 513 // Add something behind it.
514 CreateFullscreenOpaqueQuad(resource_provider_.get(), 514 CreateFullscreenOpaqueQuad(resource_provider_.get(),
515 pass->shared_quad_state_list.back(), pass.get()); 515 pass->shared_quad_state_list.back(), pass.get());
516 516
517 RenderPassList pass_list; 517 RenderPassList pass_list;
518 pass_list.push_back(pass.Pass()); 518 pass_list.push_back(std::move(pass));
519 OverlayCandidateList candidate_list; 519 OverlayCandidateList candidate_list;
520 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 520 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
521 &candidate_list, &damage_rect_); 521 &candidate_list, &damage_rect_);
522 522
523 // Only one of the candidates should become an overlay. 523 // Only one of the candidates should become an overlay.
524 EXPECT_EQ(1u, pass_list.size()); 524 EXPECT_EQ(1u, pass_list.size());
525 EXPECT_EQ(1u, candidate_list.size()); 525 EXPECT_EQ(1u, candidate_list.size());
526 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); 526 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect);
527 527
528 // One of the overlay quads should be gone. 528 // One of the overlay quads should be gone.
(...skipping 12 matching lines...) Expand all
541 unsigned candidate_id = 541 unsigned candidate_id =
542 CreateCandidateQuadAt(resource_provider_.get(), 542 CreateCandidateQuadAt(resource_provider_.get(),
543 pass->shared_quad_state_list.back(), pass.get(), 543 pass->shared_quad_state_list.back(), pass.get(),
544 gfx::Rect(32, 32, 32, 32)) 544 gfx::Rect(32, 32, 32, 32))
545 ->resource_id(); 545 ->resource_id();
546 CreateOpaqueQuadAt(resource_provider_.get(), 546 CreateOpaqueQuadAt(resource_provider_.get(),
547 pass->shared_quad_state_list.back(), pass.get(), 547 pass->shared_quad_state_list.back(), pass.get(),
548 gfx::Rect(kDisplaySize)); 548 gfx::Rect(kDisplaySize));
549 549
550 RenderPassList pass_list; 550 RenderPassList pass_list;
551 pass_list.push_back(pass.Pass()); 551 pass_list.push_back(std::move(pass));
552 552
553 // Check for potential candidates. 553 // Check for potential candidates.
554 OverlayCandidateList candidate_list; 554 OverlayCandidateList candidate_list;
555 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 555 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
556 &candidate_list, &damage_rect_); 556 &candidate_list, &damage_rect_);
557 ASSERT_EQ(1U, pass_list.size()); 557 ASSERT_EQ(1U, pass_list.size());
558 ASSERT_EQ(2U, candidate_list.size()); 558 ASSERT_EQ(2U, candidate_list.size());
559 559
560 RenderPass* main_pass = pass_list.back().get(); 560 RenderPass* main_pass = pass_list.back().get();
561 // Check that the quad is gone. 561 // Check that the quad is gone.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 pass->shared_quad_state_list.back(), pass.get(), 594 pass->shared_quad_state_list.back(), pass.get(),
595 gfx::Rect(0, 0, 64, 64)) 595 gfx::Rect(0, 0, 64, 64))
596 ->resource_id(); 596 ->resource_id();
597 597
598 // Then some opaque background. 598 // Then some opaque background.
599 CreateOpaqueQuadAt(resource_provider_.get(), 599 CreateOpaqueQuadAt(resource_provider_.get(),
600 pass->shared_quad_state_list.back(), pass.get(), 600 pass->shared_quad_state_list.back(), pass.get(),
601 gfx::Rect(kDisplaySize)); 601 gfx::Rect(kDisplaySize));
602 602
603 RenderPassList pass_list; 603 RenderPassList pass_list;
604 pass_list.push_back(pass.Pass()); 604 pass_list.push_back(std::move(pass));
605 605
606 // Run the overlay strategy on that input. 606 // Run the overlay strategy on that input.
607 RenderPass* main_pass = pass_list.back().get(); 607 RenderPass* main_pass = pass_list.back().get();
608 OverlayCandidateList candidate_list; 608 OverlayCandidateList candidate_list;
609 EXPECT_EQ(4U, main_pass->quad_list.size()); 609 EXPECT_EQ(4U, main_pass->quad_list.size());
610 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 610 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
611 &candidate_list, &damage_rect_); 611 &candidate_list, &damage_rect_);
612 ASSERT_EQ(1U, pass_list.size()); 612 ASSERT_EQ(1U, pass_list.size());
613 ASSERT_EQ(3U, candidate_list.size()); 613 ASSERT_EQ(3U, candidate_list.size());
614 614
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 648
649 damage_rect_ = kOverlayRect; 649 damage_rect_ = kOverlayRect;
650 650
651 // Add something behind it. 651 // Add something behind it.
652 CreateFullscreenOpaqueQuad(resource_provider_.get(), 652 CreateFullscreenOpaqueQuad(resource_provider_.get(),
653 pass->shared_quad_state_list.back(), pass.get()); 653 pass->shared_quad_state_list.back(), pass.get());
654 CreateFullscreenOpaqueQuad(resource_provider_.get(), 654 CreateFullscreenOpaqueQuad(resource_provider_.get(),
655 pass->shared_quad_state_list.back(), pass.get()); 655 pass->shared_quad_state_list.back(), pass.get());
656 656
657 RenderPassList pass_list; 657 RenderPassList pass_list;
658 pass_list.push_back(pass.Pass()); 658 pass_list.push_back(std::move(pass));
659 659
660 // Check for potential candidates. 660 // Check for potential candidates.
661 OverlayCandidateList candidate_list; 661 OverlayCandidateList candidate_list;
662 662
663 // Primary plane. 663 // Primary plane.
664 OverlayCandidate output_surface_plane; 664 OverlayCandidate output_surface_plane;
665 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); 665 output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
666 output_surface_plane.quad_rect_in_target_space = kOverlayRect; 666 output_surface_plane.quad_rect_in_target_space = kOverlayRect;
667 output_surface_plane.use_output_surface_for_resource = true; 667 output_surface_plane.use_output_surface_for_resource = true;
668 output_surface_plane.overlay_handled = true; 668 output_surface_plane.overlay_handled = true;
(...skipping 12 matching lines...) Expand all
681 pass.get()); 681 pass.get());
682 unsigned original_resource_id = original_quad->resource_id(); 682 unsigned original_resource_id = original_quad->resource_id();
683 683
684 // Add something behind it. 684 // Add something behind it.
685 CreateFullscreenOpaqueQuad(resource_provider_.get(), 685 CreateFullscreenOpaqueQuad(resource_provider_.get(),
686 pass->shared_quad_state_list.back(), pass.get()); 686 pass->shared_quad_state_list.back(), pass.get());
687 CreateFullscreenOpaqueQuad(resource_provider_.get(), 687 CreateFullscreenOpaqueQuad(resource_provider_.get(),
688 pass->shared_quad_state_list.back(), pass.get()); 688 pass->shared_quad_state_list.back(), pass.get());
689 689
690 RenderPassList pass_list; 690 RenderPassList pass_list;
691 pass_list.push_back(pass.Pass()); 691 pass_list.push_back(std::move(pass));
692 692
693 // Check for potential candidates. 693 // Check for potential candidates.
694 OverlayCandidateList candidate_list; 694 OverlayCandidateList candidate_list;
695 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 695 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
696 &candidate_list, &damage_rect_); 696 &candidate_list, &damage_rect_);
697 697
698 ASSERT_EQ(1U, pass_list.size()); 698 ASSERT_EQ(1U, pass_list.size());
699 ASSERT_EQ(1U, candidate_list.size()); 699 ASSERT_EQ(1U, candidate_list.size());
700 700
701 RenderPass* main_pass = pass_list.back().get(); 701 RenderPass* main_pass = pass_list.back().get();
(...skipping 17 matching lines...) Expand all
719 pass.get()); 719 pass.get());
720 damage_rect_ = kOverlayRect; 720 damage_rect_ = kOverlayRect;
721 721
722 // Add something behind it. 722 // Add something behind it.
723 CreateFullscreenOpaqueQuad(resource_provider_.get(), 723 CreateFullscreenOpaqueQuad(resource_provider_.get(),
724 pass->shared_quad_state_list.back(), pass.get()); 724 pass->shared_quad_state_list.back(), pass.get());
725 CreateFullscreenOpaqueQuad(resource_provider_.get(), 725 CreateFullscreenOpaqueQuad(resource_provider_.get(),
726 pass->shared_quad_state_list.back(), pass.get()); 726 pass->shared_quad_state_list.back(), pass.get());
727 727
728 RenderPassList pass_list; 728 RenderPassList pass_list;
729 pass_list.push_back(pass.Pass()); 729 pass_list.push_back(std::move(pass));
730 730
731 // Check for potential candidates. 731 // Check for potential candidates.
732 OverlayCandidateList candidate_list; 732 OverlayCandidateList candidate_list;
733 733
734 // Primary plane. 734 // Primary plane.
735 OverlayCandidate output_surface_plane; 735 OverlayCandidate output_surface_plane;
736 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); 736 output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
737 output_surface_plane.quad_rect_in_target_space = kOverlayRect; 737 output_surface_plane.quad_rect_in_target_space = kOverlayRect;
738 output_surface_plane.use_output_surface_for_resource = true; 738 output_surface_plane.use_output_surface_for_resource = true;
739 output_surface_plane.overlay_handled = true; 739 output_surface_plane.overlay_handled = true;
740 candidate_list.push_back(output_surface_plane); 740 candidate_list.push_back(output_surface_plane);
741 741
742 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 742 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
743 &candidate_list, &damage_rect_); 743 &candidate_list, &damage_rect_);
744 DCHECK(damage_rect_.IsEmpty()); 744 DCHECK(damage_rect_.IsEmpty());
745 } 745 }
746 746
747 TEST_F(SingleOverlayOnTopTest, NoCandidates) { 747 TEST_F(SingleOverlayOnTopTest, NoCandidates) {
748 scoped_ptr<RenderPass> pass = CreateRenderPass(); 748 scoped_ptr<RenderPass> pass = CreateRenderPass();
749 CreateFullscreenOpaqueQuad(resource_provider_.get(), 749 CreateFullscreenOpaqueQuad(resource_provider_.get(),
750 pass->shared_quad_state_list.back(), pass.get()); 750 pass->shared_quad_state_list.back(), pass.get());
751 CreateFullscreenOpaqueQuad(resource_provider_.get(), 751 CreateFullscreenOpaqueQuad(resource_provider_.get(),
752 pass->shared_quad_state_list.back(), pass.get()); 752 pass->shared_quad_state_list.back(), pass.get());
753 753
754 RenderPassList pass_list; 754 RenderPassList pass_list;
755 pass_list.push_back(pass.Pass()); 755 pass_list.push_back(std::move(pass));
756 756
757 RenderPassList original_pass_list; 757 RenderPassList original_pass_list;
758 RenderPass::CopyAll(pass_list, &original_pass_list); 758 RenderPass::CopyAll(pass_list, &original_pass_list);
759 759
760 OverlayCandidateList candidate_list; 760 OverlayCandidateList candidate_list;
761 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 761 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
762 &candidate_list, &damage_rect_); 762 &candidate_list, &damage_rect_);
763 EXPECT_EQ(0U, candidate_list.size()); 763 EXPECT_EQ(0U, candidate_list.size());
764 // There should be nothing new here. 764 // There should be nothing new here.
765 CompareRenderPassLists(pass_list, original_pass_list); 765 CompareRenderPassLists(pass_list, original_pass_list);
766 } 766 }
767 767
768 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { 768 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
769 scoped_ptr<RenderPass> pass = CreateRenderPass(); 769 scoped_ptr<RenderPass> pass = CreateRenderPass();
770 CreateFullscreenOpaqueQuad(resource_provider_.get(), 770 CreateFullscreenOpaqueQuad(resource_provider_.get(),
771 pass->shared_quad_state_list.back(), pass.get()); 771 pass->shared_quad_state_list.back(), pass.get());
772 CreateFullscreenOpaqueQuad(resource_provider_.get(), 772 CreateFullscreenOpaqueQuad(resource_provider_.get(),
773 pass->shared_quad_state_list.back(), pass.get()); 773 pass->shared_quad_state_list.back(), pass.get());
774 774
775 CreateFullscreenCandidateQuad(resource_provider_.get(), 775 CreateFullscreenCandidateQuad(resource_provider_.get(),
776 pass->shared_quad_state_list.back(), 776 pass->shared_quad_state_list.back(),
777 pass.get()); 777 pass.get());
778 778
779 RenderPassList pass_list; 779 RenderPassList pass_list;
780 pass_list.push_back(pass.Pass()); 780 pass_list.push_back(std::move(pass));
781 781
782 RenderPassList original_pass_list; 782 RenderPassList original_pass_list;
783 RenderPass::CopyAll(pass_list, &original_pass_list); 783 RenderPass::CopyAll(pass_list, &original_pass_list);
784 784
785 OverlayCandidateList candidate_list; 785 OverlayCandidateList candidate_list;
786 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 786 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
787 &candidate_list, &damage_rect_); 787 &candidate_list, &damage_rect_);
788 EXPECT_EQ(0U, candidate_list.size()); 788 EXPECT_EQ(0U, candidate_list.size());
789 // There should be nothing new here. 789 // There should be nothing new here.
790 CompareRenderPassLists(pass_list, original_pass_list); 790 CompareRenderPassLists(pass_list, original_pass_list);
791 } 791 }
792 792
793 // Test with multiple render passes. 793 // Test with multiple render passes.
794 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { 794 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
795 RenderPassList pass_list; 795 RenderPassList pass_list;
796 pass_list.push_back(CreateRenderPass()); 796 pass_list.push_back(CreateRenderPass());
797 797
798 scoped_ptr<RenderPass> pass = CreateRenderPass(); 798 scoped_ptr<RenderPass> pass = CreateRenderPass();
799 CreateFullscreenCandidateQuad(resource_provider_.get(), 799 CreateFullscreenCandidateQuad(resource_provider_.get(),
800 pass->shared_quad_state_list.back(), 800 pass->shared_quad_state_list.back(),
801 pass.get()); 801 pass.get());
802 802
803 // Add something behind it. 803 // Add something behind it.
804 CreateFullscreenOpaqueQuad(resource_provider_.get(), 804 CreateFullscreenOpaqueQuad(resource_provider_.get(),
805 pass->shared_quad_state_list.back(), pass.get()); 805 pass->shared_quad_state_list.back(), pass.get());
806 CreateFullscreenOpaqueQuad(resource_provider_.get(), 806 CreateFullscreenOpaqueQuad(resource_provider_.get(),
807 pass->shared_quad_state_list.back(), pass.get()); 807 pass->shared_quad_state_list.back(), pass.get());
808 808
809 pass_list.push_back(pass.Pass()); 809 pass_list.push_back(std::move(pass));
810 810
811 RenderPassList original_pass_list; 811 RenderPassList original_pass_list;
812 RenderPass::CopyAll(pass_list, &original_pass_list); 812 RenderPass::CopyAll(pass_list, &original_pass_list);
813 813
814 // Check for potential candidates. 814 // Check for potential candidates.
815 OverlayCandidateList candidate_list; 815 OverlayCandidateList candidate_list;
816 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 816 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
817 &candidate_list, &damage_rect_); 817 &candidate_list, &damage_rect_);
818 EXPECT_EQ(1U, candidate_list.size()); 818 EXPECT_EQ(1U, candidate_list.size());
819 819
820 // This should be the same. 820 // This should be the same.
821 ASSERT_EQ(2U, pass_list.size()); 821 ASSERT_EQ(2U, pass_list.size());
822 } 822 }
823 823
824 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { 824 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) {
825 scoped_ptr<RenderPass> pass = CreateRenderPass(); 825 scoped_ptr<RenderPass> pass = CreateRenderPass();
826 TextureDrawQuad* quad = 826 TextureDrawQuad* quad =
827 CreateFullscreenCandidateQuad(resource_provider_.get(), 827 CreateFullscreenCandidateQuad(resource_provider_.get(),
828 pass->shared_quad_state_list.back(), 828 pass->shared_quad_state_list.back(),
829 pass.get()); 829 pass.get());
830 quad->premultiplied_alpha = true; 830 quad->premultiplied_alpha = true;
831 831
832 RenderPassList pass_list; 832 RenderPassList pass_list;
833 pass_list.push_back(pass.Pass()); 833 pass_list.push_back(std::move(pass));
834 OverlayCandidateList candidate_list; 834 OverlayCandidateList candidate_list;
835 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 835 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
836 &candidate_list, &damage_rect_); 836 &candidate_list, &damage_rect_);
837 EXPECT_EQ(1U, pass_list.size()); 837 EXPECT_EQ(1U, pass_list.size());
838 EXPECT_EQ(0U, candidate_list.size()); 838 EXPECT_EQ(0U, candidate_list.size());
839 } 839 }
840 840
841 TEST_F(SingleOverlayOnTopTest, RejectBlending) { 841 TEST_F(SingleOverlayOnTopTest, RejectBlending) {
842 scoped_ptr<RenderPass> pass = CreateRenderPass(); 842 scoped_ptr<RenderPass> pass = CreateRenderPass();
843 TextureDrawQuad* quad = 843 TextureDrawQuad* quad =
844 CreateFullscreenCandidateQuad(resource_provider_.get(), 844 CreateFullscreenCandidateQuad(resource_provider_.get(),
845 pass->shared_quad_state_list.back(), 845 pass->shared_quad_state_list.back(),
846 pass.get()); 846 pass.get());
847 quad->needs_blending = true; 847 quad->needs_blending = true;
848 848
849 RenderPassList pass_list; 849 RenderPassList pass_list;
850 pass_list.push_back(pass.Pass()); 850 pass_list.push_back(std::move(pass));
851 OverlayCandidateList candidate_list; 851 OverlayCandidateList candidate_list;
852 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 852 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
853 &candidate_list, &damage_rect_); 853 &candidate_list, &damage_rect_);
854 ASSERT_EQ(1U, pass_list.size()); 854 ASSERT_EQ(1U, pass_list.size());
855 EXPECT_EQ(0U, candidate_list.size()); 855 EXPECT_EQ(0U, candidate_list.size());
856 } 856 }
857 857
858 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { 858 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
859 scoped_ptr<RenderPass> pass = CreateRenderPass(); 859 scoped_ptr<RenderPass> pass = CreateRenderPass();
860 TextureDrawQuad* quad = 860 TextureDrawQuad* quad =
861 CreateFullscreenCandidateQuad(resource_provider_.get(), 861 CreateFullscreenCandidateQuad(resource_provider_.get(),
862 pass->shared_quad_state_list.back(), 862 pass->shared_quad_state_list.back(),
863 pass.get()); 863 pass.get());
864 quad->background_color = SK_ColorBLACK; 864 quad->background_color = SK_ColorBLACK;
865 865
866 RenderPassList pass_list; 866 RenderPassList pass_list;
867 pass_list.push_back(pass.Pass()); 867 pass_list.push_back(std::move(pass));
868 OverlayCandidateList candidate_list; 868 OverlayCandidateList candidate_list;
869 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 869 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
870 &candidate_list, &damage_rect_); 870 &candidate_list, &damage_rect_);
871 ASSERT_EQ(1U, pass_list.size()); 871 ASSERT_EQ(1U, pass_list.size());
872 EXPECT_EQ(0U, candidate_list.size()); 872 EXPECT_EQ(0U, candidate_list.size());
873 } 873 }
874 874
875 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { 875 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
876 scoped_ptr<RenderPass> pass = CreateRenderPass(); 876 scoped_ptr<RenderPass> pass = CreateRenderPass();
877 CreateFullscreenCandidateQuad(resource_provider_.get(), 877 CreateFullscreenCandidateQuad(resource_provider_.get(),
878 pass->shared_quad_state_list.back(), 878 pass->shared_quad_state_list.back(),
879 pass.get()); 879 pass.get());
880 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; 880 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode;
881 881
882 RenderPassList pass_list; 882 RenderPassList pass_list;
883 pass_list.push_back(pass.Pass()); 883 pass_list.push_back(std::move(pass));
884 OverlayCandidateList candidate_list; 884 OverlayCandidateList candidate_list;
885 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 885 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
886 &candidate_list, &damage_rect_); 886 &candidate_list, &damage_rect_);
887 ASSERT_EQ(1U, pass_list.size()); 887 ASSERT_EQ(1U, pass_list.size());
888 EXPECT_EQ(0U, candidate_list.size()); 888 EXPECT_EQ(0U, candidate_list.size());
889 } 889 }
890 890
891 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { 891 TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
892 scoped_ptr<RenderPass> pass = CreateRenderPass(); 892 scoped_ptr<RenderPass> pass = CreateRenderPass();
893 CreateFullscreenCandidateQuad(resource_provider_.get(), 893 CreateFullscreenCandidateQuad(resource_provider_.get(),
894 pass->shared_quad_state_list.back(), 894 pass->shared_quad_state_list.back(),
895 pass.get()); 895 pass.get());
896 pass->shared_quad_state_list.back()->opacity = 0.5f; 896 pass->shared_quad_state_list.back()->opacity = 0.5f;
897 897
898 RenderPassList pass_list; 898 RenderPassList pass_list;
899 pass_list.push_back(pass.Pass()); 899 pass_list.push_back(std::move(pass));
900 OverlayCandidateList candidate_list; 900 OverlayCandidateList candidate_list;
901 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 901 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
902 &candidate_list, &damage_rect_); 902 &candidate_list, &damage_rect_);
903 ASSERT_EQ(1U, pass_list.size()); 903 ASSERT_EQ(1U, pass_list.size());
904 EXPECT_EQ(0U, candidate_list.size()); 904 EXPECT_EQ(0U, candidate_list.size());
905 } 905 }
906 906
907 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { 907 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
908 scoped_ptr<RenderPass> pass = CreateRenderPass(); 908 scoped_ptr<RenderPass> pass = CreateRenderPass();
909 CreateFullscreenCandidateQuad(resource_provider_.get(), 909 CreateFullscreenCandidateQuad(resource_provider_.get(),
910 pass->shared_quad_state_list.back(), 910 pass->shared_quad_state_list.back(),
911 pass.get()); 911 pass.get());
912 pass->shared_quad_state_list.back() 912 pass->shared_quad_state_list.back()
913 ->quad_to_target_transform.RotateAboutXAxis(45.f); 913 ->quad_to_target_transform.RotateAboutXAxis(45.f);
914 914
915 RenderPassList pass_list; 915 RenderPassList pass_list;
916 pass_list.push_back(pass.Pass()); 916 pass_list.push_back(std::move(pass));
917 OverlayCandidateList candidate_list; 917 OverlayCandidateList candidate_list;
918 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 918 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
919 &candidate_list, &damage_rect_); 919 &candidate_list, &damage_rect_);
920 ASSERT_EQ(1U, pass_list.size()); 920 ASSERT_EQ(1U, pass_list.size());
921 EXPECT_EQ(0U, candidate_list.size()); 921 EXPECT_EQ(0U, candidate_list.size());
922 } 922 }
923 923
924 TEST_F(SingleOverlayOnTopTest, AllowClipped) { 924 TEST_F(SingleOverlayOnTopTest, AllowClipped) {
925 scoped_ptr<RenderPass> pass = CreateRenderPass(); 925 scoped_ptr<RenderPass> pass = CreateRenderPass();
926 CreateFullscreenCandidateQuad(resource_provider_.get(), 926 CreateFullscreenCandidateQuad(resource_provider_.get(),
927 pass->shared_quad_state_list.back(), 927 pass->shared_quad_state_list.back(),
928 pass.get()); 928 pass.get());
929 pass->shared_quad_state_list.back()->is_clipped = true; 929 pass->shared_quad_state_list.back()->is_clipped = true;
930 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; 930 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect;
931 931
932 RenderPassList pass_list; 932 RenderPassList pass_list;
933 pass_list.push_back(pass.Pass()); 933 pass_list.push_back(std::move(pass));
934 OverlayCandidateList candidate_list; 934 OverlayCandidateList candidate_list;
935 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 935 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
936 &candidate_list, &damage_rect_); 936 &candidate_list, &damage_rect_);
937 ASSERT_EQ(1U, pass_list.size()); 937 ASSERT_EQ(1U, pass_list.size());
938 EXPECT_EQ(1U, candidate_list.size()); 938 EXPECT_EQ(1U, candidate_list.size());
939 } 939 }
940 940
941 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { 941 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) {
942 gfx::Rect rect = kOverlayRect; 942 gfx::Rect rect = kOverlayRect;
943 rect.set_width(rect.width() / 2); 943 rect.set_width(rect.width() / 2);
944 rect.Offset(0, -rect.height()); 944 rect.Offset(0, -rect.height());
945 scoped_ptr<RenderPass> pass = CreateRenderPass(); 945 scoped_ptr<RenderPass> pass = CreateRenderPass();
946 CreateCandidateQuadAt(resource_provider_.get(), 946 CreateCandidateQuadAt(resource_provider_.get(),
947 pass->shared_quad_state_list.back(), pass.get(), rect); 947 pass->shared_quad_state_list.back(), pass.get(), rect);
948 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 948 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
949 -1.0f); 949 -1.0f);
950 950
951 RenderPassList pass_list; 951 RenderPassList pass_list;
952 pass_list.push_back(pass.Pass()); 952 pass_list.push_back(std::move(pass));
953 OverlayCandidateList candidate_list; 953 OverlayCandidateList candidate_list;
954 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 954 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
955 &candidate_list, &damage_rect_); 955 &candidate_list, &damage_rect_);
956 ASSERT_EQ(1U, pass_list.size()); 956 ASSERT_EQ(1U, pass_list.size());
957 ASSERT_EQ(1U, candidate_list.size()); 957 ASSERT_EQ(1U, candidate_list.size());
958 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, 958 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL,
959 candidate_list.back().transform); 959 candidate_list.back().transform);
960 } 960 }
961 961
962 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { 962 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) {
963 gfx::Rect rect = kOverlayRect; 963 gfx::Rect rect = kOverlayRect;
964 rect.set_height(rect.height() / 2); 964 rect.set_height(rect.height() / 2);
965 rect.Offset(-rect.width(), 0); 965 rect.Offset(-rect.width(), 0);
966 scoped_ptr<RenderPass> pass = CreateRenderPass(); 966 scoped_ptr<RenderPass> pass = CreateRenderPass();
967 CreateCandidateQuadAt(resource_provider_.get(), 967 CreateCandidateQuadAt(resource_provider_.get(),
968 pass->shared_quad_state_list.back(), pass.get(), rect); 968 pass->shared_quad_state_list.back(), pass.get(), rect);
969 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, 969 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f,
970 2.0f); 970 2.0f);
971 971
972 RenderPassList pass_list; 972 RenderPassList pass_list;
973 pass_list.push_back(pass.Pass()); 973 pass_list.push_back(std::move(pass));
974 OverlayCandidateList candidate_list; 974 OverlayCandidateList candidate_list;
975 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 975 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
976 &candidate_list, &damage_rect_); 976 &candidate_list, &damage_rect_);
977 ASSERT_EQ(1U, pass_list.size()); 977 ASSERT_EQ(1U, pass_list.size());
978 ASSERT_EQ(1U, candidate_list.size()); 978 ASSERT_EQ(1U, candidate_list.size());
979 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, 979 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL,
980 candidate_list.back().transform); 980 candidate_list.back().transform);
981 } 981 }
982 982
983 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { 983 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) {
984 gfx::Rect rect = kOverlayRect; 984 gfx::Rect rect = kOverlayRect;
985 rect.set_width(rect.width() / 2); 985 rect.set_width(rect.width() / 2);
986 scoped_ptr<RenderPass> pass = CreateRenderPass(); 986 scoped_ptr<RenderPass> pass = CreateRenderPass();
987 CreateCandidateQuadAt(resource_provider_.get(), 987 CreateCandidateQuadAt(resource_provider_.get(),
988 pass->shared_quad_state_list.back(), pass.get(), rect); 988 pass->shared_quad_state_list.back(), pass.get(), rect);
989 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 989 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
990 1.0f); 990 1.0f);
991 991
992 RenderPassList pass_list; 992 RenderPassList pass_list;
993 pass_list.push_back(pass.Pass()); 993 pass_list.push_back(std::move(pass));
994 OverlayCandidateList candidate_list; 994 OverlayCandidateList candidate_list;
995 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 995 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
996 &candidate_list, &damage_rect_); 996 &candidate_list, &damage_rect_);
997 ASSERT_EQ(1U, pass_list.size()); 997 ASSERT_EQ(1U, pass_list.size());
998 EXPECT_EQ(1U, candidate_list.size()); 998 EXPECT_EQ(1U, candidate_list.size());
999 } 999 }
1000 1000
1001 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { 1001 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) {
1002 gfx::Rect rect = kOverlayRect; 1002 gfx::Rect rect = kOverlayRect;
1003 rect.Offset(0, -rect.height()); 1003 rect.Offset(0, -rect.height());
1004 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1004 scoped_ptr<RenderPass> pass = CreateRenderPass();
1005 CreateCandidateQuadAt(resource_provider_.get(), 1005 CreateCandidateQuadAt(resource_provider_.get(),
1006 pass->shared_quad_state_list.back(), pass.get(), rect); 1006 pass->shared_quad_state_list.back(), pass.get(), rect);
1007 pass->shared_quad_state_list.back() 1007 pass->shared_quad_state_list.back()
1008 ->quad_to_target_transform.RotateAboutZAxis(90.f); 1008 ->quad_to_target_transform.RotateAboutZAxis(90.f);
1009 1009
1010 RenderPassList pass_list; 1010 RenderPassList pass_list;
1011 pass_list.push_back(pass.Pass()); 1011 pass_list.push_back(std::move(pass));
1012 OverlayCandidateList candidate_list; 1012 OverlayCandidateList candidate_list;
1013 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1013 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1014 &candidate_list, &damage_rect_); 1014 &candidate_list, &damage_rect_);
1015 ASSERT_EQ(1U, pass_list.size()); 1015 ASSERT_EQ(1U, pass_list.size());
1016 ASSERT_EQ(1U, candidate_list.size()); 1016 ASSERT_EQ(1U, candidate_list.size());
1017 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); 1017 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform);
1018 } 1018 }
1019 1019
1020 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { 1020 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) {
1021 gfx::Rect rect = kOverlayRect; 1021 gfx::Rect rect = kOverlayRect;
1022 rect.Offset(-rect.width(), -rect.height()); 1022 rect.Offset(-rect.width(), -rect.height());
1023 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1023 scoped_ptr<RenderPass> pass = CreateRenderPass();
1024 CreateCandidateQuadAt(resource_provider_.get(), 1024 CreateCandidateQuadAt(resource_provider_.get(),
1025 pass->shared_quad_state_list.back(), pass.get(), rect); 1025 pass->shared_quad_state_list.back(), pass.get(), rect);
1026 pass->shared_quad_state_list.back() 1026 pass->shared_quad_state_list.back()
1027 ->quad_to_target_transform.RotateAboutZAxis(180.f); 1027 ->quad_to_target_transform.RotateAboutZAxis(180.f);
1028 1028
1029 RenderPassList pass_list; 1029 RenderPassList pass_list;
1030 pass_list.push_back(pass.Pass()); 1030 pass_list.push_back(std::move(pass));
1031 OverlayCandidateList candidate_list; 1031 OverlayCandidateList candidate_list;
1032 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1032 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1033 &candidate_list, &damage_rect_); 1033 &candidate_list, &damage_rect_);
1034 ASSERT_EQ(1U, pass_list.size()); 1034 ASSERT_EQ(1U, pass_list.size());
1035 ASSERT_EQ(1U, candidate_list.size()); 1035 ASSERT_EQ(1U, candidate_list.size());
1036 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); 1036 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform);
1037 } 1037 }
1038 1038
1039 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { 1039 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) {
1040 gfx::Rect rect = kOverlayRect; 1040 gfx::Rect rect = kOverlayRect;
1041 rect.Offset(-rect.width(), 0); 1041 rect.Offset(-rect.width(), 0);
1042 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1042 scoped_ptr<RenderPass> pass = CreateRenderPass();
1043 CreateCandidateQuadAt(resource_provider_.get(), 1043 CreateCandidateQuadAt(resource_provider_.get(),
1044 pass->shared_quad_state_list.back(), pass.get(), rect); 1044 pass->shared_quad_state_list.back(), pass.get(), rect);
1045 pass->shared_quad_state_list.back() 1045 pass->shared_quad_state_list.back()
1046 ->quad_to_target_transform.RotateAboutZAxis(270.f); 1046 ->quad_to_target_transform.RotateAboutZAxis(270.f);
1047 1047
1048 RenderPassList pass_list; 1048 RenderPassList pass_list;
1049 pass_list.push_back(pass.Pass()); 1049 pass_list.push_back(std::move(pass));
1050 OverlayCandidateList candidate_list; 1050 OverlayCandidateList candidate_list;
1051 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1051 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1052 &candidate_list, &damage_rect_); 1052 &candidate_list, &damage_rect_);
1053 ASSERT_EQ(1U, pass_list.size()); 1053 ASSERT_EQ(1U, pass_list.size());
1054 ASSERT_EQ(1U, candidate_list.size()); 1054 ASSERT_EQ(1U, candidate_list.size());
1055 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); 1055 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform);
1056 } 1056 }
1057 1057
1058 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { 1058 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
1059 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1059 scoped_ptr<RenderPass> pass = CreateRenderPass();
1060 CreateOpaqueQuadAt(resource_provider_.get(), 1060 CreateOpaqueQuadAt(resource_provider_.get(),
1061 pass->shared_quad_state_list.back(), pass.get(), 1061 pass->shared_quad_state_list.back(), pass.get(),
1062 kOverlayTopLeftRect); 1062 kOverlayTopLeftRect);
1063 CreateCandidateQuadAt(resource_provider_.get(), 1063 CreateCandidateQuadAt(resource_provider_.get(),
1064 pass->shared_quad_state_list.back(), 1064 pass->shared_quad_state_list.back(),
1065 pass.get(), 1065 pass.get(),
1066 kOverlayBottomRightRect); 1066 kOverlayBottomRightRect);
1067 1067
1068 RenderPassList pass_list; 1068 RenderPassList pass_list;
1069 pass_list.push_back(pass.Pass()); 1069 pass_list.push_back(std::move(pass));
1070 1070
1071 RenderPassList original_pass_list; 1071 RenderPassList original_pass_list;
1072 RenderPass::CopyAll(pass_list, &original_pass_list); 1072 RenderPass::CopyAll(pass_list, &original_pass_list);
1073 1073
1074 OverlayCandidateList candidate_list; 1074 OverlayCandidateList candidate_list;
1075 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1075 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1076 &candidate_list, &damage_rect_); 1076 &candidate_list, &damage_rect_);
1077 EXPECT_EQ(1U, pass_list.size()); 1077 EXPECT_EQ(1U, pass_list.size());
1078 EXPECT_EQ(1U, candidate_list.size()); 1078 EXPECT_EQ(1U, candidate_list.size());
1079 } 1079 }
1080 1080
1081 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { 1081 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
1082 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1082 scoped_ptr<RenderPass> pass = CreateRenderPass();
1083 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 1083 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
1084 shared_state->opacity = 0.f; 1084 shared_state->opacity = 0.f;
1085 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 1085 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
1086 kOverlayBottomRightRect); 1086 kOverlayBottomRightRect);
1087 shared_state = pass->CreateAndAppendSharedQuadState(); 1087 shared_state = pass->CreateAndAppendSharedQuadState();
1088 shared_state->opacity = 1.f; 1088 shared_state->opacity = 1.f;
1089 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 1089 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
1090 kOverlayBottomRightRect); 1090 kOverlayBottomRightRect);
1091 1091
1092 RenderPassList pass_list; 1092 RenderPassList pass_list;
1093 pass_list.push_back(pass.Pass()); 1093 pass_list.push_back(std::move(pass));
1094 1094
1095 RenderPassList original_pass_list; 1095 RenderPassList original_pass_list;
1096 RenderPass::CopyAll(pass_list, &original_pass_list); 1096 RenderPass::CopyAll(pass_list, &original_pass_list);
1097 1097
1098 OverlayCandidateList candidate_list; 1098 OverlayCandidateList candidate_list;
1099 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1099 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1100 &candidate_list, &damage_rect_); 1100 &candidate_list, &damage_rect_);
1101 EXPECT_EQ(1U, pass_list.size()); 1101 EXPECT_EQ(1U, pass_list.size());
1102 EXPECT_EQ(1U, candidate_list.size()); 1102 EXPECT_EQ(1U, candidate_list.size());
1103 } 1103 }
1104 1104
1105 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { 1105 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
1106 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1106 scoped_ptr<RenderPass> pass = CreateRenderPass();
1107 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), 1107 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(),
1108 SK_ColorTRANSPARENT, pass.get(), 1108 SK_ColorTRANSPARENT, pass.get(),
1109 kOverlayBottomRightRect); 1109 kOverlayBottomRightRect);
1110 CreateCandidateQuadAt(resource_provider_.get(), 1110 CreateCandidateQuadAt(resource_provider_.get(),
1111 pass->shared_quad_state_list.back(), pass.get(), 1111 pass->shared_quad_state_list.back(), pass.get(),
1112 kOverlayBottomRightRect); 1112 kOverlayBottomRightRect);
1113 1113
1114 RenderPassList pass_list; 1114 RenderPassList pass_list;
1115 pass_list.push_back(pass.Pass()); 1115 pass_list.push_back(std::move(pass));
1116 1116
1117 RenderPassList original_pass_list; 1117 RenderPassList original_pass_list;
1118 RenderPass::CopyAll(pass_list, &original_pass_list); 1118 RenderPass::CopyAll(pass_list, &original_pass_list);
1119 1119
1120 OverlayCandidateList candidate_list; 1120 OverlayCandidateList candidate_list;
1121 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1121 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1122 &candidate_list, &damage_rect_); 1122 &candidate_list, &damage_rect_);
1123 EXPECT_EQ(1U, pass_list.size()); 1123 EXPECT_EQ(1U, pass_list.size());
1124 EXPECT_EQ(1U, candidate_list.size()); 1124 EXPECT_EQ(1U, candidate_list.size());
1125 } 1125 }
1126 1126
1127 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { 1127 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
1128 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1128 scoped_ptr<RenderPass> pass = CreateRenderPass();
1129 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 1129 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
1130 shared_state->opacity = 0.5f; 1130 shared_state->opacity = 0.5f;
1131 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 1131 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
1132 kOverlayBottomRightRect); 1132 kOverlayBottomRightRect);
1133 shared_state = pass->CreateAndAppendSharedQuadState(); 1133 shared_state = pass->CreateAndAppendSharedQuadState();
1134 shared_state->opacity = 1.f; 1134 shared_state->opacity = 1.f;
1135 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 1135 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
1136 kOverlayBottomRightRect); 1136 kOverlayBottomRightRect);
1137 1137
1138 RenderPassList pass_list; 1138 RenderPassList pass_list;
1139 pass_list.push_back(pass.Pass()); 1139 pass_list.push_back(std::move(pass));
1140 1140
1141 RenderPassList original_pass_list; 1141 RenderPassList original_pass_list;
1142 RenderPass::CopyAll(pass_list, &original_pass_list); 1142 RenderPass::CopyAll(pass_list, &original_pass_list);
1143 1143
1144 OverlayCandidateList candidate_list; 1144 OverlayCandidateList candidate_list;
1145 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1145 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1146 &candidate_list, &damage_rect_); 1146 &candidate_list, &damage_rect_);
1147 EXPECT_EQ(1U, pass_list.size()); 1147 EXPECT_EQ(1U, pass_list.size());
1148 EXPECT_EQ(0U, candidate_list.size()); 1148 EXPECT_EQ(0U, candidate_list.size());
1149 } 1149 }
1150 1150
1151 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { 1151 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
1152 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1152 scoped_ptr<RenderPass> pass = CreateRenderPass();
1153 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 1153 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
1154 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), 1154 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(),
1155 kOverlayBottomRightRect)->opaque_rect = 1155 kOverlayBottomRightRect)->opaque_rect =
1156 kOverlayBottomRightRect; 1156 kOverlayBottomRightRect;
1157 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 1157 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
1158 kOverlayBottomRightRect); 1158 kOverlayBottomRightRect);
1159 1159
1160 RenderPassList pass_list; 1160 RenderPassList pass_list;
1161 pass_list.push_back(pass.Pass()); 1161 pass_list.push_back(std::move(pass));
1162 1162
1163 RenderPassList original_pass_list; 1163 RenderPassList original_pass_list;
1164 RenderPass::CopyAll(pass_list, &original_pass_list); 1164 RenderPass::CopyAll(pass_list, &original_pass_list);
1165 1165
1166 OverlayCandidateList candidate_list; 1166 OverlayCandidateList candidate_list;
1167 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1167 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1168 &candidate_list, &damage_rect_); 1168 &candidate_list, &damage_rect_);
1169 EXPECT_EQ(1U, pass_list.size()); 1169 EXPECT_EQ(1U, pass_list.size());
1170 EXPECT_EQ(0U, candidate_list.size()); 1170 EXPECT_EQ(0U, candidate_list.size());
1171 } 1171 }
1172 1172
1173 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { 1173 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
1174 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1174 scoped_ptr<RenderPass> pass = CreateRenderPass();
1175 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1175 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1176 pass->shared_quad_state_list.back(), 1176 pass->shared_quad_state_list.back(),
1177 pass.get(), kSwapTransform); 1177 pass.get(), kSwapTransform);
1178 1178
1179 RenderPassList pass_list; 1179 RenderPassList pass_list;
1180 pass_list.push_back(pass.Pass()); 1180 pass_list.push_back(std::move(pass));
1181 OverlayCandidateList candidate_list; 1181 OverlayCandidateList candidate_list;
1182 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1182 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1183 &candidate_list, &damage_rect_); 1183 &candidate_list, &damage_rect_);
1184 ASSERT_EQ(1U, pass_list.size()); 1184 ASSERT_EQ(1U, pass_list.size());
1185 EXPECT_EQ(0U, candidate_list.size()); 1185 EXPECT_EQ(0U, candidate_list.size());
1186 } 1186 }
1187 1187
1188 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { 1188 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) {
1189 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1189 scoped_ptr<RenderPass> pass = CreateRenderPass();
1190 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1190 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1191 pass->shared_quad_state_list.back(), 1191 pass->shared_quad_state_list.back(),
1192 pass.get(), kXMirrorTransform); 1192 pass.get(), kXMirrorTransform);
1193 1193
1194 RenderPassList pass_list; 1194 RenderPassList pass_list;
1195 pass_list.push_back(pass.Pass()); 1195 pass_list.push_back(std::move(pass));
1196 OverlayCandidateList candidate_list; 1196 OverlayCandidateList candidate_list;
1197 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1197 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1198 &candidate_list, &damage_rect_); 1198 &candidate_list, &damage_rect_);
1199 ASSERT_EQ(1U, pass_list.size()); 1199 ASSERT_EQ(1U, pass_list.size());
1200 EXPECT_EQ(1U, candidate_list.size()); 1200 EXPECT_EQ(1U, candidate_list.size());
1201 } 1201 }
1202 1202
1203 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { 1203 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) {
1204 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1204 scoped_ptr<RenderPass> pass = CreateRenderPass();
1205 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1205 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1206 pass->shared_quad_state_list.back(), 1206 pass->shared_quad_state_list.back(),
1207 pass.get(), kBothMirrorTransform); 1207 pass.get(), kBothMirrorTransform);
1208 1208
1209 RenderPassList pass_list; 1209 RenderPassList pass_list;
1210 pass_list.push_back(pass.Pass()); 1210 pass_list.push_back(std::move(pass));
1211 OverlayCandidateList candidate_list; 1211 OverlayCandidateList candidate_list;
1212 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1212 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1213 &candidate_list, &damage_rect_); 1213 &candidate_list, &damage_rect_);
1214 ASSERT_EQ(1U, pass_list.size()); 1214 ASSERT_EQ(1U, pass_list.size());
1215 EXPECT_EQ(1U, candidate_list.size()); 1215 EXPECT_EQ(1U, candidate_list.size());
1216 } 1216 }
1217 1217
1218 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { 1218 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) {
1219 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1219 scoped_ptr<RenderPass> pass = CreateRenderPass();
1220 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1220 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1221 pass->shared_quad_state_list.back(), 1221 pass->shared_quad_state_list.back(),
1222 pass.get(), kNormalTransform); 1222 pass.get(), kNormalTransform);
1223 1223
1224 RenderPassList pass_list; 1224 RenderPassList pass_list;
1225 pass_list.push_back(pass.Pass()); 1225 pass_list.push_back(std::move(pass));
1226 OverlayCandidateList candidate_list; 1226 OverlayCandidateList candidate_list;
1227 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1227 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1228 &candidate_list, &damage_rect_); 1228 &candidate_list, &damage_rect_);
1229 ASSERT_EQ(1U, pass_list.size()); 1229 ASSERT_EQ(1U, pass_list.size());
1230 EXPECT_EQ(1U, candidate_list.size()); 1230 EXPECT_EQ(1U, candidate_list.size());
1231 } 1231 }
1232 1232
1233 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { 1233 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) {
1234 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1234 scoped_ptr<RenderPass> pass = CreateRenderPass();
1235 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1235 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1236 pass->shared_quad_state_list.back(), 1236 pass->shared_quad_state_list.back(),
1237 pass.get(), kYMirrorTransform); 1237 pass.get(), kYMirrorTransform);
1238 1238
1239 RenderPassList pass_list; 1239 RenderPassList pass_list;
1240 pass_list.push_back(pass.Pass()); 1240 pass_list.push_back(std::move(pass));
1241 OverlayCandidateList candidate_list; 1241 OverlayCandidateList candidate_list;
1242 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1242 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1243 &candidate_list, &damage_rect_); 1243 &candidate_list, &damage_rect_);
1244 ASSERT_EQ(1U, pass_list.size()); 1244 ASSERT_EQ(1U, pass_list.size());
1245 EXPECT_EQ(1U, candidate_list.size()); 1245 EXPECT_EQ(1U, candidate_list.size());
1246 } 1246 }
1247 1247
1248 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { 1248 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) {
1249 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1249 scoped_ptr<RenderPass> pass = CreateRenderPass();
1250 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1250 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1251 pass->shared_quad_state_list.back(), pass.get()); 1251 pass->shared_quad_state_list.back(), pass.get());
1252 CreateCandidateQuadAt(resource_provider_.get(), 1252 CreateCandidateQuadAt(resource_provider_.get(),
1253 pass->shared_quad_state_list.back(), pass.get(), 1253 pass->shared_quad_state_list.back(), pass.get(),
1254 kOverlayBottomRightRect); 1254 kOverlayBottomRightRect);
1255 1255
1256 RenderPassList pass_list; 1256 RenderPassList pass_list;
1257 pass_list.push_back(pass.Pass()); 1257 pass_list.push_back(std::move(pass));
1258 1258
1259 OverlayCandidateList candidate_list; 1259 OverlayCandidateList candidate_list;
1260 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1260 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1261 &candidate_list, &damage_rect_); 1261 &candidate_list, &damage_rect_);
1262 EXPECT_EQ(1U, pass_list.size()); 1262 EXPECT_EQ(1U, pass_list.size());
1263 ASSERT_EQ(1U, candidate_list.size()); 1263 ASSERT_EQ(1U, candidate_list.size());
1264 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 1264 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
1265 EXPECT_EQ(2U, pass_list[0]->quad_list.size()); 1265 EXPECT_EQ(2U, pass_list[0]->quad_list.size());
1266 // The overlay quad should have changed to a SOLID_COLOR quad. 1266 // The overlay quad should have changed to a SOLID_COLOR quad.
1267 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR); 1267 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR);
1268 } 1268 }
1269 1269
1270 TEST_F(UnderlayTest, AllowOnTop) { 1270 TEST_F(UnderlayTest, AllowOnTop) {
1271 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1271 scoped_ptr<RenderPass> pass = CreateRenderPass();
1272 CreateFullscreenCandidateQuad(resource_provider_.get(), 1272 CreateFullscreenCandidateQuad(resource_provider_.get(),
1273 pass->shared_quad_state_list.back(), 1273 pass->shared_quad_state_list.back(),
1274 pass.get()); 1274 pass.get());
1275 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; 1275 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f;
1276 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1276 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1277 pass->shared_quad_state_list.back(), pass.get()); 1277 pass->shared_quad_state_list.back(), pass.get());
1278 1278
1279 RenderPassList pass_list; 1279 RenderPassList pass_list;
1280 pass_list.push_back(pass.Pass()); 1280 pass_list.push_back(std::move(pass));
1281 1281
1282 OverlayCandidateList candidate_list; 1282 OverlayCandidateList candidate_list;
1283 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, 1283 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
1284 &candidate_list, &damage_rect_); 1284 &candidate_list, &damage_rect_);
1285 EXPECT_EQ(1U, pass_list.size()); 1285 EXPECT_EQ(1U, pass_list.size());
1286 ASSERT_EQ(1U, candidate_list.size()); 1286 ASSERT_EQ(1U, candidate_list.size());
1287 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 1287 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
1288 // The overlay quad should have changed to a SOLID_COLOR quad. 1288 // The overlay quad should have changed to a SOLID_COLOR quad.
1289 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR); 1289 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR);
1290 } 1290 }
1291 1291
1292 TEST_F(UnderlayTest, DamageRect) { 1292 TEST_F(UnderlayTest, DamageRect) {
1293 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1293 scoped_ptr<RenderPass> pass = CreateRenderPass();
1294 CreateFullscreenCandidateQuad(resource_provider_.get(), 1294 CreateFullscreenCandidateQuad(resource_provider_.get(),
1295 pass->shared_quad_state_list.back(), 1295 pass->shared_quad_state_list.back(),
1296 pass.get()); 1296 pass.get());
1297 1297
1298 damage_rect_ = kOverlayRect; 1298 damage_rect_ = kOverlayRect;
1299 1299
1300 // Add something behind it. 1300 // Add something behind it.
1301 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1301 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1302 pass->shared_quad_state_list.back(), pass.get()); 1302 pass->shared_quad_state_list.back(), pass.get());
1303 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1303 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1304 pass->shared_quad_state_list.back(), pass.get()); 1304 pass->shared_quad_state_list.back(), pass.get());
1305 1305
1306 RenderPassList pass_list; 1306 RenderPassList pass_list;
1307 pass_list.push_back(pass.Pass()); 1307 pass_list.push_back(std::move(pass));
1308 1308
1309 // Check for potential candidates. 1309 // Check for potential candidates.
1310 OverlayCandidateList candidate_list; 1310 OverlayCandidateList candidate_list;
1311 1311
1312 // Primary plane. 1312 // Primary plane.
1313 OverlayCandidate output_surface_plane; 1313 OverlayCandidate output_surface_plane;
1314 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); 1314 output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
1315 output_surface_plane.quad_rect_in_target_space = kOverlayRect; 1315 output_surface_plane.quad_rect_in_target_space = kOverlayRect;
1316 output_surface_plane.use_output_surface_for_resource = true; 1316 output_surface_plane.use_output_surface_for_resource = true;
1317 output_surface_plane.overlay_handled = true; 1317 output_surface_plane.overlay_handled = true;
(...skipping 18 matching lines...) Expand all
1336 1336
1337 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { 1337 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) {
1338 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1338 scoped_ptr<RenderPass> pass = CreateRenderPass();
1339 CreateFullscreenCandidateQuad(resource_provider_.get(), 1339 CreateFullscreenCandidateQuad(resource_provider_.get(),
1340 pass->shared_quad_state_list.back(), 1340 pass->shared_quad_state_list.back(),
1341 pass.get()); 1341 pass.get());
1342 pass->shared_quad_state_list.back() 1342 pass->shared_quad_state_list.back()
1343 ->quad_to_target_transform.RotateAboutZAxis(45.f); 1343 ->quad_to_target_transform.RotateAboutZAxis(45.f);
1344 1344
1345 RenderPassList pass_list; 1345 RenderPassList pass_list;
1346 pass_list.push_back(pass.Pass()); 1346 pass_list.push_back(std::move(pass));
1347 CALayerOverlayList ca_layer_list; 1347 CALayerOverlayList ca_layer_list;
1348 OverlayCandidateList overlay_list( 1348 OverlayCandidateList overlay_list(
1349 BackbufferOverlayList(pass_list.back().get())); 1349 BackbufferOverlayList(pass_list.back().get()));
1350 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, 1350 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list,
1351 &ca_layer_list, &overlay_list); 1351 &ca_layer_list, &overlay_list);
1352 ASSERT_EQ(1U, pass_list.size()); 1352 ASSERT_EQ(1U, pass_list.size());
1353 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); 1353 EXPECT_EQ(0U, pass_list.back()->quad_list.size());
1354 EXPECT_EQ(0U, overlay_list.size()); 1354 EXPECT_EQ(0U, overlay_list.size());
1355 EXPECT_EQ(1U, ca_layer_list.size()); 1355 EXPECT_EQ(1U, ca_layer_list.size());
1356 } 1356 }
1357 1357
1358 TEST_F(CALayerOverlayTest, Disallow3DTransform) { 1358 TEST_F(CALayerOverlayTest, Disallow3DTransform) {
1359 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1359 scoped_ptr<RenderPass> pass = CreateRenderPass();
1360 CreateFullscreenCandidateQuad(resource_provider_.get(), 1360 CreateFullscreenCandidateQuad(resource_provider_.get(),
1361 pass->shared_quad_state_list.back(), 1361 pass->shared_quad_state_list.back(),
1362 pass.get()); 1362 pass.get());
1363 pass->shared_quad_state_list.back() 1363 pass->shared_quad_state_list.back()
1364 ->quad_to_target_transform.RotateAboutXAxis(45.f); 1364 ->quad_to_target_transform.RotateAboutXAxis(45.f);
1365 1365
1366 RenderPassList pass_list; 1366 RenderPassList pass_list;
1367 pass_list.push_back(pass.Pass()); 1367 pass_list.push_back(std::move(pass));
1368 CALayerOverlayList ca_layer_list; 1368 CALayerOverlayList ca_layer_list;
1369 OverlayCandidateList overlay_list( 1369 OverlayCandidateList overlay_list(
1370 BackbufferOverlayList(pass_list.back().get())); 1370 BackbufferOverlayList(pass_list.back().get()));
1371 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, 1371 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list,
1372 &ca_layer_list, &overlay_list); 1372 &ca_layer_list, &overlay_list);
1373 ASSERT_EQ(1U, pass_list.size()); 1373 ASSERT_EQ(1U, pass_list.size());
1374 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); 1374 EXPECT_EQ(1U, pass_list.back()->quad_list.size());
1375 EXPECT_EQ(1U, overlay_list.size()); 1375 EXPECT_EQ(1U, overlay_list.size());
1376 EXPECT_EQ(0U, ca_layer_list.size()); 1376 EXPECT_EQ(0U, ca_layer_list.size());
1377 } 1377 }
1378 1378
1379 TEST_F(CALayerOverlayTest, AllowContainingClip) { 1379 TEST_F(CALayerOverlayTest, AllowContainingClip) {
1380 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1380 scoped_ptr<RenderPass> pass = CreateRenderPass();
1381 CreateFullscreenCandidateQuad(resource_provider_.get(), 1381 CreateFullscreenCandidateQuad(resource_provider_.get(),
1382 pass->shared_quad_state_list.back(), 1382 pass->shared_quad_state_list.back(),
1383 pass.get()); 1383 pass.get());
1384 pass->shared_quad_state_list.back()->is_clipped = true; 1384 pass->shared_quad_state_list.back()->is_clipped = true;
1385 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; 1385 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect;
1386 1386
1387 RenderPassList pass_list; 1387 RenderPassList pass_list;
1388 pass_list.push_back(pass.Pass()); 1388 pass_list.push_back(std::move(pass));
1389 CALayerOverlayList ca_layer_list; 1389 CALayerOverlayList ca_layer_list;
1390 OverlayCandidateList overlay_list( 1390 OverlayCandidateList overlay_list(
1391 BackbufferOverlayList(pass_list.back().get())); 1391 BackbufferOverlayList(pass_list.back().get()));
1392 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, 1392 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list,
1393 &ca_layer_list, &overlay_list); 1393 &ca_layer_list, &overlay_list);
1394 ASSERT_EQ(1U, pass_list.size()); 1394 ASSERT_EQ(1U, pass_list.size());
1395 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); 1395 EXPECT_EQ(0U, pass_list.back()->quad_list.size());
1396 EXPECT_EQ(0U, overlay_list.size()); 1396 EXPECT_EQ(0U, overlay_list.size());
1397 EXPECT_EQ(1U, ca_layer_list.size()); 1397 EXPECT_EQ(1U, ca_layer_list.size());
1398 } 1398 }
1399 1399
1400 TEST_F(CALayerOverlayTest, SkipDisjointClip) { 1400 TEST_F(CALayerOverlayTest, SkipDisjointClip) {
1401 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1401 scoped_ptr<RenderPass> pass = CreateRenderPass();
1402 CreateFullscreenCandidateQuad(resource_provider_.get(), 1402 CreateFullscreenCandidateQuad(resource_provider_.get(),
1403 pass->shared_quad_state_list.back(), 1403 pass->shared_quad_state_list.back(),
1404 pass.get()); 1404 pass.get());
1405 pass->shared_quad_state_list.back()->is_clipped = true; 1405 pass->shared_quad_state_list.back()->is_clipped = true;
1406 pass->shared_quad_state_list.back()->clip_rect = 1406 pass->shared_quad_state_list.back()->clip_rect =
1407 gfx::Rect(128, 128, 128, 128); 1407 gfx::Rect(128, 128, 128, 128);
1408 1408
1409 RenderPassList pass_list; 1409 RenderPassList pass_list;
1410 pass_list.push_back(pass.Pass()); 1410 pass_list.push_back(std::move(pass));
1411 CALayerOverlayList ca_layer_list; 1411 CALayerOverlayList ca_layer_list;
1412 OverlayCandidateList overlay_list( 1412 OverlayCandidateList overlay_list(
1413 BackbufferOverlayList(pass_list.back().get())); 1413 BackbufferOverlayList(pass_list.back().get()));
1414 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, 1414 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list,
1415 &ca_layer_list, &overlay_list); 1415 &ca_layer_list, &overlay_list);
1416 ASSERT_EQ(1U, pass_list.size()); 1416 ASSERT_EQ(1U, pass_list.size());
1417 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); 1417 EXPECT_EQ(0U, pass_list.back()->quad_list.size());
1418 EXPECT_EQ(0U, overlay_list.size()); 1418 EXPECT_EQ(0U, overlay_list.size());
1419 EXPECT_EQ(0U, ca_layer_list.size()); 1419 EXPECT_EQ(0U, ca_layer_list.size());
1420 } 1420 }
1421 1421
1422 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) { 1422 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) {
1423 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1423 scoped_ptr<RenderPass> pass = CreateRenderPass();
1424 CreateFullscreenCandidateQuad(resource_provider_.get(), 1424 CreateFullscreenCandidateQuad(resource_provider_.get(),
1425 pass->shared_quad_state_list.back(), 1425 pass->shared_quad_state_list.back(),
1426 pass.get()); 1426 pass.get());
1427 pass->shared_quad_state_list.back()->is_clipped = true; 1427 pass->shared_quad_state_list.back()->is_clipped = true;
1428 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); 1428 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128);
1429 1429
1430 RenderPassList pass_list; 1430 RenderPassList pass_list;
1431 pass_list.push_back(pass.Pass()); 1431 pass_list.push_back(std::move(pass));
1432 CALayerOverlayList ca_layer_list; 1432 CALayerOverlayList ca_layer_list;
1433 OverlayCandidateList overlay_list( 1433 OverlayCandidateList overlay_list(
1434 BackbufferOverlayList(pass_list.back().get())); 1434 BackbufferOverlayList(pass_list.back().get()));
1435 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, 1435 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list,
1436 &ca_layer_list, &overlay_list); 1436 &ca_layer_list, &overlay_list);
1437 1437
1438 ASSERT_EQ(1U, pass_list.size()); 1438 ASSERT_EQ(1U, pass_list.size());
1439 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); 1439 EXPECT_EQ(1U, pass_list.back()->quad_list.size());
1440 EXPECT_EQ(1U, overlay_list.size()); 1440 EXPECT_EQ(1U, overlay_list.size());
1441 EXPECT_EQ(0U, ca_layer_list.size()); 1441 EXPECT_EQ(0U, ca_layer_list.size());
1442 } 1442 }
1443 1443
1444 TEST_F(CALayerOverlayTest, SkipTransparent) { 1444 TEST_F(CALayerOverlayTest, SkipTransparent) {
1445 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1445 scoped_ptr<RenderPass> pass = CreateRenderPass();
1446 CreateFullscreenCandidateQuad(resource_provider_.get(), 1446 CreateFullscreenCandidateQuad(resource_provider_.get(),
1447 pass->shared_quad_state_list.back(), 1447 pass->shared_quad_state_list.back(),
1448 pass.get()); 1448 pass.get());
1449 pass->shared_quad_state_list.back()->opacity = 0; 1449 pass->shared_quad_state_list.back()->opacity = 0;
1450 1450
1451 RenderPassList pass_list; 1451 RenderPassList pass_list;
1452 pass_list.push_back(pass.Pass()); 1452 pass_list.push_back(std::move(pass));
1453 CALayerOverlayList ca_layer_list; 1453 CALayerOverlayList ca_layer_list;
1454 OverlayCandidateList overlay_list( 1454 OverlayCandidateList overlay_list(
1455 BackbufferOverlayList(pass_list.back().get())); 1455 BackbufferOverlayList(pass_list.back().get()));
1456 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, 1456 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list,
1457 &ca_layer_list, &overlay_list); 1457 &ca_layer_list, &overlay_list);
1458 ASSERT_EQ(1U, pass_list.size()); 1458 ASSERT_EQ(1U, pass_list.size());
1459 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); 1459 EXPECT_EQ(0U, pass_list.back()->quad_list.size());
1460 EXPECT_EQ(0U, overlay_list.size()); 1460 EXPECT_EQ(0U, overlay_list.size());
1461 EXPECT_EQ(0U, ca_layer_list.size()); 1461 EXPECT_EQ(0U, ca_layer_list.size());
1462 } 1462 }
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1564 1564
1565 CreateCandidateQuadAt(resource_provider_.get(), 1565 CreateCandidateQuadAt(resource_provider_.get(),
1566 pass->shared_quad_state_list.back(), pass.get(), 1566 pass->shared_quad_state_list.back(), pass.get(),
1567 kOverlayBottomRightRect); 1567 kOverlayBottomRightRect);
1568 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1568 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1569 pass->shared_quad_state_list.back(), pass.get()); 1569 pass->shared_quad_state_list.back(), pass.get());
1570 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1570 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1571 pass->shared_quad_state_list.back(), pass.get()); 1571 pass->shared_quad_state_list.back(), pass.get());
1572 1572
1573 RenderPassList pass_list; 1573 RenderPassList pass_list;
1574 pass_list.push_back(pass.Pass()); 1574 pass_list.push_back(std::move(pass));
1575 1575
1576 // Candidate pass was taken out and extra skipped pass added, 1576 // Candidate pass was taken out and extra skipped pass added,
1577 // so only draw 2 quads. 1577 // so only draw 2 quads.
1578 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); 1578 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2);
1579 EXPECT_CALL(scheduler_, 1579 EXPECT_CALL(scheduler_,
1580 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, 1580 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
1581 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) 1581 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
1582 .Times(1); 1582 .Times(1);
1583 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, 1583 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _,
1584 kOverlayBottomRightRect, 1584 kOverlayBottomRightRect,
(...skipping 18 matching lines...) Expand all
1603 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1603 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1604 pass->shared_quad_state_list.back(), pass.get()); 1604 pass->shared_quad_state_list.back(), pass.get());
1605 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1605 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1606 pass->shared_quad_state_list.back(), pass.get()); 1606 pass->shared_quad_state_list.back(), pass.get());
1607 1607
1608 CreateFullscreenCandidateQuad(resource_provider_.get(), 1608 CreateFullscreenCandidateQuad(resource_provider_.get(),
1609 pass->shared_quad_state_list.back(), 1609 pass->shared_quad_state_list.back(),
1610 pass.get()); 1610 pass.get());
1611 1611
1612 RenderPassList pass_list; 1612 RenderPassList pass_list;
1613 pass_list.push_back(pass.Pass()); 1613 pass_list.push_back(std::move(pass));
1614 1614
1615 // Candidate quad should fail to be overlaid on top because of occlusion. 1615 // Candidate quad should fail to be overlaid on top because of occlusion.
1616 // Expect to be replaced with transparent hole quad and placed in underlay. 1616 // Expect to be replaced with transparent hole quad and placed in underlay.
1617 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1617 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
1618 EXPECT_CALL(scheduler_, 1618 EXPECT_CALL(scheduler_,
1619 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, 1619 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
1620 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) 1620 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
1621 .Times(1); 1621 .Times(1);
1622 EXPECT_CALL(scheduler_, 1622 EXPECT_CALL(scheduler_,
1623 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, 1623 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect,
(...skipping 18 matching lines...) Expand all
1642 CreateFullscreenCandidateQuad(resource_provider_.get(), 1642 CreateFullscreenCandidateQuad(resource_provider_.get(),
1643 pass->shared_quad_state_list.back(), 1643 pass->shared_quad_state_list.back(),
1644 pass.get()); 1644 pass.get());
1645 1645
1646 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1646 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1647 pass->shared_quad_state_list.back(), pass.get()); 1647 pass->shared_quad_state_list.back(), pass.get());
1648 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1648 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1649 pass->shared_quad_state_list.back(), pass.get()); 1649 pass->shared_quad_state_list.back(), pass.get());
1650 1650
1651 RenderPassList pass_list; 1651 RenderPassList pass_list;
1652 pass_list.push_back(pass.Pass()); 1652 pass_list.push_back(std::move(pass));
1653 1653
1654 // Should not see the primary surface's overlay. 1654 // Should not see the primary surface's overlay.
1655 output_surface_->set_is_displayed_as_overlay_plane(false); 1655 output_surface_->set_is_displayed_as_overlay_plane(false);
1656 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1656 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
1657 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1657 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1658 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1658 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1659 SwapBuffers(); 1659 SwapBuffers();
1660 Mock::VerifyAndClearExpectations(renderer_.get()); 1660 Mock::VerifyAndClearExpectations(renderer_.get());
1661 Mock::VerifyAndClearExpectations(&scheduler_); 1661 Mock::VerifyAndClearExpectations(&scheduler_);
1662 } 1662 }
1663 1663
1664 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawn) { 1664 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawn) {
1665 bool use_validator = true; 1665 bool use_validator = true;
1666 Init(use_validator); 1666 Init(use_validator);
1667 renderer_->set_expect_overlays(true); 1667 renderer_->set_expect_overlays(true);
1668 gfx::Rect viewport_rect(16, 16); 1668 gfx::Rect viewport_rect(16, 16);
1669 1669
1670 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1670 scoped_ptr<RenderPass> pass = CreateRenderPass();
1671 1671
1672 CreateFullscreenCandidateQuad(resource_provider_.get(), 1672 CreateFullscreenCandidateQuad(resource_provider_.get(),
1673 pass->shared_quad_state_list.back(), 1673 pass->shared_quad_state_list.back(),
1674 pass.get()); 1674 pass.get());
1675 1675
1676 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1676 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1677 pass->shared_quad_state_list.back(), pass.get()); 1677 pass->shared_quad_state_list.back(), pass.get());
1678 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1678 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1679 pass->shared_quad_state_list.back(), pass.get()); 1679 pass->shared_quad_state_list.back(), pass.get());
1680 1680
1681 RenderPassList pass_list; 1681 RenderPassList pass_list;
1682 pass_list.push_back(pass.Pass()); 1682 pass_list.push_back(std::move(pass));
1683 1683
1684 output_surface_->set_is_displayed_as_overlay_plane(true); 1684 output_surface_->set_is_displayed_as_overlay_plane(true);
1685 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0); 1685 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0);
1686 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1686 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1687 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1687 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1688 SwapBuffers(); 1688 SwapBuffers();
1689 Mock::VerifyAndClearExpectations(renderer_.get()); 1689 Mock::VerifyAndClearExpectations(renderer_.get());
1690 Mock::VerifyAndClearExpectations(&scheduler_); 1690 Mock::VerifyAndClearExpectations(&scheduler_);
1691 } 1691 }
1692 1692
1693 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) { 1693 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
1694 bool use_validator = true; 1694 bool use_validator = true;
1695 Init(use_validator); 1695 Init(use_validator);
1696 renderer_->set_expect_overlays(true); 1696 renderer_->set_expect_overlays(true);
1697 1697
1698 ResourceId resource1 = 1698 ResourceId resource1 =
1699 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1699 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1700 ResourceId resource2 = 1700 ResourceId resource2 =
1701 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1701 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1702 ResourceId resource3 = 1702 ResourceId resource3 =
1703 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1703 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1704 1704
1705 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1705 scoped_ptr<RenderPass> pass = CreateRenderPass();
1706 RenderPassList pass_list; 1706 RenderPassList pass_list;
1707 pass_list.push_back(pass.Pass()); 1707 pass_list.push_back(std::move(pass));
1708 1708
1709 DirectRenderer::DrawingFrame frame1; 1709 DirectRenderer::DrawingFrame frame1;
1710 frame1.render_passes_in_draw_order = &pass_list; 1710 frame1.render_passes_in_draw_order = &pass_list;
1711 frame1.overlay_list.resize(2); 1711 frame1.overlay_list.resize(2);
1712 frame1.overlay_list.front().use_output_surface_for_resource = true; 1712 frame1.overlay_list.front().use_output_surface_for_resource = true;
1713 OverlayCandidate& overlay1 = frame1.overlay_list.back(); 1713 OverlayCandidate& overlay1 = frame1.overlay_list.back();
1714 overlay1.resource_id = resource1; 1714 overlay1.resource_id = resource1;
1715 overlay1.plane_z_order = 1; 1715 overlay1.plane_z_order = 1;
1716 1716
1717 DirectRenderer::DrawingFrame frame2; 1717 DirectRenderer::DrawingFrame frame2;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1807 renderer_->BeginDrawingFrame(&frame_no_overlays); 1807 renderer_->BeginDrawingFrame(&frame_no_overlays);
1808 renderer_->FinishDrawingFrame(&frame_no_overlays); 1808 renderer_->FinishDrawingFrame(&frame_no_overlays);
1809 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1809 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1810 SwapBuffers(); 1810 SwapBuffers();
1811 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1811 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1812 Mock::VerifyAndClearExpectations(&scheduler_); 1812 Mock::VerifyAndClearExpectations(&scheduler_);
1813 } 1813 }
1814 1814
1815 } // namespace 1815 } // namespace
1816 } // namespace cc 1816 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/output_surface_unittest.cc ('k') | cc/output/renderer_pixeltest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698