Index: cc/output/overlay_unittest.cc |
diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc |
index b1d525434a93bac6c95ed325434bd10a942c67e5..975641ea8764c9c0ae4f86bfdd33f6f9aad07c7a 100644 |
--- a/cc/output/overlay_unittest.cc |
+++ b/cc/output/overlay_unittest.cc |
@@ -20,6 +20,7 @@ |
#include "cc/output/overlay_strategy_fullscreen.h" |
#include "cc/output/overlay_strategy_single_on_top.h" |
#include "cc/output/overlay_strategy_underlay.h" |
+#include "cc/output/overlay_strategy_underlay_cast.h" |
#include "cc/quads/render_pass.h" |
#include "cc/quads/render_pass_draw_quad.h" |
#include "cc/quads/solid_color_draw_quad.h" |
@@ -77,6 +78,8 @@ class FullscreenOverlayValidator : public OverlayCandidateValidator { |
class SingleOverlayValidator : public OverlayCandidateValidator { |
public: |
+ SingleOverlayValidator() : expected_rect_(kOverlayRect) {} |
+ |
void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
strategies->push_back(base::MakeUnique<OverlayStrategySingleOnTop>(this)); |
strategies->push_back(base::MakeUnique<OverlayStrategyUnderlay>(this)); |
@@ -90,15 +93,12 @@ class SingleOverlayValidator : public OverlayCandidateValidator { |
OverlayCandidate& candidate = surfaces->back(); |
EXPECT_TRUE(!candidate.use_output_surface_for_resource); |
- if (candidate.display_rect.width() == kOverlayBottomRightRect.width()) { |
- EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect); |
- } else { |
- EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); |
- EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); |
- EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); |
- EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), |
- 0.01f); |
- } |
+ EXPECT_NEAR(expected_rect_.x(), candidate.display_rect.x(), 0.01f); |
+ EXPECT_NEAR(expected_rect_.y(), candidate.display_rect.y(), 0.01f); |
+ EXPECT_NEAR(expected_rect_.width(), candidate.display_rect.width(), 0.01f); |
+ EXPECT_NEAR(expected_rect_.height(), candidate.display_rect.height(), |
+ 0.01f); |
+ |
EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight), |
candidate.uv_rect); |
if (!candidate.clip_rect.IsEmpty()) { |
@@ -107,6 +107,11 @@ class SingleOverlayValidator : public OverlayCandidateValidator { |
} |
candidate.overlay_handled = true; |
} |
+ |
+ void SetExpectedRect(const gfx::RectF& rect) { expected_rect_ = rect; } |
+ |
+ private: |
+ gfx::RectF expected_rect_; |
}; |
class CALayerValidator : public OverlayCandidateValidator { |
@@ -130,6 +135,13 @@ class UnderlayOverlayValidator : public SingleOverlayValidator { |
} |
}; |
+class UnderlayCastOverlayValidator : public SingleOverlayValidator { |
+ public: |
+ void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
+ strategies->push_back(base::MakeUnique<OverlayStrategyUnderlayCast>(this)); |
+ } |
+}; |
+ |
class DefaultOverlayProcessor : public OverlayProcessor { |
public: |
explicit DefaultOverlayProcessor(OutputSurface* surface); |
@@ -144,6 +156,7 @@ size_t DefaultOverlayProcessor::GetStrategyCount() { |
return strategies_.size(); |
} |
+template <typename OverlayCandidateValidatorType> |
class OverlayOutputSurface : public OutputSurface { |
public: |
explicit OverlayOutputSurface( |
@@ -171,7 +184,7 @@ class OverlayOutputSurface : public OutputSurface { |
} |
bool HasExternalStencilTest() const override { return false; } |
void ApplyExternalStencil() override {} |
- OverlayCandidateValidator* GetOverlayCandidateValidator() const override { |
+ OverlayCandidateValidatorType* GetOverlayCandidateValidator() const override { |
return overlay_candidate_validator_.get(); |
} |
bool IsDisplayedAsOverlayPlane() const override { |
@@ -184,14 +197,14 @@ class OverlayOutputSurface : public OutputSurface { |
is_displayed_as_overlay_plane_ = value; |
} |
- void SetOverlayCandidateValidator(OverlayCandidateValidator* validator) { |
+ void SetOverlayCandidateValidator(OverlayCandidateValidatorType* validator) { |
overlay_candidate_validator_.reset(validator); |
} |
unsigned bind_framebuffer_count() const { return bind_framebuffer_count_; } |
private: |
- std::unique_ptr<OverlayCandidateValidator> overlay_candidate_validator_; |
+ std::unique_ptr<OverlayCandidateValidatorType> overlay_candidate_validator_; |
bool is_displayed_as_overlay_plane_; |
unsigned bind_framebuffer_count_ = 0; |
}; |
@@ -208,6 +221,20 @@ std::unique_ptr<RenderPass> CreateRenderPass() { |
return pass; |
} |
+std::unique_ptr<RenderPass> CreateRenderPassWithTransform( |
+ const gfx::Transform& transform) { |
+ int render_pass_id = 1; |
+ gfx::Rect output_rect(0, 0, 256, 256); |
+ |
+ std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
+ pass->SetNew(render_pass_id, output_rect, output_rect, gfx::Transform()); |
+ |
+ SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
+ shared_state->opacity = 1.f; |
+ shared_state->quad_to_target_transform = transform; |
+ return pass; |
+} |
+ |
ResourceId CreateResource(ResourceProvider* resource_provider, |
const gfx::Size& size, |
bool is_overlay_candidate) { |
@@ -302,6 +329,17 @@ void CreateOpaqueQuadAt(ResourceProvider* resource_provider, |
color_quad->SetNew(shared_quad_state, rect, rect, SK_ColorBLACK, false); |
} |
+void CreateOpaqueQuadAt(ResourceProvider* resource_provider, |
+ const SharedQuadState* shared_quad_state, |
+ RenderPass* render_pass, |
+ const gfx::Rect& rect, |
+ SkColor color) { |
+ DCHECK_EQ(255u, SkColorGetA(color)); |
+ SolidColorDrawQuad* color_quad = |
+ render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
+ color_quad->SetNew(shared_quad_state, rect, rect, color, false); |
+} |
+ |
void CreateFullscreenOpaqueQuad(ResourceProvider* resource_provider, |
const SharedQuadState* shared_quad_state, |
RenderPass* render_pass) { |
@@ -341,11 +379,13 @@ static void CompareRenderPassLists(const RenderPassList& expected_list, |
template <typename OverlayCandidateValidatorType> |
class OverlayTest : public testing::Test { |
+ using OutputSurfaceType = OverlayOutputSurface<OverlayCandidateValidatorType>; |
+ |
protected: |
void SetUp() override { |
provider_ = TestContextProvider::Create(); |
provider_->BindToCurrentThread(); |
- output_surface_.reset(new OverlayOutputSurface(provider_)); |
+ output_surface_ = base::MakeUnique<OutputSurfaceType>(provider_); |
output_surface_->BindToClient(&client_); |
output_surface_->SetOverlayCandidateValidator( |
new OverlayCandidateValidatorType); |
@@ -359,22 +399,24 @@ class OverlayTest : public testing::Test { |
} |
scoped_refptr<TestContextProvider> provider_; |
- std::unique_ptr<OverlayOutputSurface> output_surface_; |
+ std::unique_ptr<OutputSurfaceType> output_surface_; |
FakeOutputSurfaceClient client_; |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; |
std::unique_ptr<ResourceProvider> resource_provider_; |
std::unique_ptr<OverlayProcessor> overlay_processor_; |
gfx::Rect damage_rect_; |
+ std::vector<gfx::Rect> content_bounds_; |
}; |
-typedef OverlayTest<FullscreenOverlayValidator> FullscreenOverlayTest; |
-typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest; |
-typedef OverlayTest<UnderlayOverlayValidator> UnderlayTest; |
-typedef OverlayTest<CALayerValidator> CALayerOverlayTest; |
+using FullscreenOverlayTest = OverlayTest<FullscreenOverlayValidator>; |
+using SingleOverlayOnTopTest = OverlayTest<SingleOnTopOverlayValidator>; |
+using UnderlayTest = OverlayTest<UnderlayOverlayValidator>; |
+using UnderlayCastTest = OverlayTest<UnderlayCastOverlayValidator>; |
+using CALayerOverlayTest = OverlayTest<CALayerValidator>; |
TEST(OverlayTest, NoOverlaysByDefault) { |
scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); |
- OverlayOutputSurface output_surface(provider); |
+ OverlayOutputSurface<OverlayCandidateValidator> output_surface(provider); |
EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); |
output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); |
@@ -384,7 +426,7 @@ TEST(OverlayTest, NoOverlaysByDefault) { |
TEST(OverlayTest, OverlaysProcessorHasStrategy) { |
scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); |
provider->BindToCurrentThread(); |
- OverlayOutputSurface output_surface(provider); |
+ OverlayOutputSurface<OverlayCandidateValidator> output_surface(provider); |
FakeOutputSurfaceClient client; |
output_surface.BindToClient(&client); |
output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); |
@@ -417,7 +459,8 @@ TEST_F(FullscreenOverlayTest, SuccessfulOverlay) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
RenderPass* main_pass = pass.get(); |
@@ -442,7 +485,8 @@ TEST_F(FullscreenOverlayTest, ResourceSizeInPixelsFail) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(0U, candidate_list.size()); |
RenderPass* main_pass = pass.get(); |
@@ -468,7 +512,8 @@ TEST_F(FullscreenOverlayTest, OnTopFail) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(0U, candidate_list.size()); |
RenderPass* main_pass = pass.get(); |
@@ -490,7 +535,8 @@ TEST_F(FullscreenOverlayTest, NotCoveringFullscreenFail) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(0U, candidate_list.size()); |
RenderPass* main_pass = pass.get(); |
@@ -519,7 +565,8 @@ TEST_F(FullscreenOverlayTest, RemoveFullscreenQuadFromQuadList) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
// Check that the fullscreen quad is gone. |
@@ -548,7 +595,8 @@ TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
RenderPass* main_pass = pass.get(); |
@@ -593,7 +641,8 @@ TEST_F(SingleOverlayOnTopTest, DamageRect) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
DCHECK(damage_rect_.IsEmpty()); |
} |
@@ -615,7 +664,8 @@ TEST_F(SingleOverlayOnTopTest, NoCandidates) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass_list.back().get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
// There should be nothing new here. |
CompareRenderPassLists(pass_list, original_pass_list); |
@@ -643,7 +693,8 @@ TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass_list.back().get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
// There should be nothing new here. |
CompareRenderPassLists(pass_list, original_pass_list); |
@@ -668,7 +719,8 @@ TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
@@ -685,7 +737,8 @@ TEST_F(SingleOverlayOnTopTest, RejectBlending) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -702,7 +755,8 @@ TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -718,7 +772,8 @@ TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -734,7 +789,8 @@ TEST_F(SingleOverlayOnTopTest, RejectOpacity) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -751,7 +807,8 @@ TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -768,7 +825,8 @@ TEST_F(SingleOverlayOnTopTest, AllowClipped) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
@@ -786,7 +844,8 @@ TEST_F(UnderlayTest, AllowVerticalFlip) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
candidate_list.back().transform); |
@@ -807,7 +866,8 @@ TEST_F(UnderlayTest, AllowHorizontalFlip) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
candidate_list.back().transform); |
@@ -826,7 +886,8 @@ TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
@@ -844,7 +905,8 @@ TEST_F(SingleOverlayOnTopTest, RejectTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(0U, candidate_list.size()); |
} |
@@ -862,7 +924,8 @@ TEST_F(UnderlayTest, Allow90DegreeRotation) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
} |
@@ -881,7 +944,8 @@ TEST_F(UnderlayTest, Allow180DegreeRotation) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
} |
@@ -900,12 +964,16 @@ TEST_F(UnderlayTest, Allow270DegreeRotation) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
} |
TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(kOverlayBottomRightRect)); |
+ |
std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
CreateOpaqueQuadAt(resource_provider_.get(), |
pass->shared_quad_state_list.back(), pass.get(), |
@@ -920,11 +988,15 @@ TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(kOverlayBottomRightRect)); |
+ |
std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
shared_state->opacity = 0.f; |
@@ -940,11 +1012,15 @@ TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(kOverlayBottomRightRect)); |
+ |
std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), |
SK_ColorTRANSPARENT, pass.get(), |
@@ -958,7 +1034,8 @@ TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
@@ -978,7 +1055,8 @@ TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -996,7 +1074,8 @@ TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -1011,7 +1090,8 @@ TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(0U, candidate_list.size()); |
} |
@@ -1026,7 +1106,8 @@ TEST_F(UnderlayTest, AllowVideoXMirrorTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
@@ -1041,7 +1122,8 @@ TEST_F(UnderlayTest, AllowVideoBothMirrorTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
@@ -1056,7 +1138,8 @@ TEST_F(UnderlayTest, AllowVideoNormalTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
@@ -1071,11 +1154,15 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(1U, candidate_list.size()); |
} |
TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(kOverlayBottomRightRect)); |
+ |
std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
CreateFullscreenOpaqueQuad(resource_provider_.get(), |
pass->shared_quad_state_list.back(), pass.get()); |
@@ -1088,7 +1175,8 @@ TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
EXPECT_EQ(2U, pass->quad_list.size()); |
@@ -1110,7 +1198,8 @@ TEST_F(UnderlayTest, AllowOnTop) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
ASSERT_EQ(1U, candidate_list.size()); |
EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
// The overlay quad should have changed to a SOLID_COLOR quad. |
@@ -1131,7 +1220,8 @@ TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(kOverlayRect, damage_rect_); |
} |
@@ -1156,8 +1246,8 @@ TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, |
- &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
} |
// The second time the same overlay rect is scheduled it will be subtracted |
@@ -1170,6 +1260,9 @@ TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) { |
TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) { |
gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect}; |
for (int i = 0; i < 2; ++i) { |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(overlay_rects[i])); |
+ |
std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
CreateCandidateQuadAt(resource_provider_.get(), |
@@ -1183,8 +1276,8 @@ TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, |
- &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
EXPECT_EQ(overlay_rects[i], damage_rect_); |
} |
@@ -1207,14 +1300,17 @@ TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, |
- &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
} |
EXPECT_EQ(kOverlayRect, damage_rect_); |
} |
TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) { |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(kOverlayBottomRightRect)); |
+ |
for (int i = 0; i < 2; ++i) { |
std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
// Add a non-overlapping quad above the candidate. |
@@ -1232,13 +1328,184 @@ TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) { |
RenderPassFilterList render_pass_background_filters; |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
- render_pass_background_filters, &candidate_list, nullptr, |
- &damage_rect_); |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
} |
EXPECT_TRUE(damage_rect_.IsEmpty()); |
} |
+TEST_F(UnderlayCastTest, NoOverlayContentBounds) { |
+ std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
+ |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayTopLeftRect); |
+ |
+ OverlayCandidateList candidate_list; |
+ RenderPassFilterList render_pass_filters; |
+ RenderPassFilterList render_pass_background_filters; |
+ overlay_processor_->ProcessForOverlays( |
+ resource_provider_.get(), pass.get(), render_pass_filters, |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
+ EXPECT_EQ(0U, content_bounds_.size()); |
+} |
+ |
+TEST_F(UnderlayCastTest, FullScreenOverlayContentBounds) { |
+ std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
+ CreateCandidateQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayRect); |
+ |
+ OverlayCandidateList candidate_list; |
+ RenderPassFilterList render_pass_filters; |
+ RenderPassFilterList render_pass_background_filters; |
+ overlay_processor_->ProcessForOverlays( |
+ resource_provider_.get(), pass.get(), render_pass_filters, |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
+ |
+ EXPECT_EQ(1U, content_bounds_.size()); |
+ EXPECT_TRUE(content_bounds_[0].IsEmpty()); |
+} |
+ |
+TEST_F(UnderlayCastTest, BlackOutsideOverlayContentBounds) { |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(kOverlayBottomRightRect)); |
+ |
+ const gfx::Rect kLeftSide(0, 0, 128, 256); |
+ const gfx::Rect kTopRight(128, 0, 128, 128); |
+ |
+ std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
+ CreateCandidateQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayBottomRightRect); |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), kLeftSide, |
+ SK_ColorBLACK); |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), kTopRight, |
+ SK_ColorBLACK); |
+ |
+ OverlayCandidateList candidate_list; |
+ RenderPassFilterList render_pass_filters; |
+ RenderPassFilterList render_pass_background_filters; |
+ overlay_processor_->ProcessForOverlays( |
+ resource_provider_.get(), pass.get(), render_pass_filters, |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
+ |
+ EXPECT_EQ(1U, content_bounds_.size()); |
+ EXPECT_TRUE(content_bounds_[0].IsEmpty()); |
+} |
+ |
+TEST_F(UnderlayCastTest, OverlayOccludedContentBounds) { |
+ std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayTopLeftRect); |
+ CreateCandidateQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayRect); |
+ |
+ OverlayCandidateList candidate_list; |
+ RenderPassFilterList render_pass_filters; |
+ RenderPassFilterList render_pass_background_filters; |
+ overlay_processor_->ProcessForOverlays( |
+ resource_provider_.get(), pass.get(), render_pass_filters, |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
+ |
+ EXPECT_EQ(1U, content_bounds_.size()); |
+ EXPECT_EQ(kOverlayTopLeftRect, content_bounds_[0]); |
+} |
+ |
+TEST_F(UnderlayCastTest, OverlayOccludedUnionContentBounds) { |
+ std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayTopLeftRect); |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayBottomRightRect); |
+ CreateCandidateQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ kOverlayRect); |
+ |
+ OverlayCandidateList candidate_list; |
+ RenderPassFilterList render_pass_filters; |
+ RenderPassFilterList render_pass_background_filters; |
+ overlay_processor_->ProcessForOverlays( |
+ resource_provider_.get(), pass.get(), render_pass_filters, |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
+ |
+ EXPECT_EQ(1U, content_bounds_.size()); |
+ EXPECT_EQ(kOverlayRect, content_bounds_[0]); |
+} |
+ |
+TEST_F(UnderlayCastTest, RoundOverlayContentBounds) { |
+ // Check rounding behaviour on overlay quads. Be conservative (content |
+ // potentially visible on boundary). |
+ const gfx::Rect overlay_rect(1, 1, 8, 8); |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(1.5f, 1.5f, 8, 8)); |
+ |
+ gfx::Transform transform; |
+ transform.Translate(0.5f, 0.5f); |
+ |
+ std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform); |
+ CreateCandidateQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ overlay_rect); |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ gfx::Rect(0, 0, 10, 10), SK_ColorWHITE); |
+ |
+ OverlayCandidateList candidate_list; |
+ RenderPassFilterList render_pass_filters; |
+ RenderPassFilterList render_pass_background_filters; |
+ overlay_processor_->ProcessForOverlays( |
+ resource_provider_.get(), pass.get(), render_pass_filters, |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
+ |
+ EXPECT_EQ(1U, content_bounds_.size()); |
+ EXPECT_EQ(gfx::Rect(0, 0, 11, 11), content_bounds_[0]); |
+} |
+ |
+TEST_F(UnderlayCastTest, RoundContentBounds) { |
+ // Check rounding behaviour on content quads (bounds should be enclosing |
+ // rect). |
+ gfx::Rect overlay_rect = kOverlayRect; |
+ overlay_rect.Inset(0, 0, 1, 1); |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(0.5f, 0.5f, 255, 255)); |
+ |
+ gfx::Transform transform; |
+ transform.Translate(0.5f, 0.5f); |
+ |
+ std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform); |
+ CreateCandidateQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ overlay_rect); |
+ CreateOpaqueQuadAt(resource_provider_.get(), |
+ pass->shared_quad_state_list.back(), pass.get(), |
+ gfx::Rect(0, 0, 255, 255), SK_ColorWHITE); |
+ |
+ OverlayCandidateList candidate_list; |
+ RenderPassFilterList render_pass_filters; |
+ RenderPassFilterList render_pass_background_filters; |
+ overlay_processor_->ProcessForOverlays( |
+ resource_provider_.get(), pass.get(), render_pass_filters, |
+ render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, |
+ &content_bounds_); |
+ |
+ EXPECT_EQ(1U, content_bounds_.size()); |
+ EXPECT_EQ(kOverlayRect, content_bounds_[0]); |
+} |
+ |
OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) { |
OverlayCandidateList list; |
OverlayCandidate output_surface_plane; |
@@ -1267,7 +1534,7 @@ TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
render_pass_background_filters, &overlay_list, &ca_layer_list, |
- &damage_rect); |
+ &damage_rect_, &content_bounds_); |
EXPECT_EQ(gfx::Rect(), damage_rect); |
EXPECT_EQ(0U, overlay_list.size()); |
EXPECT_EQ(1U, ca_layer_list.size()); |
@@ -1290,7 +1557,7 @@ TEST_F(CALayerOverlayTest, ThreeDTransform) { |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
render_pass_background_filters, &overlay_list, &ca_layer_list, |
- &damage_rect); |
+ &damage_rect_, &content_bounds_); |
EXPECT_EQ(0U, overlay_list.size()); |
EXPECT_EQ(1U, ca_layer_list.size()); |
gfx::Transform expected_transform; |
@@ -1316,7 +1583,7 @@ TEST_F(CALayerOverlayTest, AllowContainingClip) { |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
render_pass_background_filters, &overlay_list, &ca_layer_list, |
- &damage_rect); |
+ &damage_rect_, &content_bounds_); |
EXPECT_EQ(gfx::Rect(), damage_rect); |
EXPECT_EQ(0U, overlay_list.size()); |
EXPECT_EQ(1U, ca_layer_list.size()); |
@@ -1339,7 +1606,7 @@ TEST_F(CALayerOverlayTest, NontrivialClip) { |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
render_pass_background_filters, &overlay_list, &ca_layer_list, |
- &damage_rect); |
+ &damage_rect_, &content_bounds_); |
EXPECT_EQ(gfx::Rect(), damage_rect); |
EXPECT_EQ(0U, overlay_list.size()); |
EXPECT_EQ(1U, ca_layer_list.size()); |
@@ -1364,7 +1631,7 @@ TEST_F(CALayerOverlayTest, SkipTransparent) { |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass.get(), render_pass_filters, |
render_pass_background_filters, &overlay_list, &ca_layer_list, |
- &damage_rect); |
+ &damage_rect_, &content_bounds_); |
EXPECT_EQ(gfx::Rect(), damage_rect); |
EXPECT_EQ(0U, overlay_list.size()); |
EXPECT_EQ(0U, ca_layer_list.size()); |
@@ -1419,11 +1686,13 @@ class MockOverlayScheduler { |
}; |
class GLRendererWithOverlaysTest : public testing::Test { |
+ using OutputSurfaceType = OverlayOutputSurface<SingleOverlayValidator>; |
+ |
protected: |
GLRendererWithOverlaysTest() { |
provider_ = TestContextProvider::Create(); |
provider_->BindToCurrentThread(); |
- output_surface_.reset(new OverlayOutputSurface(provider_)); |
+ output_surface_.reset(new OutputSurfaceType(provider_)); |
output_surface_->BindToClient(&output_surface_client_); |
resource_provider_ = FakeResourceProvider::Create(provider_.get(), nullptr); |
@@ -1466,7 +1735,7 @@ class GLRendererWithOverlaysTest : public testing::Test { |
RendererSettings settings_; |
FakeOutputSurfaceClient output_surface_client_; |
- std::unique_ptr<OverlayOutputSurface> output_surface_; |
+ std::unique_ptr<OutputSurfaceType> output_surface_; |
std::unique_ptr<ResourceProvider> resource_provider_; |
std::unique_ptr<OverlayInfoRendererGL> renderer_; |
scoped_refptr<TestContextProvider> provider_; |
@@ -1477,6 +1746,9 @@ TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { |
bool use_validator = true; |
Init(use_validator); |
renderer_->set_expect_overlays(true); |
+ output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
+ gfx::RectF(kOverlayBottomRightRect)); |
+ |
gfx::Size viewport_size(16, 16); |
std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
@@ -1904,7 +2176,7 @@ class CALayerOverlayRPDQTest : public CALayerOverlayTest { |
overlay_processor_->ProcessForOverlays( |
resource_provider_.get(), pass_.get(), render_pass_filters_, |
render_pass_background_filters_, &overlay_list_, &ca_layer_list_, |
- &damage_rect); |
+ &damage_rect_, &content_bounds_); |
} |
std::unique_ptr<RenderPass> pass_; |
RenderPassDrawQuad* quad_; |