summaryrefslogtreecommitdiffstats
path: root/cc/surfaces
diff options
context:
space:
mode:
authorfsamuel <fsamuel@chromium.org>2015-10-23 14:25:16 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-23 21:26:14 +0000
commit7a61510e805016a384055b1de043afdccd40543f (patch)
tree679428e51d0f1497a293fe7c6fd91ad8efed2b62 /cc/surfaces
parentd1720fa48a6e95aa2bb0edc39662ecf5a53262c1 (diff)
downloadchromium_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.cc152
-rw-r--r--cc/surfaces/surface_aggregator_test_helpers.h94
-rw-r--r--cc/surfaces/surface_aggregator_unittest.cc2
-rw-r--r--cc/surfaces/surface_hittest_unittest.cc112
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);
}