| Index: cc/output/overlay_unittest.cc
 | 
| diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc
 | 
| index 46826799c95d6354abfbc93b079029da1f0c5b35..6ee388a65e3ab861f5fb8adb35f3eebf38bd3eea 100644
 | 
| --- a/cc/output/overlay_unittest.cc
 | 
| +++ b/cc/output/overlay_unittest.cc
 | 
| @@ -156,6 +156,17 @@ ResourceProvider::ResourceId CreateResource(
 | 
|        mailbox, release_callback.Pass());
 | 
|  }
 | 
|  
 | 
| +SolidColorDrawQuad* CreateSolidColorQuadAt(
 | 
| +    const SharedQuadState* shared_quad_state,
 | 
| +    SkColor color,
 | 
| +    RenderPass* render_pass,
 | 
| +    const gfx::Rect& rect) {
 | 
| +  SolidColorDrawQuad* quad =
 | 
| +      render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
 | 
| +  quad->SetNew(shared_quad_state, rect, rect, color, false);
 | 
| +  return quad;
 | 
| +}
 | 
| +
 | 
|  TextureDrawQuad* CreateCandidateQuadAt(ResourceProvider* resource_provider,
 | 
|                                         const SharedQuadState* shared_quad_state,
 | 
|                                         RenderPass* render_pass,
 | 
| @@ -592,6 +603,94 @@ TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
 | 
|    EXPECT_EQ(2U, candidate_list.size());
 | 
|  }
 | 
|  
 | 
| +TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
 | 
| +  scoped_ptr<RenderPass> pass = CreateRenderPass();
 | 
| +  SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
 | 
| +  shared_state->opacity = 0.f;
 | 
| +  CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
 | 
| +                         kOverlayBottomRightRect);
 | 
| +  shared_state = pass->CreateAndAppendSharedQuadState();
 | 
| +  shared_state->opacity = 1.f;
 | 
| +  CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
 | 
| +                        kOverlayBottomRightRect);
 | 
| +
 | 
| +  RenderPassList pass_list;
 | 
| +  pass_list.push_back(pass.Pass());
 | 
| +
 | 
| +  RenderPassList original_pass_list;
 | 
| +  RenderPass::CopyAll(pass_list, &original_pass_list);
 | 
| +
 | 
| +  OverlayCandidateList candidate_list;
 | 
| +  overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
 | 
| +  EXPECT_EQ(1U, pass_list.size());
 | 
| +  EXPECT_EQ(2U, candidate_list.size());
 | 
| +}
 | 
| +
 | 
| +TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
 | 
| +  scoped_ptr<RenderPass> pass = CreateRenderPass();
 | 
| +  CreateSolidColorQuadAt(pass->shared_quad_state_list.back(),
 | 
| +                         SK_ColorTRANSPARENT, pass.get(),
 | 
| +                         kOverlayBottomRightRect);
 | 
| +  CreateCandidateQuadAt(resource_provider_.get(),
 | 
| +                        pass->shared_quad_state_list.back(), pass.get(),
 | 
| +                        kOverlayBottomRightRect);
 | 
| +
 | 
| +  RenderPassList pass_list;
 | 
| +  pass_list.push_back(pass.Pass());
 | 
| +
 | 
| +  RenderPassList original_pass_list;
 | 
| +  RenderPass::CopyAll(pass_list, &original_pass_list);
 | 
| +
 | 
| +  OverlayCandidateList candidate_list;
 | 
| +  overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
 | 
| +  EXPECT_EQ(1U, pass_list.size());
 | 
| +  EXPECT_EQ(2U, candidate_list.size());
 | 
| +}
 | 
| +
 | 
| +TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
 | 
| +  scoped_ptr<RenderPass> pass = CreateRenderPass();
 | 
| +  SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
 | 
| +  shared_state->opacity = 0.5f;
 | 
| +  CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
 | 
| +                         kOverlayBottomRightRect);
 | 
| +  shared_state = pass->CreateAndAppendSharedQuadState();
 | 
| +  shared_state->opacity = 1.f;
 | 
| +  CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
 | 
| +                        kOverlayBottomRightRect);
 | 
| +
 | 
| +  RenderPassList pass_list;
 | 
| +  pass_list.push_back(pass.Pass());
 | 
| +
 | 
| +  RenderPassList original_pass_list;
 | 
| +  RenderPass::CopyAll(pass_list, &original_pass_list);
 | 
| +
 | 
| +  OverlayCandidateList candidate_list;
 | 
| +  overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
 | 
| +  EXPECT_EQ(1U, pass_list.size());
 | 
| +  EXPECT_EQ(0U, candidate_list.size());
 | 
| +}
 | 
| +
 | 
| +TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
 | 
| +  scoped_ptr<RenderPass> pass = CreateRenderPass();
 | 
| +  SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
 | 
| +  CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(),
 | 
| +                         kOverlayBottomRightRect)->opaque_rect =
 | 
| +      kOverlayBottomRightRect;
 | 
| +  CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
 | 
| +                        kOverlayBottomRightRect);
 | 
| +
 | 
| +  RenderPassList pass_list;
 | 
| +  pass_list.push_back(pass.Pass());
 | 
| +
 | 
| +  RenderPassList original_pass_list;
 | 
| +  RenderPass::CopyAll(pass_list, &original_pass_list);
 | 
| +
 | 
| +  OverlayCandidateList candidate_list;
 | 
| +  overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
 | 
| +  EXPECT_EQ(1U, pass_list.size());
 | 
| +  EXPECT_EQ(0U, candidate_list.size());
 | 
| +}
 | 
| +
 | 
|  TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
 | 
|    scoped_ptr<RenderPass> pass = CreateRenderPass();
 | 
|    CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
 | 
| 
 |