| Index: cc/output/overlay_unittest.cc
|
| diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc
|
| index fc5a5c52d6e5ae410a3cac57e5c8e4d2631efcdb..89550bea9a09a792611f9b78f016ab930609c19d 100644
|
| --- a/cc/output/overlay_unittest.cc
|
| +++ b/cc/output/overlay_unittest.cc
|
| @@ -8,8 +8,10 @@
|
|
|
| #include "base/memory/ptr_util.h"
|
| #include "cc/base/region.h"
|
| +#include "cc/output/ca_layer_overlay.h"
|
| #include "cc/output/compositor_frame.h"
|
| #include "cc/output/compositor_frame_metadata.h"
|
| +#include "cc/output/filter_operation.h"
|
| #include "cc/output/gl_renderer.h"
|
| #include "cc/output/output_surface.h"
|
| #include "cc/output/output_surface_client.h"
|
| @@ -19,6 +21,7 @@
|
| #include "cc/output/overlay_strategy_single_on_top.h"
|
| #include "cc/output/overlay_strategy_underlay.h"
|
| #include "cc/quads/render_pass.h"
|
| +#include "cc/quads/render_pass_draw_quad.h"
|
| #include "cc/quads/solid_color_draw_quad.h"
|
| #include "cc/quads/stream_video_draw_quad.h"
|
| #include "cc/quads/texture_draw_quad.h"
|
| @@ -1742,5 +1745,111 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedAfterGpuQuery) {
|
| EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3));
|
| }
|
|
|
| +class CALayerOverlayRPDQTest : public CALayerOverlayTest {
|
| + protected:
|
| + void SetUp() override {
|
| + CALayerOverlayTest::SetUp();
|
| + EnableRenderPassDrawQuadForTesting();
|
| + pass_ = CreateRenderPass();
|
| + quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
|
| + render_pass_id_.layer_id = 3;
|
| + render_pass_id_.index = 17;
|
| + }
|
| +
|
| + void ProcessForOverlays() {
|
| + gfx::Rect damage_rect;
|
| + overlay_list_ = BackbufferOverlayList(pass_.get());
|
| + overlay_processor_->ProcessForOverlays(resource_provider_.get(),
|
| + pass_.get(), &overlay_list_,
|
| + &ca_layer_list_, &damage_rect);
|
| + }
|
| + std::unique_ptr<RenderPass> pass_;
|
| + RenderPassDrawQuad* quad_;
|
| + RenderPassId render_pass_id_;
|
| + FilterOperations filters_;
|
| + FilterOperations background_filters_;
|
| + CALayerOverlayList ca_layer_list_;
|
| + OverlayCandidateList overlay_list_;
|
| +};
|
| +
|
| +TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadNoFilters) {
|
| + quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
|
| + kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
|
| + filters_, gfx::Vector2dF(1, 1), background_filters_);
|
| + ProcessForOverlays();
|
| +
|
| + EXPECT_EQ(1U, ca_layer_list_.size());
|
| + CALayerOverlay overlay = ca_layer_list_[0];
|
| + EXPECT_EQ(render_pass_id_, overlay.render_pass_id);
|
| +}
|
| +
|
| +TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadAllValidFilters) {
|
| + filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f));
|
| + filters_.Append(FilterOperation::CreateSepiaFilter(0.2f));
|
| + filters_.Append(FilterOperation::CreateSaturateFilter(0.3f));
|
| + filters_.Append(FilterOperation::CreateHueRotateFilter(0.4f));
|
| + filters_.Append(FilterOperation::CreateInvertFilter(0.5f));
|
| + filters_.Append(FilterOperation::CreateBrightnessFilter(0.6f));
|
| + filters_.Append(FilterOperation::CreateContrastFilter(0.7f));
|
| + filters_.Append(FilterOperation::CreateOpacityFilter(0.8f));
|
| + filters_.Append(FilterOperation::CreateBlurFilter(0.9f));
|
| + filters_.Append(FilterOperation::CreateDropShadowFilter(gfx::Point(10, 20),
|
| + 1.0f, SK_ColorGREEN));
|
| + quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
|
| + kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
|
| + filters_, gfx::Vector2dF(1, 1), background_filters_);
|
| + ProcessForOverlays();
|
| +
|
| + EXPECT_EQ(1U, ca_layer_list_.size());
|
| +
|
| + CALayerOverlay overlay = ca_layer_list_[0];
|
| + EXPECT_EQ(10u, overlay.filter_effects.size());
|
| + for (size_t i = 0; i < 10; ++i) {
|
| + ui::CARendererLayerParams::FilterEffect effect = overlay.filter_effects[i];
|
| + EXPECT_FLOAT_EQ((i + 1) / 10.0f, effect.amount);
|
| +
|
| + if (effect.type ==
|
| + ui::CARendererLayerParams::FilterEffectType::DROP_SHADOW) {
|
| + EXPECT_EQ(10, effect.drop_shadow_offset.x());
|
| + EXPECT_EQ(20, effect.drop_shadow_offset.y());
|
| + EXPECT_EQ(SK_ColorGREEN, effect.drop_shadow_color);
|
| + }
|
| + }
|
| +}
|
| +
|
| +TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadFilterScale) {
|
| + quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
|
| + kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
|
| + filters_, gfx::Vector2dF(1, 2), background_filters_);
|
| + ProcessForOverlays();
|
| + EXPECT_EQ(0U, ca_layer_list_.size());
|
| +}
|
| +
|
| +TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadBackgroundFilter) {
|
| + background_filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f));
|
| + quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
|
| + kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
|
| + filters_, gfx::Vector2dF(1, 1), background_filters_);
|
| + ProcessForOverlays();
|
| + EXPECT_EQ(0U, ca_layer_list_.size());
|
| +}
|
| +
|
| +TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadMask) {
|
| + quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
|
| + kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(), gfx::Size(),
|
| + filters_, gfx::Vector2dF(1, 1), background_filters_);
|
| + ProcessForOverlays();
|
| + EXPECT_EQ(0U, ca_layer_list_.size());
|
| +}
|
| +
|
| +TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadUnsupportedFilter) {
|
| + filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1));
|
| + quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
|
| + kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
|
| + filters_, gfx::Vector2dF(1, 1), background_filters_);
|
| + ProcessForOverlays();
|
| + EXPECT_EQ(0U, ca_layer_list_.size());
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|