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

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

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 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/output/overlay_processor.h ('k') | cc/output/renderer.h » ('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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h"
9 #include "cc/base/region.h" 10 #include "cc/base/region.h"
10 #include "cc/output/compositor_frame_metadata.h" 11 #include "cc/output/compositor_frame_metadata.h"
11 #include "cc/output/gl_renderer.h" 12 #include "cc/output/gl_renderer.h"
12 #include "cc/output/output_surface.h" 13 #include "cc/output/output_surface.h"
13 #include "cc/output/output_surface_client.h" 14 #include "cc/output/output_surface_client.h"
14 #include "cc/output/overlay_candidate_validator.h" 15 #include "cc/output/overlay_candidate_validator.h"
15 #include "cc/output/overlay_processor.h" 16 #include "cc/output/overlay_processor.h"
16 #include "cc/output/overlay_strategy_single_on_top.h" 17 #include "cc/output/overlay_strategy_single_on_top.h"
17 #include "cc/output/overlay_strategy_underlay.h" 18 #include "cc/output/overlay_strategy_underlay.h"
18 #include "cc/quads/render_pass.h" 19 #include "cc/quads/render_pass.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 gfx::Transform(0, 1, 1, 0, 0, 0); // x,y -> y,x. 57 gfx::Transform(0, 1, 1, 0, 0, 0); // x,y -> y,x.
57 58
58 void MailboxReleased(const gpu::SyncToken& sync_token, 59 void MailboxReleased(const gpu::SyncToken& sync_token,
59 bool lost_resource, 60 bool lost_resource,
60 BlockingTaskRunner* main_thread_task_runner) {} 61 BlockingTaskRunner* main_thread_task_runner) {}
61 62
62 class SingleOverlayValidator : public OverlayCandidateValidator { 63 class SingleOverlayValidator : public OverlayCandidateValidator {
63 public: 64 public:
64 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { 65 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {
65 strategies->push_back( 66 strategies->push_back(
66 make_scoped_ptr(new OverlayStrategySingleOnTop(this))); 67 base::WrapUnique(new OverlayStrategySingleOnTop(this)));
67 strategies->push_back(make_scoped_ptr(new OverlayStrategyUnderlay(this))); 68 strategies->push_back(base::WrapUnique(new OverlayStrategyUnderlay(this)));
68 } 69 }
69 bool AllowCALayerOverlays() override { return false; } 70 bool AllowCALayerOverlays() override { return false; }
70 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { 71 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {
71 // We may have 1 or 2 surfaces depending on whether this ran through the 72 // We may have 1 or 2 surfaces depending on whether this ran through the
72 // full renderer and picked up the output surface, or not. 73 // full renderer and picked up the output surface, or not.
73 ASSERT_LE(1U, surfaces->size()); 74 ASSERT_LE(1U, surfaces->size());
74 ASSERT_GE(2U, surfaces->size()); 75 ASSERT_GE(2U, surfaces->size());
75 76
76 OverlayCandidate& candidate = surfaces->back(); 77 OverlayCandidate& candidate = surfaces->back();
77 EXPECT_TRUE(!candidate.use_output_surface_for_resource); 78 EXPECT_TRUE(!candidate.use_output_surface_for_resource);
(...skipping 20 matching lines...) Expand all
98 public: 99 public:
99 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {} 100 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {}
100 bool AllowCALayerOverlays() override { return true; } 101 bool AllowCALayerOverlays() override { return true; }
101 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {} 102 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {}
102 }; 103 };
103 104
104 class SingleOnTopOverlayValidator : public SingleOverlayValidator { 105 class SingleOnTopOverlayValidator : public SingleOverlayValidator {
105 public: 106 public:
106 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { 107 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {
107 strategies->push_back( 108 strategies->push_back(
108 make_scoped_ptr(new OverlayStrategySingleOnTop(this))); 109 base::WrapUnique(new OverlayStrategySingleOnTop(this)));
109 } 110 }
110 }; 111 };
111 112
112 class UnderlayOverlayValidator : public SingleOverlayValidator { 113 class UnderlayOverlayValidator : public SingleOverlayValidator {
113 public: 114 public:
114 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { 115 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {
115 strategies->push_back(make_scoped_ptr(new OverlayStrategyUnderlay(this))); 116 strategies->push_back(base::WrapUnique(new OverlayStrategyUnderlay(this)));
116 } 117 }
117 }; 118 };
118 119
119 class DefaultOverlayProcessor : public OverlayProcessor { 120 class DefaultOverlayProcessor : public OverlayProcessor {
120 public: 121 public:
121 explicit DefaultOverlayProcessor(OutputSurface* surface); 122 explicit DefaultOverlayProcessor(OutputSurface* surface);
122 size_t GetStrategyCount(); 123 size_t GetStrategyCount();
123 }; 124 };
124 125
125 DefaultOverlayProcessor::DefaultOverlayProcessor(OutputSurface* surface) 126 DefaultOverlayProcessor::DefaultOverlayProcessor(OutputSurface* surface)
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 bool IsDisplayedAsOverlayPlane() const override { 165 bool IsDisplayedAsOverlayPlane() const override {
165 return is_displayed_as_overlay_plane_; 166 return is_displayed_as_overlay_plane_;
166 } 167 }
167 unsigned GetOverlayTextureId() const override { return 10000; } 168 unsigned GetOverlayTextureId() const override { return 10000; }
168 void set_is_displayed_as_overlay_plane(bool value) { 169 void set_is_displayed_as_overlay_plane(bool value) {
169 is_displayed_as_overlay_plane_ = value; 170 is_displayed_as_overlay_plane_ = value;
170 } 171 }
171 unsigned bind_framebuffer_count() const { return bind_framebuffer_count_; } 172 unsigned bind_framebuffer_count() const { return bind_framebuffer_count_; }
172 173
173 private: 174 private:
174 scoped_ptr<OverlayCandidateValidator> overlay_candidate_validator_; 175 std::unique_ptr<OverlayCandidateValidator> overlay_candidate_validator_;
175 bool is_displayed_as_overlay_plane_; 176 bool is_displayed_as_overlay_plane_;
176 unsigned bind_framebuffer_count_ = 0; 177 unsigned bind_framebuffer_count_ = 0;
177 }; 178 };
178 179
179 scoped_ptr<RenderPass> CreateRenderPass() { 180 std::unique_ptr<RenderPass> CreateRenderPass() {
180 RenderPassId id(1, 0); 181 RenderPassId id(1, 0);
181 gfx::Rect output_rect(0, 0, 256, 256); 182 gfx::Rect output_rect(0, 0, 256, 256);
182 bool has_transparent_background = true; 183 bool has_transparent_background = true;
183 184
184 scoped_ptr<RenderPass> pass = RenderPass::Create(); 185 std::unique_ptr<RenderPass> pass = RenderPass::Create();
185 pass->SetAll(id, 186 pass->SetAll(id,
186 output_rect, 187 output_rect,
187 output_rect, 188 output_rect,
188 gfx::Transform(), 189 gfx::Transform(),
189 has_transparent_background); 190 has_transparent_background);
190 191
191 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 192 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
192 shared_state->opacity = 1.f; 193 shared_state->opacity = 1.f;
193 return pass; 194 return pass;
194 } 195 }
195 196
196 ResourceId CreateResource(ResourceProvider* resource_provider, 197 ResourceId CreateResource(ResourceProvider* resource_provider,
197 const gfx::Size& size, 198 const gfx::Size& size,
198 bool is_overlay_candidate) { 199 bool is_overlay_candidate) {
199 TextureMailbox mailbox = 200 TextureMailbox mailbox =
200 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D, 201 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D,
201 size, is_overlay_candidate, false); 202 size, is_overlay_candidate, false);
202 scoped_ptr<SingleReleaseCallbackImpl> release_callback = 203 std::unique_ptr<SingleReleaseCallbackImpl> release_callback =
203 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); 204 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased));
204 205
205 return resource_provider->CreateResourceFromTextureMailbox( 206 return resource_provider->CreateResourceFromTextureMailbox(
206 mailbox, std::move(release_callback)); 207 mailbox, std::move(release_callback));
207 } 208 }
208 209
209 SolidColorDrawQuad* CreateSolidColorQuadAt( 210 SolidColorDrawQuad* CreateSolidColorQuadAt(
210 const SharedQuadState* shared_quad_state, 211 const SharedQuadState* shared_quad_state,
211 SkColor color, 212 SkColor color,
212 RenderPass* render_pass, 213 RenderPass* render_pass,
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 344
344 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); 345 shared_bitmap_manager_.reset(new TestSharedBitmapManager());
345 resource_provider_ = FakeResourceProvider::Create( 346 resource_provider_ = FakeResourceProvider::Create(
346 output_surface_.get(), shared_bitmap_manager_.get()); 347 output_surface_.get(), shared_bitmap_manager_.get());
347 348
348 overlay_processor_.reset(new OverlayProcessor(output_surface_.get())); 349 overlay_processor_.reset(new OverlayProcessor(output_surface_.get()));
349 overlay_processor_->Initialize(); 350 overlay_processor_->Initialize();
350 } 351 }
351 352
352 scoped_refptr<TestContextProvider> provider_; 353 scoped_refptr<TestContextProvider> provider_;
353 scoped_ptr<OverlayOutputSurface> output_surface_; 354 std::unique_ptr<OverlayOutputSurface> output_surface_;
354 FakeOutputSurfaceClient client_; 355 FakeOutputSurfaceClient client_;
355 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; 356 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
356 scoped_ptr<ResourceProvider> resource_provider_; 357 std::unique_ptr<ResourceProvider> resource_provider_;
357 scoped_ptr<OverlayProcessor> overlay_processor_; 358 std::unique_ptr<OverlayProcessor> overlay_processor_;
358 gfx::Rect damage_rect_; 359 gfx::Rect damage_rect_;
359 }; 360 };
360 361
361 typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest; 362 typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest;
362 typedef OverlayTest<UnderlayOverlayValidator> UnderlayTest; 363 typedef OverlayTest<UnderlayOverlayValidator> UnderlayTest;
363 typedef OverlayTest<CALayerValidator> CALayerOverlayTest; 364 typedef OverlayTest<CALayerValidator> CALayerOverlayTest;
364 365
365 TEST(OverlayTest, NoOverlaysByDefault) { 366 TEST(OverlayTest, NoOverlaysByDefault) {
366 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); 367 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create();
367 OverlayOutputSurface output_surface(provider); 368 OverlayOutputSurface output_surface(provider);
368 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); 369 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator());
369 370
370 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); 371 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator);
371 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL); 372 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL);
372 } 373 }
373 374
374 TEST(OverlayTest, OverlaysProcessorHasStrategy) { 375 TEST(OverlayTest, OverlaysProcessorHasStrategy) {
375 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); 376 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create();
376 OverlayOutputSurface output_surface(provider); 377 OverlayOutputSurface output_surface(provider);
377 FakeOutputSurfaceClient client; 378 FakeOutputSurfaceClient client;
378 EXPECT_TRUE(output_surface.BindToClient(&client)); 379 EXPECT_TRUE(output_surface.BindToClient(&client));
379 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); 380 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator);
380 381
381 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 382 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager(
382 new TestSharedBitmapManager()); 383 new TestSharedBitmapManager());
383 scoped_ptr<ResourceProvider> resource_provider = FakeResourceProvider::Create( 384 std::unique_ptr<ResourceProvider> resource_provider =
384 &output_surface, shared_bitmap_manager.get()); 385 FakeResourceProvider::Create(&output_surface,
386 shared_bitmap_manager.get());
385 387
386 scoped_ptr<DefaultOverlayProcessor> overlay_processor( 388 std::unique_ptr<DefaultOverlayProcessor> overlay_processor(
387 new DefaultOverlayProcessor(&output_surface)); 389 new DefaultOverlayProcessor(&output_surface));
388 overlay_processor->Initialize(); 390 overlay_processor->Initialize();
389 EXPECT_GE(2U, overlay_processor->GetStrategyCount()); 391 EXPECT_GE(2U, overlay_processor->GetStrategyCount());
390 } 392 }
391 393
392 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { 394 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) {
393 scoped_ptr<RenderPass> pass = CreateRenderPass(); 395 std::unique_ptr<RenderPass> pass = CreateRenderPass();
394 TextureDrawQuad* original_quad = 396 TextureDrawQuad* original_quad =
395 CreateFullscreenCandidateQuad(resource_provider_.get(), 397 CreateFullscreenCandidateQuad(resource_provider_.get(),
396 pass->shared_quad_state_list.back(), 398 pass->shared_quad_state_list.back(),
397 pass.get()); 399 pass.get());
398 unsigned original_resource_id = original_quad->resource_id(); 400 unsigned original_resource_id = original_quad->resource_id();
399 401
400 // Add something behind it. 402 // Add something behind it.
401 CreateFullscreenOpaqueQuad(resource_provider_.get(), 403 CreateFullscreenOpaqueQuad(resource_provider_.get(),
402 pass->shared_quad_state_list.back(), pass.get()); 404 pass->shared_quad_state_list.back(), pass.get());
403 CreateFullscreenOpaqueQuad(resource_provider_.get(), 405 CreateFullscreenOpaqueQuad(resource_provider_.get(),
(...skipping 14 matching lines...) Expand all
418 it != quad_list.BackToFrontEnd(); 420 it != quad_list.BackToFrontEnd();
419 ++it) { 421 ++it) {
420 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); 422 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
421 } 423 }
422 424
423 // Check that the right resource id got extracted. 425 // Check that the right resource id got extracted.
424 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); 426 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id);
425 } 427 }
426 428
427 TEST_F(SingleOverlayOnTopTest, DamageRect) { 429 TEST_F(SingleOverlayOnTopTest, DamageRect) {
428 scoped_ptr<RenderPass> pass = CreateRenderPass(); 430 std::unique_ptr<RenderPass> pass = CreateRenderPass();
429 CreateFullscreenCandidateQuad(resource_provider_.get(), 431 CreateFullscreenCandidateQuad(resource_provider_.get(),
430 pass->shared_quad_state_list.back(), 432 pass->shared_quad_state_list.back(),
431 pass.get()); 433 pass.get());
432 damage_rect_ = kOverlayRect; 434 damage_rect_ = kOverlayRect;
433 435
434 // Add something behind it. 436 // Add something behind it.
435 CreateFullscreenOpaqueQuad(resource_provider_.get(), 437 CreateFullscreenOpaqueQuad(resource_provider_.get(),
436 pass->shared_quad_state_list.back(), pass.get()); 438 pass->shared_quad_state_list.back(), pass.get());
437 CreateFullscreenOpaqueQuad(resource_provider_.get(), 439 CreateFullscreenOpaqueQuad(resource_provider_.get(),
438 pass->shared_quad_state_list.back(), pass.get()); 440 pass->shared_quad_state_list.back(), pass.get());
439 441
440 // Check for potential candidates. 442 // Check for potential candidates.
441 OverlayCandidateList candidate_list; 443 OverlayCandidateList candidate_list;
442 444
443 // Primary plane. 445 // Primary plane.
444 OverlayCandidate output_surface_plane; 446 OverlayCandidate output_surface_plane;
445 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); 447 output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
446 output_surface_plane.quad_rect_in_target_space = kOverlayRect; 448 output_surface_plane.quad_rect_in_target_space = kOverlayRect;
447 output_surface_plane.use_output_surface_for_resource = true; 449 output_surface_plane.use_output_surface_for_resource = true;
448 output_surface_plane.overlay_handled = true; 450 output_surface_plane.overlay_handled = true;
449 candidate_list.push_back(output_surface_plane); 451 candidate_list.push_back(output_surface_plane);
450 452
451 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 453 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
452 &candidate_list, nullptr, 454 &candidate_list, nullptr,
453 &damage_rect_); 455 &damage_rect_);
454 DCHECK(damage_rect_.IsEmpty()); 456 DCHECK(damage_rect_.IsEmpty());
455 } 457 }
456 458
457 TEST_F(SingleOverlayOnTopTest, NoCandidates) { 459 TEST_F(SingleOverlayOnTopTest, NoCandidates) {
458 scoped_ptr<RenderPass> pass = CreateRenderPass(); 460 std::unique_ptr<RenderPass> pass = CreateRenderPass();
459 CreateFullscreenOpaqueQuad(resource_provider_.get(), 461 CreateFullscreenOpaqueQuad(resource_provider_.get(),
460 pass->shared_quad_state_list.back(), pass.get()); 462 pass->shared_quad_state_list.back(), pass.get());
461 CreateFullscreenOpaqueQuad(resource_provider_.get(), 463 CreateFullscreenOpaqueQuad(resource_provider_.get(),
462 pass->shared_quad_state_list.back(), pass.get()); 464 pass->shared_quad_state_list.back(), pass.get());
463 465
464 RenderPassList pass_list; 466 RenderPassList pass_list;
465 pass_list.push_back(std::move(pass)); 467 pass_list.push_back(std::move(pass));
466 468
467 RenderPassList original_pass_list; 469 RenderPassList original_pass_list;
468 RenderPass::CopyAll(pass_list, &original_pass_list); 470 RenderPass::CopyAll(pass_list, &original_pass_list);
469 471
470 OverlayCandidateList candidate_list; 472 OverlayCandidateList candidate_list;
471 overlay_processor_->ProcessForOverlays( 473 overlay_processor_->ProcessForOverlays(
472 resource_provider_.get(), pass_list.back().get(), &candidate_list, 474 resource_provider_.get(), pass_list.back().get(), &candidate_list,
473 nullptr, &damage_rect_); 475 nullptr, &damage_rect_);
474 EXPECT_EQ(0U, candidate_list.size()); 476 EXPECT_EQ(0U, candidate_list.size());
475 // There should be nothing new here. 477 // There should be nothing new here.
476 CompareRenderPassLists(pass_list, original_pass_list); 478 CompareRenderPassLists(pass_list, original_pass_list);
477 } 479 }
478 480
479 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { 481 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
480 scoped_ptr<RenderPass> pass = CreateRenderPass(); 482 std::unique_ptr<RenderPass> pass = CreateRenderPass();
481 CreateFullscreenOpaqueQuad(resource_provider_.get(), 483 CreateFullscreenOpaqueQuad(resource_provider_.get(),
482 pass->shared_quad_state_list.back(), pass.get()); 484 pass->shared_quad_state_list.back(), pass.get());
483 CreateFullscreenOpaqueQuad(resource_provider_.get(), 485 CreateFullscreenOpaqueQuad(resource_provider_.get(),
484 pass->shared_quad_state_list.back(), pass.get()); 486 pass->shared_quad_state_list.back(), pass.get());
485 487
486 CreateFullscreenCandidateQuad(resource_provider_.get(), 488 CreateFullscreenCandidateQuad(resource_provider_.get(),
487 pass->shared_quad_state_list.back(), 489 pass->shared_quad_state_list.back(),
488 pass.get()); 490 pass.get());
489 491
490 RenderPassList pass_list; 492 RenderPassList pass_list;
491 pass_list.push_back(std::move(pass)); 493 pass_list.push_back(std::move(pass));
492 494
493 RenderPassList original_pass_list; 495 RenderPassList original_pass_list;
494 RenderPass::CopyAll(pass_list, &original_pass_list); 496 RenderPass::CopyAll(pass_list, &original_pass_list);
495 497
496 OverlayCandidateList candidate_list; 498 OverlayCandidateList candidate_list;
497 overlay_processor_->ProcessForOverlays( 499 overlay_processor_->ProcessForOverlays(
498 resource_provider_.get(), pass_list.back().get(), &candidate_list, 500 resource_provider_.get(), pass_list.back().get(), &candidate_list,
499 nullptr, &damage_rect_); 501 nullptr, &damage_rect_);
500 EXPECT_EQ(0U, candidate_list.size()); 502 EXPECT_EQ(0U, candidate_list.size());
501 // There should be nothing new here. 503 // There should be nothing new here.
502 CompareRenderPassLists(pass_list, original_pass_list); 504 CompareRenderPassLists(pass_list, original_pass_list);
503 } 505 }
504 506
505 // Test with multiple render passes. 507 // Test with multiple render passes.
506 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { 508 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
507 scoped_ptr<RenderPass> pass = CreateRenderPass(); 509 std::unique_ptr<RenderPass> pass = CreateRenderPass();
508 CreateFullscreenCandidateQuad(resource_provider_.get(), 510 CreateFullscreenCandidateQuad(resource_provider_.get(),
509 pass->shared_quad_state_list.back(), 511 pass->shared_quad_state_list.back(),
510 pass.get()); 512 pass.get());
511 513
512 // Add something behind it. 514 // Add something behind it.
513 CreateFullscreenOpaqueQuad(resource_provider_.get(), 515 CreateFullscreenOpaqueQuad(resource_provider_.get(),
514 pass->shared_quad_state_list.back(), pass.get()); 516 pass->shared_quad_state_list.back(), pass.get());
515 CreateFullscreenOpaqueQuad(resource_provider_.get(), 517 CreateFullscreenOpaqueQuad(resource_provider_.get(),
516 pass->shared_quad_state_list.back(), pass.get()); 518 pass->shared_quad_state_list.back(), pass.get());
517 519
518 // Check for potential candidates. 520 // Check for potential candidates.
519 OverlayCandidateList candidate_list; 521 OverlayCandidateList candidate_list;
520 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 522 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
521 &candidate_list, nullptr, 523 &candidate_list, nullptr,
522 &damage_rect_); 524 &damage_rect_);
523 EXPECT_EQ(1U, candidate_list.size()); 525 EXPECT_EQ(1U, candidate_list.size());
524 } 526 }
525 527
526 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { 528 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) {
527 scoped_ptr<RenderPass> pass = CreateRenderPass(); 529 std::unique_ptr<RenderPass> pass = CreateRenderPass();
528 TextureDrawQuad* quad = 530 TextureDrawQuad* quad =
529 CreateFullscreenCandidateQuad(resource_provider_.get(), 531 CreateFullscreenCandidateQuad(resource_provider_.get(),
530 pass->shared_quad_state_list.back(), 532 pass->shared_quad_state_list.back(),
531 pass.get()); 533 pass.get());
532 quad->premultiplied_alpha = true; 534 quad->premultiplied_alpha = true;
533 535
534 OverlayCandidateList candidate_list; 536 OverlayCandidateList candidate_list;
535 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 537 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
536 &candidate_list, nullptr, 538 &candidate_list, nullptr,
537 &damage_rect_); 539 &damage_rect_);
538 EXPECT_EQ(0U, candidate_list.size()); 540 EXPECT_EQ(0U, candidate_list.size());
539 } 541 }
540 542
541 TEST_F(SingleOverlayOnTopTest, RejectBlending) { 543 TEST_F(SingleOverlayOnTopTest, RejectBlending) {
542 scoped_ptr<RenderPass> pass = CreateRenderPass(); 544 std::unique_ptr<RenderPass> pass = CreateRenderPass();
543 TextureDrawQuad* quad = 545 TextureDrawQuad* quad =
544 CreateFullscreenCandidateQuad(resource_provider_.get(), 546 CreateFullscreenCandidateQuad(resource_provider_.get(),
545 pass->shared_quad_state_list.back(), 547 pass->shared_quad_state_list.back(),
546 pass.get()); 548 pass.get());
547 quad->needs_blending = true; 549 quad->needs_blending = true;
548 550
549 OverlayCandidateList candidate_list; 551 OverlayCandidateList candidate_list;
550 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 552 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
551 &candidate_list, nullptr, 553 &candidate_list, nullptr,
552 &damage_rect_); 554 &damage_rect_);
553 EXPECT_EQ(0U, candidate_list.size()); 555 EXPECT_EQ(0U, candidate_list.size());
554 } 556 }
555 557
556 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { 558 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
557 scoped_ptr<RenderPass> pass = CreateRenderPass(); 559 std::unique_ptr<RenderPass> pass = CreateRenderPass();
558 TextureDrawQuad* quad = 560 TextureDrawQuad* quad =
559 CreateFullscreenCandidateQuad(resource_provider_.get(), 561 CreateFullscreenCandidateQuad(resource_provider_.get(),
560 pass->shared_quad_state_list.back(), 562 pass->shared_quad_state_list.back(),
561 pass.get()); 563 pass.get());
562 quad->background_color = SK_ColorBLACK; 564 quad->background_color = SK_ColorBLACK;
563 565
564 OverlayCandidateList candidate_list; 566 OverlayCandidateList candidate_list;
565 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 567 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
566 &candidate_list, nullptr, 568 &candidate_list, nullptr,
567 &damage_rect_); 569 &damage_rect_);
568 EXPECT_EQ(0U, candidate_list.size()); 570 EXPECT_EQ(0U, candidate_list.size());
569 } 571 }
570 572
571 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { 573 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
572 scoped_ptr<RenderPass> pass = CreateRenderPass(); 574 std::unique_ptr<RenderPass> pass = CreateRenderPass();
573 CreateFullscreenCandidateQuad(resource_provider_.get(), 575 CreateFullscreenCandidateQuad(resource_provider_.get(),
574 pass->shared_quad_state_list.back(), 576 pass->shared_quad_state_list.back(),
575 pass.get()); 577 pass.get());
576 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; 578 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode;
577 579
578 OverlayCandidateList candidate_list; 580 OverlayCandidateList candidate_list;
579 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 581 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
580 &candidate_list, nullptr, 582 &candidate_list, nullptr,
581 &damage_rect_); 583 &damage_rect_);
582 EXPECT_EQ(0U, candidate_list.size()); 584 EXPECT_EQ(0U, candidate_list.size());
583 } 585 }
584 586
585 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { 587 TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
586 scoped_ptr<RenderPass> pass = CreateRenderPass(); 588 std::unique_ptr<RenderPass> pass = CreateRenderPass();
587 CreateFullscreenCandidateQuad(resource_provider_.get(), 589 CreateFullscreenCandidateQuad(resource_provider_.get(),
588 pass->shared_quad_state_list.back(), 590 pass->shared_quad_state_list.back(),
589 pass.get()); 591 pass.get());
590 pass->shared_quad_state_list.back()->opacity = 0.5f; 592 pass->shared_quad_state_list.back()->opacity = 0.5f;
591 593
592 OverlayCandidateList candidate_list; 594 OverlayCandidateList candidate_list;
593 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 595 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
594 &candidate_list, nullptr, 596 &candidate_list, nullptr,
595 &damage_rect_); 597 &damage_rect_);
596 EXPECT_EQ(0U, candidate_list.size()); 598 EXPECT_EQ(0U, candidate_list.size());
597 } 599 }
598 600
599 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { 601 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
600 scoped_ptr<RenderPass> pass = CreateRenderPass(); 602 std::unique_ptr<RenderPass> pass = CreateRenderPass();
601 CreateFullscreenCandidateQuad(resource_provider_.get(), 603 CreateFullscreenCandidateQuad(resource_provider_.get(),
602 pass->shared_quad_state_list.back(), 604 pass->shared_quad_state_list.back(),
603 pass.get()); 605 pass.get());
604 pass->shared_quad_state_list.back() 606 pass->shared_quad_state_list.back()
605 ->quad_to_target_transform.RotateAboutXAxis(45.f); 607 ->quad_to_target_transform.RotateAboutXAxis(45.f);
606 608
607 OverlayCandidateList candidate_list; 609 OverlayCandidateList candidate_list;
608 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 610 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
609 &candidate_list, nullptr, 611 &candidate_list, nullptr,
610 &damage_rect_); 612 &damage_rect_);
611 EXPECT_EQ(0U, candidate_list.size()); 613 EXPECT_EQ(0U, candidate_list.size());
612 } 614 }
613 615
614 TEST_F(SingleOverlayOnTopTest, AllowClipped) { 616 TEST_F(SingleOverlayOnTopTest, AllowClipped) {
615 scoped_ptr<RenderPass> pass = CreateRenderPass(); 617 std::unique_ptr<RenderPass> pass = CreateRenderPass();
616 CreateFullscreenCandidateQuad(resource_provider_.get(), 618 CreateFullscreenCandidateQuad(resource_provider_.get(),
617 pass->shared_quad_state_list.back(), 619 pass->shared_quad_state_list.back(),
618 pass.get()); 620 pass.get());
619 pass->shared_quad_state_list.back()->is_clipped = true; 621 pass->shared_quad_state_list.back()->is_clipped = true;
620 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; 622 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect;
621 623
622 OverlayCandidateList candidate_list; 624 OverlayCandidateList candidate_list;
623 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 625 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
624 &candidate_list, nullptr, 626 &candidate_list, nullptr,
625 &damage_rect_); 627 &damage_rect_);
626 EXPECT_EQ(1U, candidate_list.size()); 628 EXPECT_EQ(1U, candidate_list.size());
627 } 629 }
628 630
629 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { 631 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) {
630 gfx::Rect rect = kOverlayRect; 632 gfx::Rect rect = kOverlayRect;
631 rect.set_width(rect.width() / 2); 633 rect.set_width(rect.width() / 2);
632 rect.Offset(0, -rect.height()); 634 rect.Offset(0, -rect.height());
633 scoped_ptr<RenderPass> pass = CreateRenderPass(); 635 std::unique_ptr<RenderPass> pass = CreateRenderPass();
634 CreateCandidateQuadAt(resource_provider_.get(), 636 CreateCandidateQuadAt(resource_provider_.get(),
635 pass->shared_quad_state_list.back(), pass.get(), rect); 637 pass->shared_quad_state_list.back(), pass.get(), rect);
636 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 638 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
637 -1.0f); 639 -1.0f);
638 OverlayCandidateList candidate_list; 640 OverlayCandidateList candidate_list;
639 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 641 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
640 &candidate_list, nullptr, 642 &candidate_list, nullptr,
641 &damage_rect_); 643 &damage_rect_);
642 ASSERT_EQ(1U, candidate_list.size()); 644 ASSERT_EQ(1U, candidate_list.size());
643 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, 645 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL,
644 candidate_list.back().transform); 646 candidate_list.back().transform);
645 } 647 }
646 648
647 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { 649 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) {
648 gfx::Rect rect = kOverlayRect; 650 gfx::Rect rect = kOverlayRect;
649 rect.set_height(rect.height() / 2); 651 rect.set_height(rect.height() / 2);
650 rect.Offset(-rect.width(), 0); 652 rect.Offset(-rect.width(), 0);
651 scoped_ptr<RenderPass> pass = CreateRenderPass(); 653 std::unique_ptr<RenderPass> pass = CreateRenderPass();
652 CreateCandidateQuadAt(resource_provider_.get(), 654 CreateCandidateQuadAt(resource_provider_.get(),
653 pass->shared_quad_state_list.back(), pass.get(), rect); 655 pass->shared_quad_state_list.back(), pass.get(), rect);
654 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, 656 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f,
655 2.0f); 657 2.0f);
656 658
657 OverlayCandidateList candidate_list; 659 OverlayCandidateList candidate_list;
658 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 660 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
659 &candidate_list, nullptr, 661 &candidate_list, nullptr,
660 &damage_rect_); 662 &damage_rect_);
661 ASSERT_EQ(1U, candidate_list.size()); 663 ASSERT_EQ(1U, candidate_list.size());
662 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, 664 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL,
663 candidate_list.back().transform); 665 candidate_list.back().transform);
664 } 666 }
665 667
666 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { 668 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) {
667 gfx::Rect rect = kOverlayRect; 669 gfx::Rect rect = kOverlayRect;
668 rect.set_width(rect.width() / 2); 670 rect.set_width(rect.width() / 2);
669 scoped_ptr<RenderPass> pass = CreateRenderPass(); 671 std::unique_ptr<RenderPass> pass = CreateRenderPass();
670 CreateCandidateQuadAt(resource_provider_.get(), 672 CreateCandidateQuadAt(resource_provider_.get(),
671 pass->shared_quad_state_list.back(), pass.get(), rect); 673 pass->shared_quad_state_list.back(), pass.get(), rect);
672 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 674 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
673 1.0f); 675 1.0f);
674 OverlayCandidateList candidate_list; 676 OverlayCandidateList candidate_list;
675 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 677 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
676 &candidate_list, nullptr, 678 &candidate_list, nullptr,
677 &damage_rect_); 679 &damage_rect_);
678 EXPECT_EQ(1U, candidate_list.size()); 680 EXPECT_EQ(1U, candidate_list.size());
679 } 681 }
680 682
681 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { 683 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) {
682 gfx::Rect rect = kOverlayRect; 684 gfx::Rect rect = kOverlayRect;
683 rect.Offset(0, -rect.height()); 685 rect.Offset(0, -rect.height());
684 scoped_ptr<RenderPass> pass = CreateRenderPass(); 686 std::unique_ptr<RenderPass> pass = CreateRenderPass();
685 CreateCandidateQuadAt(resource_provider_.get(), 687 CreateCandidateQuadAt(resource_provider_.get(),
686 pass->shared_quad_state_list.back(), pass.get(), rect); 688 pass->shared_quad_state_list.back(), pass.get(), rect);
687 pass->shared_quad_state_list.back() 689 pass->shared_quad_state_list.back()
688 ->quad_to_target_transform.RotateAboutZAxis(90.f); 690 ->quad_to_target_transform.RotateAboutZAxis(90.f);
689 691
690 OverlayCandidateList candidate_list; 692 OverlayCandidateList candidate_list;
691 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 693 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
692 &candidate_list, nullptr, 694 &candidate_list, nullptr,
693 &damage_rect_); 695 &damage_rect_);
694 ASSERT_EQ(1U, candidate_list.size()); 696 ASSERT_EQ(1U, candidate_list.size());
695 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); 697 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform);
696 } 698 }
697 699
698 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { 700 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) {
699 gfx::Rect rect = kOverlayRect; 701 gfx::Rect rect = kOverlayRect;
700 rect.Offset(-rect.width(), -rect.height()); 702 rect.Offset(-rect.width(), -rect.height());
701 scoped_ptr<RenderPass> pass = CreateRenderPass(); 703 std::unique_ptr<RenderPass> pass = CreateRenderPass();
702 CreateCandidateQuadAt(resource_provider_.get(), 704 CreateCandidateQuadAt(resource_provider_.get(),
703 pass->shared_quad_state_list.back(), pass.get(), rect); 705 pass->shared_quad_state_list.back(), pass.get(), rect);
704 pass->shared_quad_state_list.back() 706 pass->shared_quad_state_list.back()
705 ->quad_to_target_transform.RotateAboutZAxis(180.f); 707 ->quad_to_target_transform.RotateAboutZAxis(180.f);
706 708
707 OverlayCandidateList candidate_list; 709 OverlayCandidateList candidate_list;
708 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 710 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
709 &candidate_list, nullptr, 711 &candidate_list, nullptr,
710 &damage_rect_); 712 &damage_rect_);
711 ASSERT_EQ(1U, candidate_list.size()); 713 ASSERT_EQ(1U, candidate_list.size());
712 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); 714 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform);
713 } 715 }
714 716
715 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { 717 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) {
716 gfx::Rect rect = kOverlayRect; 718 gfx::Rect rect = kOverlayRect;
717 rect.Offset(-rect.width(), 0); 719 rect.Offset(-rect.width(), 0);
718 scoped_ptr<RenderPass> pass = CreateRenderPass(); 720 std::unique_ptr<RenderPass> pass = CreateRenderPass();
719 CreateCandidateQuadAt(resource_provider_.get(), 721 CreateCandidateQuadAt(resource_provider_.get(),
720 pass->shared_quad_state_list.back(), pass.get(), rect); 722 pass->shared_quad_state_list.back(), pass.get(), rect);
721 pass->shared_quad_state_list.back() 723 pass->shared_quad_state_list.back()
722 ->quad_to_target_transform.RotateAboutZAxis(270.f); 724 ->quad_to_target_transform.RotateAboutZAxis(270.f);
723 725
724 OverlayCandidateList candidate_list; 726 OverlayCandidateList candidate_list;
725 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 727 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
726 &candidate_list, nullptr, 728 &candidate_list, nullptr,
727 &damage_rect_); 729 &damage_rect_);
728 ASSERT_EQ(1U, candidate_list.size()); 730 ASSERT_EQ(1U, candidate_list.size());
729 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); 731 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform);
730 } 732 }
731 733
732 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { 734 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
733 scoped_ptr<RenderPass> pass = CreateRenderPass(); 735 std::unique_ptr<RenderPass> pass = CreateRenderPass();
734 CreateOpaqueQuadAt(resource_provider_.get(), 736 CreateOpaqueQuadAt(resource_provider_.get(),
735 pass->shared_quad_state_list.back(), pass.get(), 737 pass->shared_quad_state_list.back(), pass.get(),
736 kOverlayTopLeftRect); 738 kOverlayTopLeftRect);
737 CreateCandidateQuadAt(resource_provider_.get(), 739 CreateCandidateQuadAt(resource_provider_.get(),
738 pass->shared_quad_state_list.back(), 740 pass->shared_quad_state_list.back(),
739 pass.get(), 741 pass.get(),
740 kOverlayBottomRightRect); 742 kOverlayBottomRightRect);
741 743
742 OverlayCandidateList candidate_list; 744 OverlayCandidateList candidate_list;
743 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 745 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
744 &candidate_list, nullptr, 746 &candidate_list, nullptr,
745 &damage_rect_); 747 &damage_rect_);
746 EXPECT_EQ(1U, candidate_list.size()); 748 EXPECT_EQ(1U, candidate_list.size());
747 } 749 }
748 750
749 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { 751 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
750 scoped_ptr<RenderPass> pass = CreateRenderPass(); 752 std::unique_ptr<RenderPass> pass = CreateRenderPass();
751 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 753 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
752 shared_state->opacity = 0.f; 754 shared_state->opacity = 0.f;
753 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 755 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
754 kOverlayBottomRightRect); 756 kOverlayBottomRightRect);
755 shared_state = pass->CreateAndAppendSharedQuadState(); 757 shared_state = pass->CreateAndAppendSharedQuadState();
756 shared_state->opacity = 1.f; 758 shared_state->opacity = 1.f;
757 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 759 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
758 kOverlayBottomRightRect); 760 kOverlayBottomRightRect);
759 761
760 OverlayCandidateList candidate_list; 762 OverlayCandidateList candidate_list;
761 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 763 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
762 &candidate_list, nullptr, 764 &candidate_list, nullptr,
763 &damage_rect_); 765 &damage_rect_);
764 EXPECT_EQ(1U, candidate_list.size()); 766 EXPECT_EQ(1U, candidate_list.size());
765 } 767 }
766 768
767 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { 769 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
768 scoped_ptr<RenderPass> pass = CreateRenderPass(); 770 std::unique_ptr<RenderPass> pass = CreateRenderPass();
769 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), 771 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(),
770 SK_ColorTRANSPARENT, pass.get(), 772 SK_ColorTRANSPARENT, pass.get(),
771 kOverlayBottomRightRect); 773 kOverlayBottomRightRect);
772 CreateCandidateQuadAt(resource_provider_.get(), 774 CreateCandidateQuadAt(resource_provider_.get(),
773 pass->shared_quad_state_list.back(), pass.get(), 775 pass->shared_quad_state_list.back(), pass.get(),
774 kOverlayBottomRightRect); 776 kOverlayBottomRightRect);
775 777
776 OverlayCandidateList candidate_list; 778 OverlayCandidateList candidate_list;
777 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 779 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
778 &candidate_list, nullptr, 780 &candidate_list, nullptr,
779 &damage_rect_); 781 &damage_rect_);
780 EXPECT_EQ(1U, candidate_list.size()); 782 EXPECT_EQ(1U, candidate_list.size());
781 } 783 }
782 784
783 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { 785 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
784 scoped_ptr<RenderPass> pass = CreateRenderPass(); 786 std::unique_ptr<RenderPass> pass = CreateRenderPass();
785 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 787 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
786 shared_state->opacity = 0.5f; 788 shared_state->opacity = 0.5f;
787 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 789 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
788 kOverlayBottomRightRect); 790 kOverlayBottomRightRect);
789 shared_state = pass->CreateAndAppendSharedQuadState(); 791 shared_state = pass->CreateAndAppendSharedQuadState();
790 shared_state->opacity = 1.f; 792 shared_state->opacity = 1.f;
791 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 793 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
792 kOverlayBottomRightRect); 794 kOverlayBottomRightRect);
793 795
794 OverlayCandidateList candidate_list; 796 OverlayCandidateList candidate_list;
795 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 797 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
796 &candidate_list, nullptr, 798 &candidate_list, nullptr,
797 &damage_rect_); 799 &damage_rect_);
798 EXPECT_EQ(0U, candidate_list.size()); 800 EXPECT_EQ(0U, candidate_list.size());
799 } 801 }
800 802
801 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { 803 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
802 scoped_ptr<RenderPass> pass = CreateRenderPass(); 804 std::unique_ptr<RenderPass> pass = CreateRenderPass();
803 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 805 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
804 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), 806 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(),
805 kOverlayBottomRightRect)->opaque_rect = 807 kOverlayBottomRightRect)->opaque_rect =
806 kOverlayBottomRightRect; 808 kOverlayBottomRightRect;
807 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 809 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
808 kOverlayBottomRightRect); 810 kOverlayBottomRightRect);
809 811
810 OverlayCandidateList candidate_list; 812 OverlayCandidateList candidate_list;
811 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 813 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
812 &candidate_list, nullptr, 814 &candidate_list, nullptr,
813 &damage_rect_); 815 &damage_rect_);
814 EXPECT_EQ(0U, candidate_list.size()); 816 EXPECT_EQ(0U, candidate_list.size());
815 } 817 }
816 818
817 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { 819 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
818 scoped_ptr<RenderPass> pass = CreateRenderPass(); 820 std::unique_ptr<RenderPass> pass = CreateRenderPass();
819 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 821 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
820 pass->shared_quad_state_list.back(), 822 pass->shared_quad_state_list.back(),
821 pass.get(), kSwapTransform); 823 pass.get(), kSwapTransform);
822 824
823 OverlayCandidateList candidate_list; 825 OverlayCandidateList candidate_list;
824 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 826 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
825 &candidate_list, nullptr, 827 &candidate_list, nullptr,
826 &damage_rect_); 828 &damage_rect_);
827 EXPECT_EQ(0U, candidate_list.size()); 829 EXPECT_EQ(0U, candidate_list.size());
828 } 830 }
829 831
830 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { 832 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) {
831 scoped_ptr<RenderPass> pass = CreateRenderPass(); 833 std::unique_ptr<RenderPass> pass = CreateRenderPass();
832 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 834 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
833 pass->shared_quad_state_list.back(), 835 pass->shared_quad_state_list.back(),
834 pass.get(), kXMirrorTransform); 836 pass.get(), kXMirrorTransform);
835 837
836 OverlayCandidateList candidate_list; 838 OverlayCandidateList candidate_list;
837 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 839 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
838 &candidate_list, nullptr, 840 &candidate_list, nullptr,
839 &damage_rect_); 841 &damage_rect_);
840 EXPECT_EQ(1U, candidate_list.size()); 842 EXPECT_EQ(1U, candidate_list.size());
841 } 843 }
842 844
843 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { 845 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) {
844 scoped_ptr<RenderPass> pass = CreateRenderPass(); 846 std::unique_ptr<RenderPass> pass = CreateRenderPass();
845 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 847 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
846 pass->shared_quad_state_list.back(), 848 pass->shared_quad_state_list.back(),
847 pass.get(), kBothMirrorTransform); 849 pass.get(), kBothMirrorTransform);
848 850
849 OverlayCandidateList candidate_list; 851 OverlayCandidateList candidate_list;
850 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 852 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
851 &candidate_list, nullptr, 853 &candidate_list, nullptr,
852 &damage_rect_); 854 &damage_rect_);
853 EXPECT_EQ(1U, candidate_list.size()); 855 EXPECT_EQ(1U, candidate_list.size());
854 } 856 }
855 857
856 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { 858 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) {
857 scoped_ptr<RenderPass> pass = CreateRenderPass(); 859 std::unique_ptr<RenderPass> pass = CreateRenderPass();
858 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 860 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
859 pass->shared_quad_state_list.back(), 861 pass->shared_quad_state_list.back(),
860 pass.get(), kNormalTransform); 862 pass.get(), kNormalTransform);
861 863
862 OverlayCandidateList candidate_list; 864 OverlayCandidateList candidate_list;
863 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 865 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
864 &candidate_list, nullptr, 866 &candidate_list, nullptr,
865 &damage_rect_); 867 &damage_rect_);
866 EXPECT_EQ(1U, candidate_list.size()); 868 EXPECT_EQ(1U, candidate_list.size());
867 } 869 }
868 870
869 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { 871 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) {
870 scoped_ptr<RenderPass> pass = CreateRenderPass(); 872 std::unique_ptr<RenderPass> pass = CreateRenderPass();
871 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 873 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
872 pass->shared_quad_state_list.back(), 874 pass->shared_quad_state_list.back(),
873 pass.get(), kYMirrorTransform); 875 pass.get(), kYMirrorTransform);
874 876
875 OverlayCandidateList candidate_list; 877 OverlayCandidateList candidate_list;
876 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 878 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
877 &candidate_list, nullptr, 879 &candidate_list, nullptr,
878 &damage_rect_); 880 &damage_rect_);
879 EXPECT_EQ(1U, candidate_list.size()); 881 EXPECT_EQ(1U, candidate_list.size());
880 } 882 }
881 883
882 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { 884 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) {
883 scoped_ptr<RenderPass> pass = CreateRenderPass(); 885 std::unique_ptr<RenderPass> pass = CreateRenderPass();
884 CreateFullscreenOpaqueQuad(resource_provider_.get(), 886 CreateFullscreenOpaqueQuad(resource_provider_.get(),
885 pass->shared_quad_state_list.back(), pass.get()); 887 pass->shared_quad_state_list.back(), pass.get());
886 CreateCandidateQuadAt(resource_provider_.get(), 888 CreateCandidateQuadAt(resource_provider_.get(),
887 pass->shared_quad_state_list.back(), pass.get(), 889 pass->shared_quad_state_list.back(), pass.get(),
888 kOverlayBottomRightRect); 890 kOverlayBottomRightRect);
889 891
890 OverlayCandidateList candidate_list; 892 OverlayCandidateList candidate_list;
891 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 893 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
892 &candidate_list, nullptr, 894 &candidate_list, nullptr,
893 &damage_rect_); 895 &damage_rect_);
894 ASSERT_EQ(1U, candidate_list.size()); 896 ASSERT_EQ(1U, candidate_list.size());
895 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 897 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
896 EXPECT_EQ(2U, pass->quad_list.size()); 898 EXPECT_EQ(2U, pass->quad_list.size());
897 // The overlay quad should have changed to a SOLID_COLOR quad. 899 // The overlay quad should have changed to a SOLID_COLOR quad.
898 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR); 900 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR);
899 } 901 }
900 902
901 TEST_F(UnderlayTest, AllowOnTop) { 903 TEST_F(UnderlayTest, AllowOnTop) {
902 scoped_ptr<RenderPass> pass = CreateRenderPass(); 904 std::unique_ptr<RenderPass> pass = CreateRenderPass();
903 CreateFullscreenCandidateQuad(resource_provider_.get(), 905 CreateFullscreenCandidateQuad(resource_provider_.get(),
904 pass->shared_quad_state_list.back(), 906 pass->shared_quad_state_list.back(),
905 pass.get()); 907 pass.get());
906 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; 908 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f;
907 CreateFullscreenOpaqueQuad(resource_provider_.get(), 909 CreateFullscreenOpaqueQuad(resource_provider_.get(),
908 pass->shared_quad_state_list.back(), pass.get()); 910 pass->shared_quad_state_list.back(), pass.get());
909 911
910 OverlayCandidateList candidate_list; 912 OverlayCandidateList candidate_list;
911 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 913 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
912 &candidate_list, nullptr, 914 &candidate_list, nullptr,
913 &damage_rect_); 915 &damage_rect_);
914 ASSERT_EQ(1U, candidate_list.size()); 916 ASSERT_EQ(1U, candidate_list.size());
915 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 917 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
916 // The overlay quad should have changed to a SOLID_COLOR quad. 918 // The overlay quad should have changed to a SOLID_COLOR quad.
917 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR); 919 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR);
918 } 920 }
919 921
920 // The first time an underlay is scheduled its damage must not be subtracted. 922 // The first time an underlay is scheduled its damage must not be subtracted.
921 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) { 923 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) {
922 scoped_ptr<RenderPass> pass = CreateRenderPass(); 924 std::unique_ptr<RenderPass> pass = CreateRenderPass();
923 CreateFullscreenCandidateQuad(resource_provider_.get(), 925 CreateFullscreenCandidateQuad(resource_provider_.get(),
924 pass->shared_quad_state_list.back(), 926 pass->shared_quad_state_list.back(),
925 pass.get()); 927 pass.get());
926 928
927 damage_rect_ = kOverlayRect; 929 damage_rect_ = kOverlayRect;
928 930
929 OverlayCandidateList candidate_list; 931 OverlayCandidateList candidate_list;
930 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 932 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
931 &candidate_list, nullptr, 933 &candidate_list, nullptr,
932 &damage_rect_); 934 &damage_rect_);
933 935
934 EXPECT_EQ(kOverlayRect, damage_rect_); 936 EXPECT_EQ(kOverlayRect, damage_rect_);
935 } 937 }
936 938
937 // An identical underlay for two frames in a row means the damage can be 939 // An identical underlay for two frames in a row means the damage can be
938 // subtracted the second time. 940 // subtracted the second time.
939 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) { 941 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) {
940 for (int i = 0; i < 2; ++i) { 942 for (int i = 0; i < 2; ++i) {
941 scoped_ptr<RenderPass> pass = CreateRenderPass(); 943 std::unique_ptr<RenderPass> pass = CreateRenderPass();
942 CreateFullscreenCandidateQuad(resource_provider_.get(), 944 CreateFullscreenCandidateQuad(resource_provider_.get(),
943 pass->shared_quad_state_list.back(), 945 pass->shared_quad_state_list.back(),
944 pass.get()); 946 pass.get());
945 947
946 damage_rect_ = kOverlayRect; 948 damage_rect_ = kOverlayRect;
947 949
948 // Add something behind it. 950 // Add something behind it.
949 CreateFullscreenOpaqueQuad(resource_provider_.get(), 951 CreateFullscreenOpaqueQuad(resource_provider_.get(),
950 pass->shared_quad_state_list.back(), pass.get()); 952 pass->shared_quad_state_list.back(), pass.get());
951 953
952 OverlayCandidateList candidate_list; 954 OverlayCandidateList candidate_list;
953 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 955 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
954 &candidate_list, nullptr, 956 &candidate_list, nullptr,
955 &damage_rect_); 957 &damage_rect_);
956 } 958 }
957 959
958 // The second time the same overlay rect is scheduled it will be subtracted 960 // The second time the same overlay rect is scheduled it will be subtracted
959 // from the damage rect. 961 // from the damage rect.
960 EXPECT_TRUE(damage_rect_.IsEmpty()); 962 EXPECT_TRUE(damage_rect_.IsEmpty());
961 } 963 }
962 964
963 // Underlay damage can only be subtracted if the previous frame's underlay 965 // Underlay damage can only be subtracted if the previous frame's underlay
964 // was the same rect. 966 // was the same rect.
965 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) { 967 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) {
966 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect}; 968 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect};
967 for (int i = 0; i < 2; ++i) { 969 for (int i = 0; i < 2; ++i) {
968 scoped_ptr<RenderPass> pass = CreateRenderPass(); 970 std::unique_ptr<RenderPass> pass = CreateRenderPass();
969 971
970 CreateCandidateQuadAt(resource_provider_.get(), 972 CreateCandidateQuadAt(resource_provider_.get(),
971 pass->shared_quad_state_list.back(), pass.get(), 973 pass->shared_quad_state_list.back(), pass.get(),
972 overlay_rects[i]); 974 overlay_rects[i]);
973 975
974 damage_rect_ = overlay_rects[i]; 976 damage_rect_ = overlay_rects[i];
975 977
976 OverlayCandidateList candidate_list; 978 OverlayCandidateList candidate_list;
977 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 979 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
978 &candidate_list, nullptr, 980 &candidate_list, nullptr,
979 &damage_rect_); 981 &damage_rect_);
980 982
981 EXPECT_EQ(overlay_rects[i], damage_rect_); 983 EXPECT_EQ(overlay_rects[i], damage_rect_);
982 } 984 }
983 } 985 }
984 986
985 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) { 987 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) {
986 for (int i = 0; i < 2; ++i) { 988 for (int i = 0; i < 2; ++i) {
987 scoped_ptr<RenderPass> pass = CreateRenderPass(); 989 std::unique_ptr<RenderPass> pass = CreateRenderPass();
988 // Add an overlapping quad above the candidate. 990 // Add an overlapping quad above the candidate.
989 CreateFullscreenOpaqueQuad(resource_provider_.get(), 991 CreateFullscreenOpaqueQuad(resource_provider_.get(),
990 pass->shared_quad_state_list.back(), pass.get()); 992 pass->shared_quad_state_list.back(), pass.get());
991 CreateFullscreenCandidateQuad(resource_provider_.get(), 993 CreateFullscreenCandidateQuad(resource_provider_.get(),
992 pass->shared_quad_state_list.back(), 994 pass->shared_quad_state_list.back(),
993 pass.get()); 995 pass.get());
994 996
995 damage_rect_ = kOverlayRect; 997 damage_rect_ = kOverlayRect;
996 998
997 OverlayCandidateList candidate_list; 999 OverlayCandidateList candidate_list;
998 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1000 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
999 &candidate_list, nullptr, 1001 &candidate_list, nullptr,
1000 &damage_rect_); 1002 &damage_rect_);
1001 } 1003 }
1002 1004
1003 EXPECT_EQ(kOverlayRect, damage_rect_); 1005 EXPECT_EQ(kOverlayRect, damage_rect_);
1004 } 1006 }
1005 1007
1006 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) { 1008 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) {
1007 for (int i = 0; i < 2; ++i) { 1009 for (int i = 0; i < 2; ++i) {
1008 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1010 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1009 // Add a non-overlapping quad above the candidate. 1011 // Add a non-overlapping quad above the candidate.
1010 CreateOpaqueQuadAt(resource_provider_.get(), 1012 CreateOpaqueQuadAt(resource_provider_.get(),
1011 pass->shared_quad_state_list.back(), pass.get(), 1013 pass->shared_quad_state_list.back(), pass.get(),
1012 kOverlayTopLeftRect); 1014 kOverlayTopLeftRect);
1013 CreateCandidateQuadAt(resource_provider_.get(), 1015 CreateCandidateQuadAt(resource_provider_.get(),
1014 pass->shared_quad_state_list.back(), pass.get(), 1016 pass->shared_quad_state_list.back(), pass.get(),
1015 kOverlayBottomRightRect); 1017 kOverlayBottomRightRect);
1016 1018
1017 damage_rect_ = kOverlayBottomRightRect; 1019 damage_rect_ = kOverlayBottomRightRect;
1018 1020
(...skipping 12 matching lines...) Expand all
1031 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect); 1033 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect);
1032 output_surface_plane.quad_rect_in_target_space = 1034 output_surface_plane.quad_rect_in_target_space =
1033 root_render_pass->output_rect; 1035 root_render_pass->output_rect;
1034 output_surface_plane.use_output_surface_for_resource = true; 1036 output_surface_plane.use_output_surface_for_resource = true;
1035 output_surface_plane.overlay_handled = true; 1037 output_surface_plane.overlay_handled = true;
1036 list.push_back(output_surface_plane); 1038 list.push_back(output_surface_plane);
1037 return list; 1039 return list;
1038 } 1040 }
1039 1041
1040 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { 1042 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) {
1041 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1043 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1042 CreateFullscreenCandidateQuad(resource_provider_.get(), 1044 CreateFullscreenCandidateQuad(resource_provider_.get(),
1043 pass->shared_quad_state_list.back(), 1045 pass->shared_quad_state_list.back(),
1044 pass.get()); 1046 pass.get());
1045 pass->shared_quad_state_list.back() 1047 pass->shared_quad_state_list.back()
1046 ->quad_to_target_transform.RotateAboutZAxis(45.f); 1048 ->quad_to_target_transform.RotateAboutZAxis(45.f);
1047 1049
1048 gfx::Rect damage_rect; 1050 gfx::Rect damage_rect;
1049 CALayerOverlayList ca_layer_list; 1051 CALayerOverlayList ca_layer_list;
1050 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1052 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1051 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1053 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
1052 &overlay_list, &ca_layer_list, 1054 &overlay_list, &ca_layer_list,
1053 &damage_rect); 1055 &damage_rect);
1054 EXPECT_EQ(0U, pass->quad_list.size()); 1056 EXPECT_EQ(0U, pass->quad_list.size());
1055 EXPECT_EQ(0U, overlay_list.size()); 1057 EXPECT_EQ(0U, overlay_list.size());
1056 EXPECT_EQ(1U, ca_layer_list.size()); 1058 EXPECT_EQ(1U, ca_layer_list.size());
1057 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1059 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1058 } 1060 }
1059 1061
1060 TEST_F(CALayerOverlayTest, ThreeDTransform) { 1062 TEST_F(CALayerOverlayTest, ThreeDTransform) {
1061 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1063 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1062 CreateFullscreenCandidateQuad(resource_provider_.get(), 1064 CreateFullscreenCandidateQuad(resource_provider_.get(),
1063 pass->shared_quad_state_list.back(), 1065 pass->shared_quad_state_list.back(),
1064 pass.get()); 1066 pass.get());
1065 pass->shared_quad_state_list.back() 1067 pass->shared_quad_state_list.back()
1066 ->quad_to_target_transform.RotateAboutXAxis(45.f); 1068 ->quad_to_target_transform.RotateAboutXAxis(45.f);
1067 1069
1068 gfx::Rect damage_rect; 1070 gfx::Rect damage_rect;
1069 CALayerOverlayList ca_layer_list; 1071 CALayerOverlayList ca_layer_list;
1070 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1072 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1071 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1073 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
1072 &overlay_list, &ca_layer_list, 1074 &overlay_list, &ca_layer_list,
1073 &damage_rect); 1075 &damage_rect);
1074 EXPECT_EQ(0U, overlay_list.size()); 1076 EXPECT_EQ(0U, overlay_list.size());
1075 EXPECT_EQ(1U, ca_layer_list.size()); 1077 EXPECT_EQ(1U, ca_layer_list.size());
1076 gfx::Transform expected_transform; 1078 gfx::Transform expected_transform;
1077 expected_transform.RotateAboutXAxis(45.f); 1079 expected_transform.RotateAboutXAxis(45.f);
1078 gfx::Transform actual_transform(ca_layer_list.back().transform); 1080 gfx::Transform actual_transform(ca_layer_list.back().transform);
1079 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString()); 1081 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString());
1080 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1082 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1081 } 1083 }
1082 1084
1083 TEST_F(CALayerOverlayTest, AllowContainingClip) { 1085 TEST_F(CALayerOverlayTest, AllowContainingClip) {
1084 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1086 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1085 CreateFullscreenCandidateQuad(resource_provider_.get(), 1087 CreateFullscreenCandidateQuad(resource_provider_.get(),
1086 pass->shared_quad_state_list.back(), 1088 pass->shared_quad_state_list.back(),
1087 pass.get()); 1089 pass.get());
1088 pass->shared_quad_state_list.back()->is_clipped = true; 1090 pass->shared_quad_state_list.back()->is_clipped = true;
1089 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; 1091 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect;
1090 1092
1091 gfx::Rect damage_rect; 1093 gfx::Rect damage_rect;
1092 CALayerOverlayList ca_layer_list; 1094 CALayerOverlayList ca_layer_list;
1093 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1095 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1094 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1096 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
1095 &overlay_list, &ca_layer_list, 1097 &overlay_list, &ca_layer_list,
1096 &damage_rect); 1098 &damage_rect);
1097 EXPECT_EQ(0U, pass->quad_list.size()); 1099 EXPECT_EQ(0U, pass->quad_list.size());
1098 EXPECT_EQ(0U, overlay_list.size()); 1100 EXPECT_EQ(0U, overlay_list.size());
1099 EXPECT_EQ(1U, ca_layer_list.size()); 1101 EXPECT_EQ(1U, ca_layer_list.size());
1100 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1102 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1101 } 1103 }
1102 1104
1103 TEST_F(CALayerOverlayTest, NontrivialClip) { 1105 TEST_F(CALayerOverlayTest, NontrivialClip) {
1104 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1106 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1105 CreateFullscreenCandidateQuad(resource_provider_.get(), 1107 CreateFullscreenCandidateQuad(resource_provider_.get(),
1106 pass->shared_quad_state_list.back(), 1108 pass->shared_quad_state_list.back(),
1107 pass.get()); 1109 pass.get());
1108 pass->shared_quad_state_list.back()->is_clipped = true; 1110 pass->shared_quad_state_list.back()->is_clipped = true;
1109 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); 1111 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128);
1110 1112
1111 gfx::Rect damage_rect; 1113 gfx::Rect damage_rect;
1112 CALayerOverlayList ca_layer_list; 1114 CALayerOverlayList ca_layer_list;
1113 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1115 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1114 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1116 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
1115 &overlay_list, &ca_layer_list, 1117 &overlay_list, &ca_layer_list,
1116 &damage_rect); 1118 &damage_rect);
1117 EXPECT_EQ(0U, pass->quad_list.size()); 1119 EXPECT_EQ(0U, pass->quad_list.size());
1118 EXPECT_EQ(0U, overlay_list.size()); 1120 EXPECT_EQ(0U, overlay_list.size());
1119 EXPECT_EQ(1U, ca_layer_list.size()); 1121 EXPECT_EQ(1U, ca_layer_list.size());
1120 EXPECT_TRUE(ca_layer_list.back().is_clipped); 1122 EXPECT_TRUE(ca_layer_list.back().is_clipped);
1121 EXPECT_EQ(gfx::RectF(64, 64, 128, 128), ca_layer_list.back().clip_rect); 1123 EXPECT_EQ(gfx::RectF(64, 64, 128, 128), ca_layer_list.back().clip_rect);
1122 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1124 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1123 } 1125 }
1124 1126
1125 TEST_F(CALayerOverlayTest, SkipTransparent) { 1127 TEST_F(CALayerOverlayTest, SkipTransparent) {
1126 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1128 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1127 CreateFullscreenCandidateQuad(resource_provider_.get(), 1129 CreateFullscreenCandidateQuad(resource_provider_.get(),
1128 pass->shared_quad_state_list.back(), 1130 pass->shared_quad_state_list.back(),
1129 pass.get()); 1131 pass.get());
1130 pass->shared_quad_state_list.back()->opacity = 0; 1132 pass->shared_quad_state_list.back()->opacity = 0;
1131 1133
1132 gfx::Rect damage_rect; 1134 gfx::Rect damage_rect;
1133 CALayerOverlayList ca_layer_list; 1135 CALayerOverlayList ca_layer_list;
1134 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1136 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1135 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1137 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(),
1136 &overlay_list, &ca_layer_list, 1138 &overlay_list, &ca_layer_list,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 FakeResourceProvider::Create(output_surface_.get(), nullptr); 1210 FakeResourceProvider::Create(output_surface_.get(), nullptr);
1209 1211
1210 provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind( 1212 provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind(
1211 &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_))); 1213 &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_)));
1212 } 1214 }
1213 1215
1214 void Init(bool use_validator) { 1216 void Init(bool use_validator) {
1215 if (use_validator) 1217 if (use_validator)
1216 output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator); 1218 output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator);
1217 1219
1218 renderer_ = 1220 renderer_ = base::WrapUnique(new OverlayInfoRendererGL(
1219 make_scoped_ptr(new OverlayInfoRendererGL(&renderer_client_, 1221 &renderer_client_, &settings_, output_surface_.get(),
1220 &settings_, 1222 resource_provider_.get()));
1221 output_surface_.get(),
1222 resource_provider_.get()));
1223 } 1223 }
1224 1224
1225 void SwapBuffers() { 1225 void SwapBuffers() {
1226 renderer_->SwapBuffers(CompositorFrameMetadata()); 1226 renderer_->SwapBuffers(CompositorFrameMetadata());
1227 output_surface_->OnSwapBuffersComplete(); 1227 output_surface_->OnSwapBuffersComplete();
1228 renderer_->SwapBuffersComplete(); 1228 renderer_->SwapBuffersComplete();
1229 } 1229 }
1230 void SwapBuffersWithoutComplete() { 1230 void SwapBuffersWithoutComplete() {
1231 renderer_->SwapBuffers(CompositorFrameMetadata()); 1231 renderer_->SwapBuffers(CompositorFrameMetadata());
1232 } 1232 }
1233 void SwapBuffersComplete() { 1233 void SwapBuffersComplete() {
1234 output_surface_->OnSwapBuffersComplete(); 1234 output_surface_->OnSwapBuffersComplete();
1235 renderer_->SwapBuffersComplete(); 1235 renderer_->SwapBuffersComplete();
1236 } 1236 }
1237 1237
1238 RendererSettings settings_; 1238 RendererSettings settings_;
1239 FakeOutputSurfaceClient output_surface_client_; 1239 FakeOutputSurfaceClient output_surface_client_;
1240 scoped_ptr<OverlayOutputSurface> output_surface_; 1240 std::unique_ptr<OverlayOutputSurface> output_surface_;
1241 FakeRendererClient renderer_client_; 1241 FakeRendererClient renderer_client_;
1242 scoped_ptr<ResourceProvider> resource_provider_; 1242 std::unique_ptr<ResourceProvider> resource_provider_;
1243 scoped_ptr<OverlayInfoRendererGL> renderer_; 1243 std::unique_ptr<OverlayInfoRendererGL> renderer_;
1244 scoped_refptr<TestContextProvider> provider_; 1244 scoped_refptr<TestContextProvider> provider_;
1245 MockOverlayScheduler scheduler_; 1245 MockOverlayScheduler scheduler_;
1246 }; 1246 };
1247 1247
1248 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { 1248 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) {
1249 bool use_validator = true; 1249 bool use_validator = true;
1250 Init(use_validator); 1250 Init(use_validator);
1251 renderer_->set_expect_overlays(true); 1251 renderer_->set_expect_overlays(true);
1252 gfx::Rect viewport_rect(16, 16); 1252 gfx::Rect viewport_rect(16, 16);
1253 1253
1254 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1254 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1255 1255
1256 CreateCandidateQuadAt(resource_provider_.get(), 1256 CreateCandidateQuadAt(resource_provider_.get(),
1257 pass->shared_quad_state_list.back(), pass.get(), 1257 pass->shared_quad_state_list.back(), pass.get(),
1258 kOverlayBottomRightRect); 1258 kOverlayBottomRightRect);
1259 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1259 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1260 pass->shared_quad_state_list.back(), pass.get()); 1260 pass->shared_quad_state_list.back(), pass.get());
1261 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1261 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1262 pass->shared_quad_state_list.back(), pass.get()); 1262 pass->shared_quad_state_list.back(), pass.get());
1263 1263
1264 RenderPassList pass_list; 1264 RenderPassList pass_list;
(...skipping 18 matching lines...) Expand all
1283 Mock::VerifyAndClearExpectations(renderer_.get()); 1283 Mock::VerifyAndClearExpectations(renderer_.get());
1284 Mock::VerifyAndClearExpectations(&scheduler_); 1284 Mock::VerifyAndClearExpectations(&scheduler_);
1285 } 1285 }
1286 1286
1287 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) { 1287 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) {
1288 bool use_validator = true; 1288 bool use_validator = true;
1289 Init(use_validator); 1289 Init(use_validator);
1290 renderer_->set_expect_overlays(true); 1290 renderer_->set_expect_overlays(true);
1291 gfx::Rect viewport_rect(16, 16); 1291 gfx::Rect viewport_rect(16, 16);
1292 1292
1293 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1293 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1294 1294
1295 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1295 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1296 pass->shared_quad_state_list.back(), pass.get()); 1296 pass->shared_quad_state_list.back(), pass.get());
1297 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1297 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1298 pass->shared_quad_state_list.back(), pass.get()); 1298 pass->shared_quad_state_list.back(), pass.get());
1299 1299
1300 CreateFullscreenCandidateQuad(resource_provider_.get(), 1300 CreateFullscreenCandidateQuad(resource_provider_.get(),
1301 pass->shared_quad_state_list.back(), 1301 pass->shared_quad_state_list.back(),
1302 pass.get()); 1302 pass.get());
1303 1303
(...skipping 19 matching lines...) Expand all
1323 Mock::VerifyAndClearExpectations(renderer_.get()); 1323 Mock::VerifyAndClearExpectations(renderer_.get());
1324 Mock::VerifyAndClearExpectations(&scheduler_); 1324 Mock::VerifyAndClearExpectations(&scheduler_);
1325 } 1325 }
1326 1326
1327 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) { 1327 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) {
1328 bool use_validator = false; 1328 bool use_validator = false;
1329 Init(use_validator); 1329 Init(use_validator);
1330 renderer_->set_expect_overlays(false); 1330 renderer_->set_expect_overlays(false);
1331 gfx::Rect viewport_rect(16, 16); 1331 gfx::Rect viewport_rect(16, 16);
1332 1332
1333 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1333 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1334 1334
1335 CreateFullscreenCandidateQuad(resource_provider_.get(), 1335 CreateFullscreenCandidateQuad(resource_provider_.get(),
1336 pass->shared_quad_state_list.back(), 1336 pass->shared_quad_state_list.back(),
1337 pass.get()); 1337 pass.get());
1338 1338
1339 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1339 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1340 pass->shared_quad_state_list.back(), pass.get()); 1340 pass->shared_quad_state_list.back(), pass.get());
1341 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1341 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1342 pass->shared_quad_state_list.back(), pass.get()); 1342 pass->shared_quad_state_list.back(), pass.get());
1343 1343
(...skipping 13 matching lines...) Expand all
1357 1357
1358 // GLRenderer skips drawing occluded quads when partial swap is enabled. 1358 // GLRenderer skips drawing occluded quads when partial swap is enabled.
1359 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenPartialSwapEnabled) { 1359 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenPartialSwapEnabled) {
1360 provider_->TestContext3d()->set_have_post_sub_buffer(true); 1360 provider_->TestContext3d()->set_have_post_sub_buffer(true);
1361 settings_.partial_swap_enabled = true; 1361 settings_.partial_swap_enabled = true;
1362 bool use_validator = true; 1362 bool use_validator = true;
1363 Init(use_validator); 1363 Init(use_validator);
1364 renderer_->set_expect_overlays(true); 1364 renderer_->set_expect_overlays(true);
1365 gfx::Rect viewport_rect(16, 16); 1365 gfx::Rect viewport_rect(16, 16);
1366 1366
1367 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1367 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1368 1368
1369 CreateFullscreenCandidateQuad(resource_provider_.get(), 1369 CreateFullscreenCandidateQuad(resource_provider_.get(),
1370 pass->shared_quad_state_list.back(), 1370 pass->shared_quad_state_list.back(),
1371 pass.get()); 1371 pass.get());
1372 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1372 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1373 pass->shared_quad_state_list.back(), pass.get()); 1373 pass->shared_quad_state_list.back(), pass.get());
1374 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1374 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1375 pass->shared_quad_state_list.back(), pass.get()); 1375 pass->shared_quad_state_list.back(), pass.get());
1376 1376
1377 RenderPassList pass_list; 1377 RenderPassList pass_list;
(...skipping 10 matching lines...) Expand all
1388 } 1388 }
1389 1389
1390 // GLRenderer skips drawing occluded quads when empty swap is enabled. 1390 // GLRenderer skips drawing occluded quads when empty swap is enabled.
1391 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenEmptySwapAllowed) { 1391 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenEmptySwapAllowed) {
1392 provider_->TestContext3d()->set_have_commit_overlay_planes(true); 1392 provider_->TestContext3d()->set_have_commit_overlay_planes(true);
1393 bool use_validator = true; 1393 bool use_validator = true;
1394 Init(use_validator); 1394 Init(use_validator);
1395 renderer_->set_expect_overlays(true); 1395 renderer_->set_expect_overlays(true);
1396 gfx::Rect viewport_rect(16, 16); 1396 gfx::Rect viewport_rect(16, 16);
1397 1397
1398 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1398 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1399 1399
1400 CreateFullscreenCandidateQuad(resource_provider_.get(), 1400 CreateFullscreenCandidateQuad(resource_provider_.get(),
1401 pass->shared_quad_state_list.back(), 1401 pass->shared_quad_state_list.back(),
1402 pass.get()); 1402 pass.get());
1403 1403
1404 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1404 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1405 pass->shared_quad_state_list.back(), pass.get()); 1405 pass->shared_quad_state_list.back(), pass.get());
1406 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1406 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1407 pass->shared_quad_state_list.back(), pass.get()); 1407 pass->shared_quad_state_list.back(), pass.get());
1408 1408
(...skipping 15 matching lines...) Expand all
1424 Init(use_validator); 1424 Init(use_validator);
1425 renderer_->set_expect_overlays(true); 1425 renderer_->set_expect_overlays(true);
1426 1426
1427 ResourceId resource1 = 1427 ResourceId resource1 =
1428 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1428 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1429 ResourceId resource2 = 1429 ResourceId resource2 =
1430 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1430 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1431 ResourceId resource3 = 1431 ResourceId resource3 =
1432 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1432 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1433 1433
1434 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1434 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1435 RenderPassList pass_list; 1435 RenderPassList pass_list;
1436 pass_list.push_back(std::move(pass)); 1436 pass_list.push_back(std::move(pass));
1437 1437
1438 DirectRenderer::DrawingFrame frame1; 1438 DirectRenderer::DrawingFrame frame1;
1439 frame1.render_passes_in_draw_order = &pass_list; 1439 frame1.render_passes_in_draw_order = &pass_list;
1440 frame1.overlay_list.resize(2); 1440 frame1.overlay_list.resize(2);
1441 frame1.overlay_list.front().use_output_surface_for_resource = true; 1441 frame1.overlay_list.front().use_output_surface_for_resource = true;
1442 OverlayCandidate& overlay1 = frame1.overlay_list.back(); 1442 OverlayCandidate& overlay1 = frame1.overlay_list.back();
1443 overlay1.resource_id = resource1; 1443 overlay1.resource_id = resource1;
1444 overlay1.plane_z_order = 1; 1444 overlay1.plane_z_order = 1;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1547 Init(use_validator); 1547 Init(use_validator);
1548 renderer_->set_expect_overlays(true); 1548 renderer_->set_expect_overlays(true);
1549 1549
1550 ResourceId resource1 = 1550 ResourceId resource1 =
1551 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1551 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1552 ResourceId resource2 = 1552 ResourceId resource2 =
1553 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1553 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1554 ResourceId resource3 = 1554 ResourceId resource3 =
1555 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); 1555 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true);
1556 1556
1557 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1557 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1558 RenderPassList pass_list; 1558 RenderPassList pass_list;
1559 pass_list.push_back(std::move(pass)); 1559 pass_list.push_back(std::move(pass));
1560 1560
1561 DirectRenderer::DrawingFrame frame1; 1561 DirectRenderer::DrawingFrame frame1;
1562 frame1.render_passes_in_draw_order = &pass_list; 1562 frame1.render_passes_in_draw_order = &pass_list;
1563 frame1.overlay_list.resize(2); 1563 frame1.overlay_list.resize(2);
1564 frame1.overlay_list.front().use_output_surface_for_resource = true; 1564 frame1.overlay_list.front().use_output_surface_for_resource = true;
1565 OverlayCandidate& overlay1 = frame1.overlay_list.back(); 1565 OverlayCandidate& overlay1 = frame1.overlay_list.back();
1566 overlay1.resource_id = resource1; 1566 overlay1.resource_id = resource1;
1567 overlay1.plane_z_order = 1; 1567 overlay1.plane_z_order = 1;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1630 1630
1631 // This completion corresponds to the third frame. 1631 // This completion corresponds to the third frame.
1632 SwapBuffersComplete(); 1632 SwapBuffersComplete();
1633 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1633 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1634 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1634 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1635 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); 1635 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3));
1636 } 1636 }
1637 1637
1638 } // namespace 1638 } // namespace
1639 } // namespace cc 1639 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_processor.h ('k') | cc/output/renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698