| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_VIZ_TEST_DRAW_QUAD_MATCHERS_H_ |
| #define COMPONENTS_VIZ_TEST_DRAW_QUAD_MATCHERS_H_ |
| |
| #include "components/viz/common/quads/compositor_render_pass.h" |
| #include "components/viz/common/quads/draw_quad.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| #include "ui/gfx/overlay_layer_id.h" |
| |
| // This file contains gmock matchers for verifying DrawQuads are of the expected |
| // type with expected attributes. This can be used to verify that a |
| // CompositorRenderPass or AggregatedRenderPass contains the expected quads. |
| // |
| // For example verifying that a render pass contains in front-to-back order, a |
| // SolidColorDrawQuad which is white, a TextureDrawQuad and finally an |
| // AggregatedRenderPassDrawQuad would look like: |
| // |
| // EXPECT_THAT(render_pass->quad_list, |
| // testing::ElementsAre(IsSolidColorQuad(SK_ColorWHITE), |
| // IsTextureQuad(), |
| // IsAggregatedRenderPassQuad())); |
| // |
| // Add additional matcher generation functions to this file for DrawQuad types |
| // and attributes that aren't implemented yet. |
| |
| namespace viz { |
| |
| // Provides human readable quad material names for gtest/gmock. |
| void PrintTo(DrawQuad::Material material, ::std::ostream* os); |
| void PrintTo(const OffsetTag& offset_tag, ::std::ostream* os); |
| |
| // Matches a SolidColorDrawQuad. |
| testing::Matcher<const DrawQuad*> IsSolidColorQuad(); |
| |
| // Matches a SolidColorDrawQuad with |expected_color|. |
| testing::Matcher<const DrawQuad*> IsSolidColorQuad(SkColor4f expected_color); |
| |
| // Matches a TextureDrawQuad. |
| testing::Matcher<const DrawQuad*> IsTextureQuad(); |
| |
| // Matches a SurfaceDrawQuad. |
| testing::Matcher<const DrawQuad*> IsSurfaceQuad(); |
| |
| // Matches an CompositorRenderPassQuad with matching `id`. |
| testing::Matcher<const DrawQuad*> IsCompositorRenderPassQuad( |
| CompositorRenderPassId id); |
| |
| // Matches an AggregatedRenderPassQuad. |
| testing::Matcher<const DrawQuad*> IsAggregatedRenderPassQuad(); |
| |
| // Matches a DrawQuad with expected DrawQuad::rect. |
| testing::Matcher<const DrawQuad*> HasRect(const gfx::Rect& rect); |
| |
| // Matches a DrawQuad with expected DrawQuad::visible_rect. |
| testing::Matcher<const DrawQuad*> HasVisibleRect(const gfx::Rect& visible_rect); |
| |
| // Matches a SharedQuadState on a DrawQuad. |
| testing::Matcher<const DrawQuad*> HasSharedQuadState( |
| testing::Matcher<const SharedQuadState*> matcher); |
| |
| // Matches a DrawQuad with expected SharedQuadState::quad_to_target_transform. |
| testing::Matcher<const DrawQuad*> HasTransform(const gfx::Transform& transform); |
| |
| // Matches a DrawQuad with expected SharedQuadState::opacity. |
| testing::Matcher<const DrawQuad*> HasOpacity(float opacity); |
| |
| // Matches a DrawQuad with expected SharedQuadState::are_contents_opaque. |
| testing::Matcher<const DrawQuad*> AreContentsOpaque(bool opaque); |
| |
| // Matches a DrawQuad with expected SharedQuadState::clip_rect. |
| testing::Matcher<const DrawQuad*> HasClipRect( |
| std::optional<gfx::Rect> clip_rect); |
| |
| // Matches a DrawQuad with expected SharedQuadState::offset_tag. |
| testing::Matcher<const DrawQuad*> HasOffsetTag(OffsetTag offset_tag); |
| |
| // Matches a DrawQuad with expected SharedQuadState::layer_id. |
| testing::Matcher<const DrawQuad*> HasLayerId(uint32_t layer_id); |
| |
| // Matches a DrawQuad with expected SharedQuadState::layer_namespace_id. |
| testing::Matcher<const DrawQuad*> HasLayerNamespaceId( |
| const gfx::OverlayLayerId::NamespaceId& layer_namespace_id); |
| |
| // Matches a DrawQuad with expected SharedQuadState::mask_filter_info. |
| testing::Matcher<const DrawQuad*> HasMaskFilterInfo( |
| const gfx::MaskFilterInfo& mask_filter_info); |
| |
| } // namespace viz |
| |
| #endif // COMPONENTS_VIZ_TEST_DRAW_QUAD_MATCHERS_H_ |