diff options
author | fsamuel <fsamuel@chromium.org> | 2015-10-23 14:25:16 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-23 21:26:14 +0000 |
commit | 7a61510e805016a384055b1de043afdccd40543f (patch) | |
tree | 679428e51d0f1497a293fe7c6fd91ad8efed2b62 /cc/surfaces | |
parent | d1720fa48a6e95aa2bb0edc39662ecf5a53262c1 (diff) | |
download | chromium_src-7a61510e805016a384055b1de043afdccd40543f.zip chromium_src-7a61510e805016a384055b1de043afdccd40543f.tar.gz chromium_src-7a61510e805016a384055b1de043afdccd40543f.tar.bz2 |
cc: Move surfaces hittesting test helpers out to a separate file
This will allow reuse by Mandoline.
BUG=533161
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1422783002
Cr-Commit-Position: refs/heads/master@{#355889}
Diffstat (limited to 'cc/surfaces')
-rw-r--r-- | cc/surfaces/surface_aggregator_test_helpers.cc | 152 | ||||
-rw-r--r-- | cc/surfaces/surface_aggregator_test_helpers.h | 94 | ||||
-rw-r--r-- | cc/surfaces/surface_aggregator_unittest.cc | 2 | ||||
-rw-r--r-- | cc/surfaces/surface_hittest_unittest.cc | 112 |
4 files changed, 8 insertions, 352 deletions
diff --git a/cc/surfaces/surface_aggregator_test_helpers.cc b/cc/surfaces/surface_aggregator_test_helpers.cc deleted file mode 100644 index 45b57d0..0000000 --- a/cc/surfaces/surface_aggregator_test_helpers.cc +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "cc/surfaces/surface_aggregator_test_helpers.h" - -#include "base/format_macros.h" -#include "base/strings/stringprintf.h" -#include "cc/layers/append_quads_data.h" -#include "cc/output/compositor_frame.h" -#include "cc/output/delegated_frame_data.h" -#include "cc/quads/render_pass_draw_quad.h" -#include "cc/quads/shared_quad_state.h" -#include "cc/quads/solid_color_draw_quad.h" -#include "cc/quads/surface_draw_quad.h" -#include "cc/surfaces/surface.h" -#include "cc/test/render_pass_test_utils.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/skia/include/core/SkXfermode.h" - -namespace cc { -namespace test { - -void AddSurfaceQuad(RenderPass* pass, - const gfx::Size& surface_size, - float opacity, - SurfaceId surface_id) { - gfx::Transform layer_to_target_transform; - gfx::Size layer_bounds = surface_size; - gfx::Rect visible_layer_rect = gfx::Rect(surface_size); - gfx::Rect clip_rect = gfx::Rect(surface_size); - bool is_clipped = false; - SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode; - - SharedQuadState* shared_quad_state = pass->CreateAndAppendSharedQuadState(); - shared_quad_state->SetAll(layer_to_target_transform, layer_bounds, - visible_layer_rect, clip_rect, is_clipped, opacity, - blend_mode, 0); - - SurfaceDrawQuad* surface_quad = - pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); - gfx::Rect quad_rect = gfx::Rect(surface_size); - surface_quad->SetNew(pass->shared_quad_state_list.back(), - gfx::Rect(surface_size), - gfx::Rect(surface_size), - surface_id); -} -void AddRenderPassQuad(RenderPass* pass, RenderPassId render_pass_id) { - gfx::Rect output_rect = gfx::Rect(0, 0, 5, 5); - SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); - shared_state->SetAll(gfx::Transform(), - output_rect.size(), - output_rect, - output_rect, - false, - 1, - SkXfermode::kSrcOver_Mode, - 0); - RenderPassDrawQuad* quad = - pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); - quad->SetNew(shared_state, - output_rect, - output_rect, - render_pass_id, - 0, - gfx::Vector2dF(), - gfx::Size(), - FilterOperations(), - gfx::Vector2dF(), - FilterOperations()); -} - -void AddQuadInPass(RenderPass* pass, Quad desc) { - switch (desc.material) { - case DrawQuad::SOLID_COLOR: - AddQuad(pass, gfx::Rect(0, 0, 5, 5), desc.color); - break; - case DrawQuad::SURFACE_CONTENT: - AddSurfaceQuad(pass, gfx::Size(5, 5), desc.opacity, desc.surface_id); - break; - case DrawQuad::RENDER_PASS: - AddRenderPassQuad(pass, desc.render_pass_id); - break; - default: - NOTREACHED(); - } -} - -void AddPasses(RenderPassList* pass_list, - const gfx::Rect& output_rect, - Pass* passes, - size_t pass_count) { - gfx::Transform root_transform; - for (size_t i = 0; i < pass_count; ++i) { - Pass pass = passes[i]; - RenderPass* test_pass = - AddRenderPass(pass_list, pass.id, output_rect, root_transform); - for (size_t j = 0; j < pass.quad_count; ++j) { - AddQuadInPass(test_pass, pass.quads[j]); - } - } -} - -void TestQuadMatchesExpectations(Quad expected_quad, const DrawQuad* quad) { - switch (expected_quad.material) { - case DrawQuad::SOLID_COLOR: { - ASSERT_EQ(DrawQuad::SOLID_COLOR, quad->material); - - const SolidColorDrawQuad* solid_color_quad = - SolidColorDrawQuad::MaterialCast(quad); - - EXPECT_EQ(expected_quad.color, solid_color_quad->color); - break; - } - case DrawQuad::RENDER_PASS: { - ASSERT_EQ(DrawQuad::RENDER_PASS, quad->material); - - const RenderPassDrawQuad* render_pass_quad = - RenderPassDrawQuad::MaterialCast(quad); - - EXPECT_EQ(expected_quad.render_pass_id, render_pass_quad->render_pass_id); - break; - } - default: - NOTREACHED(); - break; - } -} - -void TestPassMatchesExpectations(Pass expected_pass, const RenderPass* pass) { - ASSERT_EQ(expected_pass.quad_count, pass->quad_list.size()); - for (auto iter = pass->quad_list.cbegin(); iter != pass->quad_list.cend(); - ++iter) { - SCOPED_TRACE(base::StringPrintf("Quad number %" PRIuS, iter.index())); - TestQuadMatchesExpectations(expected_pass.quads[iter.index()], *iter); - } -} - -void TestPassesMatchExpectations(Pass* expected_passes, - size_t expected_pass_count, - const RenderPassList* passes) { - ASSERT_EQ(expected_pass_count, passes->size()); - - for (size_t i = 0; i < passes->size(); ++i) { - SCOPED_TRACE(base::StringPrintf("Pass number %" PRIuS, i)); - RenderPass* pass = passes->at(i); - TestPassMatchesExpectations(expected_passes[i], pass); - } -} - -} // namespace test -} // namespace cc diff --git a/cc/surfaces/surface_aggregator_test_helpers.h b/cc/surfaces/surface_aggregator_test_helpers.h deleted file mode 100644 index 6d00c4f..0000000 --- a/cc/surfaces/surface_aggregator_test_helpers.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CC_SURFACES_SURFACE_AGGREGATOR_TEST_HELPERS_H_ -#define CC_SURFACES_SURFACE_AGGREGATOR_TEST_HELPERS_H_ - -#include "cc/base/scoped_ptr_vector.h" -#include "cc/quads/draw_quad.h" -#include "cc/quads/render_pass_id.h" -#include "cc/surfaces/surface_id.h" -#include "third_party/skia/include/core/SkColor.h" -#include "ui/gfx/geometry/size.h" - -namespace cc { - -class RenderPass; -class Surface; -class TestRenderPass; - -typedef ScopedPtrVector<RenderPass> RenderPassList; - -namespace test { - -struct Quad { - static Quad SolidColorQuad(SkColor color) { - Quad quad; - quad.material = DrawQuad::SOLID_COLOR; - quad.color = color; - return quad; - } - - static Quad SurfaceQuad(SurfaceId surface_id, float opacity) { - Quad quad; - quad.material = DrawQuad::SURFACE_CONTENT; - quad.opacity = opacity; - quad.surface_id = surface_id; - return quad; - } - - static Quad RenderPassQuad(RenderPassId id) { - Quad quad; - quad.material = DrawQuad::RENDER_PASS; - quad.render_pass_id = id; - return quad; - } - - DrawQuad::Material material; - // Set when material==DrawQuad::SURFACE_CONTENT. - SurfaceId surface_id; - float opacity; - // Set when material==DrawQuad::SOLID_COLOR. - SkColor color; - // Set when material==DrawQuad::RENDER_PASS. - RenderPassId render_pass_id; - - private: - Quad() : material(DrawQuad::INVALID), opacity(1.f), color(SK_ColorWHITE) {} -}; - -struct Pass { - Pass(Quad* quads, size_t quad_count, RenderPassId id) - : quads(quads), quad_count(quad_count), id(id) {} - Pass(Quad* quads, size_t quad_count) - : quads(quads), quad_count(quad_count), id(1, 1) {} - - Quad* quads; - size_t quad_count; - RenderPassId id; -}; - -void AddSurfaceQuad(TestRenderPass* pass, - const gfx::Size& surface_size, - int surface_id); - -void AddQuadInPass(TestRenderPass* pass, Quad desc); - -void AddPasses(RenderPassList* pass_list, - const gfx::Rect& output_rect, - Pass* passes, - size_t pass_count); - -void TestQuadMatchesExpectations(Quad expected_quad, const DrawQuad* quad); - -void TestPassMatchesExpectations(Pass expected_pass, const RenderPass* pass); - -void TestPassesMatchExpectations(Pass* expected_passes, - size_t expected_pass_count, - const RenderPassList* passes); - -} // namespace test -} // namespace cc - -#endif // CC_SURFACES_SURFACE_AGGREGATOR_TEST_HELPERS_H_ diff --git a/cc/surfaces/surface_aggregator_unittest.cc b/cc/surfaces/surface_aggregator_unittest.cc index 63aba46..3c18dfe 100644 --- a/cc/surfaces/surface_aggregator_unittest.cc +++ b/cc/surfaces/surface_aggregator_unittest.cc @@ -12,7 +12,6 @@ #include "cc/resources/shared_bitmap_manager.h" #include "cc/surfaces/surface.h" #include "cc/surfaces/surface_aggregator.h" -#include "cc/surfaces/surface_aggregator_test_helpers.h" #include "cc/surfaces/surface_factory.h" #include "cc/surfaces/surface_factory_client.h" #include "cc/surfaces/surface_id_allocator.h" @@ -21,6 +20,7 @@ #include "cc/test/fake_output_surface_client.h" #include "cc/test/fake_resource_provider.h" #include "cc/test/render_pass_test_utils.h" +#include "cc/test/surface_aggregator_test_helpers.h" #include "cc/test/test_shared_bitmap_manager.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" diff --git a/cc/surfaces/surface_hittest_unittest.cc b/cc/surfaces/surface_hittest_unittest.cc index 92c61b8..9bb7128 100644 --- a/cc/surfaces/surface_hittest_unittest.cc +++ b/cc/surfaces/surface_hittest_unittest.cc @@ -3,18 +3,13 @@ // found in the LICENSE file. #include "cc/output/compositor_frame.h" -#include "cc/output/delegated_frame_data.h" -#include "cc/quads/render_pass.h" -#include "cc/quads/render_pass_draw_quad.h" -#include "cc/quads/render_pass_id.h" -#include "cc/quads/solid_color_draw_quad.h" -#include "cc/quads/surface_draw_quad.h" #include "cc/surfaces/surface.h" #include "cc/surfaces/surface_factory.h" #include "cc/surfaces/surface_factory_client.h" #include "cc/surfaces/surface_hittest.h" #include "cc/surfaces/surface_id_allocator.h" #include "cc/surfaces/surface_manager.h" +#include "cc/test/surface_hittest_test_helpers.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/geometry/size.h" @@ -52,103 +47,10 @@ void RunTests(SurfaceManager* manager, TestCase* tests, size_t test_count) { } } -class EmptySurfaceFactoryClient : public SurfaceFactoryClient { - public: - void ReturnResources(const ReturnedResourceArray& resources) override {} - void SetBeginFrameSource(SurfaceId surface_id, - BeginFrameSource* begin_frame_source) override {} -}; - -void CreateSharedQuadState(RenderPass* pass, - const gfx::Transform& transform, - const gfx::Rect& root_rect) { - SharedQuadState* child_shared_state = - pass->CreateAndAppendSharedQuadState(); - child_shared_state->SetAll(transform, - root_rect.size(), - root_rect, root_rect, false, 1.0f, - SkXfermode::kSrcOver_Mode, 0); -} - -void CreateSolidColorDrawQuad(RenderPass* pass, - const gfx::Transform& transform, - const gfx::Rect& root_rect, - const gfx::Rect& quad_rect) { - CreateSharedQuadState(pass, transform, root_rect); - SolidColorDrawQuad* color_quad = - pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); - color_quad->SetNew(pass->shared_quad_state_list.back(), - quad_rect, quad_rect, - SK_ColorYELLOW, false); -} - -void CreateRenderPassDrawQuad(RenderPass* pass, - const gfx::Transform& transform, - const gfx::Rect& root_rect, - const gfx::Rect& quad_rect, - const RenderPassId& render_pass_id) { - CreateSharedQuadState(pass, transform, root_rect); - RenderPassDrawQuad* render_pass_quad = - pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); - render_pass_quad->SetNew(pass->shared_quad_state_list.back(), - quad_rect, quad_rect, - render_pass_id, - ResourceId(), - gfx::Vector2dF(), - gfx::Size(), - FilterOperations(), - gfx::Vector2dF(), - FilterOperations()); -} - -void CreateSurfaceDrawQuad(RenderPass* pass, - const gfx::Transform& transform, - const gfx::Rect& root_rect, - const gfx::Rect& quad_rect, - SurfaceId surface_id) { - CreateSharedQuadState(pass, transform, root_rect); - SurfaceDrawQuad* surface_quad = - pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); - surface_quad->SetNew(pass->shared_quad_state_list.back(), - quad_rect, quad_rect, - surface_id); -} - -void CreateRenderPass(const RenderPassId& render_pass_id, - const gfx::Rect& rect, - const gfx::Transform& transform_to_root_target, - RenderPassList* render_pass_list) { - scoped_ptr<RenderPass> render_pass = RenderPass::Create(); - render_pass->SetNew(render_pass_id, rect, rect, transform_to_root_target); - render_pass_list->push_back(render_pass.Pass()); -} - -scoped_ptr<CompositorFrame> CreateCompositorFrameWithRenderPassList( - RenderPassList* render_pass_list) { - scoped_ptr<DelegatedFrameData> root_delegated_frame_data( - new DelegatedFrameData); - root_delegated_frame_data->render_pass_list.swap(*render_pass_list); - scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); - root_frame->delegated_frame_data = root_delegated_frame_data.Pass(); - return root_frame.Pass(); -} - -scoped_ptr<CompositorFrame> CreateCompositorFrame( - const gfx::Rect& root_rect, - RenderPass** render_pass) { - RenderPassList render_pass_list; - RenderPassId root_id(1, 1); - CreateRenderPass(root_id, root_rect, gfx::Transform(), &render_pass_list); - - scoped_ptr<CompositorFrame> root_frame = - CreateCompositorFrameWithRenderPassList(&render_pass_list); - - *render_pass = root_frame->delegated_frame_data->render_pass_list.back(); - return root_frame.Pass(); -} - } // namespace +using namespace test; + // This test verifies that hit testing on a surface that does not exist does // not crash. TEST(SurfaceHittestTest, Hittest_BadCompositorFrameDoesNotCrash) { @@ -218,7 +120,7 @@ TEST(SurfaceHittestTest, Hittest_SingleSurface) { }, }; - RunTests(&manager, tests, sizeof(tests) / sizeof(*tests)); + RunTests(&manager, tests, arraysize(tests)); factory.Destroy(root_surface_id); } @@ -313,7 +215,7 @@ TEST(SurfaceHittestTest, Hittest_ChildSurface) { } }; - RunTests(&manager, tests, sizeof(tests) / sizeof(*tests)); + RunTests(&manager, tests, arraysize(tests)); // Submit another root frame, with a slightly perturbed child Surface. root_frame = CreateCompositorFrame(root_rect, &root_pass); @@ -453,7 +355,7 @@ TEST(SurfaceHittestTest, Hittest_InvalidRenderPassDrawQuad) { } }; - RunTests(&manager, tests, sizeof(tests) / sizeof(*tests)); + RunTests(&manager, tests, arraysize(tests)); factory.Destroy(root_surface_id); factory.Destroy(child_surface_id); @@ -557,7 +459,7 @@ TEST(SurfaceHittestTest, Hittest_RenderPassDrawQuad) { } }; - RunTests(&manager, tests, sizeof(tests) / sizeof(*tests)); + RunTests(&manager, tests, arraysize(tests)); factory.Destroy(root_surface_id); } |