Index: mojo/services/public/cpp/surfaces/tests/surface_unittest.cc |
diff --git a/mojo/services/public/cpp/surfaces/tests/surface_unittest.cc b/mojo/services/public/cpp/surfaces/tests/surface_unittest.cc |
index b571f050fa11f8991c2c51445e41e42fccb7c862..a7f49ca0068a1e1c2008389ffb4d474f341e1025 100644 |
--- a/mojo/services/public/cpp/surfaces/tests/surface_unittest.cc |
+++ b/mojo/services/public/cpp/surfaces/tests/surface_unittest.cc |
@@ -41,25 +41,29 @@ TEST(SurfaceLibTest, Color) { |
class SurfaceLibQuadTest : public testing::Test { |
public: |
SurfaceLibQuadTest() |
- : sqs(new cc::SharedQuadState), |
- rect(5, 7, 13, 19), |
+ : rect(5, 7, 13, 19), |
opaque_rect(rect), |
visible_rect(9, 11, 5, 7), |
- needs_blending(false) {} |
+ needs_blending(false) { |
+ pass = cc::RenderPass::Create(); |
+ sqs = pass->CreateAndAppendSharedQuadState(); |
+ } |
protected: |
- scoped_ptr<cc::SharedQuadState> sqs; |
gfx::Rect rect; |
gfx::Rect opaque_rect; |
gfx::Rect visible_rect; |
bool needs_blending; |
+ scoped_ptr<cc::RenderPass> pass; |
+ cc::SharedQuadState* sqs; |
}; |
TEST_F(SurfaceLibQuadTest, ColorQuad) { |
- scoped_ptr<cc::SolidColorDrawQuad> color_quad(new cc::SolidColorDrawQuad); |
+ cc::SolidColorDrawQuad* color_quad = |
+ pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); |
SkColor arbitrary_color = SK_ColorGREEN; |
bool force_anti_aliasing_off = true; |
- color_quad->SetAll(sqs.get(), |
+ color_quad->SetAll(sqs, |
rect, |
opaque_rect, |
visible_rect, |
@@ -67,8 +71,7 @@ TEST_F(SurfaceLibQuadTest, ColorQuad) { |
arbitrary_color, |
force_anti_aliasing_off); |
- cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(color_quad.get()); |
- surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); |
+ surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*(pass->quad_list.back())); |
ASSERT_FALSE(mojo_quad.is_null()); |
EXPECT_EQ(surfaces::MATERIAL_SOLID_COLOR, mojo_quad->material); |
EXPECT_EQ(Rect::From(rect), mojo_quad->rect); |
@@ -80,28 +83,16 @@ TEST_F(SurfaceLibQuadTest, ColorQuad) { |
mojo_quad->solid_color_quad_state; |
EXPECT_EQ(surfaces::Color::From(arbitrary_color), mojo_color_state->color); |
EXPECT_EQ(force_anti_aliasing_off, mojo_color_state->force_anti_aliasing_off); |
- |
- scoped_ptr<cc::DrawQuad> round_trip_quad = |
- ConvertTo(mojo_quad.Pass(), sqs.get()); |
- EXPECT_EQ(rect, round_trip_quad->rect); |
- EXPECT_EQ(opaque_rect, round_trip_quad->opaque_rect); |
- EXPECT_EQ(visible_rect, round_trip_quad->visible_rect); |
- EXPECT_EQ(needs_blending, round_trip_quad->needs_blending); |
- ASSERT_EQ(cc::DrawQuad::SOLID_COLOR, round_trip_quad->material); |
- const cc::SolidColorDrawQuad* round_trip_color_quad = |
- cc::SolidColorDrawQuad::MaterialCast(round_trip_quad.get()); |
- EXPECT_EQ(arbitrary_color, round_trip_color_quad->color); |
- EXPECT_EQ(force_anti_aliasing_off, |
- round_trip_color_quad->force_anti_aliasing_off); |
} |
TEST_F(SurfaceLibQuadTest, SurfaceQuad) { |
- scoped_ptr<cc::SurfaceDrawQuad> surface_quad(new cc::SurfaceDrawQuad); |
+ cc::SurfaceDrawQuad* surface_quad = |
+ pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); |
cc::SurfaceId arbitrary_id(5); |
surface_quad->SetAll( |
- sqs.get(), rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); |
- cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(surface_quad.get()); |
- surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); |
+ sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); |
+ |
+ surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*(pass->quad_list.back())); |
ASSERT_FALSE(mojo_quad.is_null()); |
EXPECT_EQ(surfaces::MATERIAL_SURFACE_CONTENT, mojo_quad->material); |
ASSERT_TRUE(mojo_quad->surface_quad_state); |
@@ -109,17 +100,11 @@ TEST_F(SurfaceLibQuadTest, SurfaceQuad) { |
mojo_quad->surface_quad_state; |
EXPECT_EQ(surfaces::SurfaceId::From(arbitrary_id), |
mojo_surface_state->surface); |
- |
- scoped_ptr<cc::DrawQuad> round_trip_quad = |
- ConvertTo(mojo_quad.Pass(), sqs.get()); |
- ASSERT_EQ(cc::DrawQuad::SURFACE_CONTENT, round_trip_quad->material); |
- const cc::SurfaceDrawQuad* round_trip_surface_quad = |
- cc::SurfaceDrawQuad::MaterialCast(round_trip_quad.get()); |
- EXPECT_EQ(arbitrary_id, round_trip_surface_quad->surface_id); |
} |
TEST_F(SurfaceLibQuadTest, TextureQuad) { |
- scoped_ptr<cc::TextureDrawQuad> texture_quad(new cc::TextureDrawQuad); |
+ cc::TextureDrawQuad* texture_quad = |
+ pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
unsigned resource_id = 9; |
bool premultiplied_alpha = true; |
gfx::PointF uv_top_left(1.7f, 2.1f); |
@@ -127,7 +112,7 @@ TEST_F(SurfaceLibQuadTest, TextureQuad) { |
SkColor background_color = SK_ColorYELLOW; |
float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; |
bool flipped = false; |
- texture_quad->SetAll(sqs.get(), |
+ texture_quad->SetAll(sqs, |
rect, |
opaque_rect, |
visible_rect, |
@@ -140,8 +125,7 @@ TEST_F(SurfaceLibQuadTest, TextureQuad) { |
vertex_opacity, |
flipped); |
- cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(texture_quad.get()); |
- surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); |
+ surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*(pass->quad_list.back())); |
ASSERT_FALSE(mojo_quad.is_null()); |
EXPECT_EQ(surfaces::MATERIAL_TEXTURE_CONTENT, mojo_quad->material); |
ASSERT_TRUE(mojo_quad->texture_quad_state); |
@@ -157,22 +141,6 @@ TEST_F(SurfaceLibQuadTest, TextureQuad) { |
EXPECT_EQ(vertex_opacity[i], mojo_texture_state->vertex_opacity[i]) << i; |
} |
EXPECT_EQ(flipped, mojo_texture_state->flipped); |
- |
- scoped_ptr<cc::DrawQuad> round_trip_quad = |
- ConvertTo(mojo_quad.Pass(), sqs.get()); |
- ASSERT_EQ(cc::DrawQuad::TEXTURE_CONTENT, round_trip_quad->material); |
- const cc::TextureDrawQuad* round_trip_surface_quad = |
- cc::TextureDrawQuad::MaterialCast(round_trip_quad.get()); |
- EXPECT_EQ(resource_id, round_trip_surface_quad->resource_id); |
- EXPECT_EQ(premultiplied_alpha, round_trip_surface_quad->premultiplied_alpha); |
- EXPECT_EQ(uv_top_left, round_trip_surface_quad->uv_top_left); |
- EXPECT_EQ(uv_bottom_right, round_trip_surface_quad->uv_bottom_right); |
- EXPECT_EQ(background_color, round_trip_surface_quad->background_color); |
- for (size_t i = 0; i < 4; ++i) { |
- EXPECT_EQ(vertex_opacity[i], round_trip_surface_quad->vertex_opacity[i]) |
- << i; |
- } |
- EXPECT_EQ(flipped, round_trip_surface_quad->flipped); |
} |
TEST(SurfaceLibTest, SharedQuadState) { |
@@ -185,7 +153,8 @@ TEST(SurfaceLibTest, SharedQuadState) { |
float opacity = 0.65f; |
int sorting_context_id = 13; |
SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode; |
- scoped_ptr<cc::SharedQuadState> sqs(new cc::SharedQuadState); |
+ scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); |
+ cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); |
sqs->SetAll(content_to_target_transform, |
content_bounds, |
visible_content_rect, |
@@ -205,19 +174,9 @@ TEST(SurfaceLibTest, SharedQuadState) { |
EXPECT_EQ(is_clipped, mojo_sqs->is_clipped); |
EXPECT_EQ(opacity, mojo_sqs->opacity); |
EXPECT_EQ(sorting_context_id, mojo_sqs->sorting_context_id); |
- |
- scoped_ptr<cc::SharedQuadState> round_trip_sqs = ConvertTo(mojo_sqs.Pass()); |
- EXPECT_EQ(content_to_target_transform, |
- round_trip_sqs->content_to_target_transform); |
- EXPECT_EQ(content_bounds, round_trip_sqs->content_bounds); |
- EXPECT_EQ(visible_content_rect, round_trip_sqs->visible_content_rect); |
- EXPECT_EQ(clip_rect, round_trip_sqs->clip_rect); |
- EXPECT_EQ(is_clipped, round_trip_sqs->is_clipped); |
- EXPECT_EQ(opacity, round_trip_sqs->opacity); |
- EXPECT_EQ(sorting_context_id, round_trip_sqs->sorting_context_id); |
} |
-TEST_F(SurfaceLibQuadTest, RenderPass) { |
+TEST(SurfaceLibTest, RenderPass) { |
scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); |
cc::RenderPass::Id pass_id(1, 6); |
gfx::Rect output_rect(4, 9, 13, 71); |
@@ -250,6 +209,11 @@ TEST_F(SurfaceLibQuadTest, RenderPass) { |
blend_mode, |
sorting_context_id); |
+ gfx::Rect rect(5, 7, 13, 19); |
+ gfx::Rect opaque_rect(rect); |
+ gfx::Rect visible_rect(9, 11, 5, 7); |
+ bool needs_blending = false; |
+ |
cc::SolidColorDrawQuad* color_quad = |
pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); |
SkColor arbitrary_color = SK_ColorGREEN; |
@@ -262,6 +226,34 @@ TEST_F(SurfaceLibQuadTest, RenderPass) { |
arbitrary_color, |
force_anti_aliasing_off); |
+ cc::SurfaceDrawQuad* surface_quad = |
+ pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); |
+ cc::SurfaceId arbitrary_id(5); |
+ surface_quad->SetAll( |
+ sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); |
+ |
+ cc::TextureDrawQuad* texture_quad = |
+ pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
+ unsigned resource_id = 9; |
+ bool premultiplied_alpha = true; |
+ gfx::PointF uv_top_left(1.7f, 2.1f); |
+ gfx::PointF uv_bottom_right(-7.f, 16.3f); |
+ SkColor background_color = SK_ColorYELLOW; |
+ float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; |
+ bool flipped = false; |
+ texture_quad->SetAll(sqs, |
+ rect, |
+ opaque_rect, |
+ visible_rect, |
+ needs_blending, |
+ resource_id, |
+ premultiplied_alpha, |
+ uv_top_left, |
+ uv_bottom_right, |
+ background_color, |
+ vertex_opacity, |
+ flipped); |
+ |
surfaces::PassPtr mojo_pass = surfaces::Pass::From(*pass); |
ASSERT_FALSE(mojo_pass.is_null()); |
EXPECT_EQ(6, mojo_pass->id); |
@@ -271,7 +263,7 @@ TEST_F(SurfaceLibQuadTest, RenderPass) { |
mojo_pass->transform_to_root_target); |
EXPECT_EQ(has_transparent_background, mojo_pass->has_transparent_background); |
ASSERT_EQ(1u, mojo_pass->shared_quad_states.size()); |
- ASSERT_EQ(1u, mojo_pass->quads.size()); |
+ ASSERT_EQ(3u, mojo_pass->quads.size()); |
EXPECT_EQ(0, mojo_pass->quads[0]->shared_quad_state_index); |
scoped_ptr<cc::RenderPass> round_trip_pass = ConvertTo(mojo_pass.Pass()); |
@@ -283,9 +275,56 @@ TEST_F(SurfaceLibQuadTest, RenderPass) { |
EXPECT_EQ(has_transparent_background, |
round_trip_pass->has_transparent_background); |
ASSERT_EQ(1u, round_trip_pass->shared_quad_state_list.size()); |
- ASSERT_EQ(1u, round_trip_pass->quad_list.size()); |
+ ASSERT_EQ(3u, round_trip_pass->quad_list.size()); |
EXPECT_EQ(round_trip_pass->shared_quad_state_list.front(), |
- round_trip_pass->quad_list[0]->shared_quad_state); |
+ round_trip_pass->quad_list.front()->shared_quad_state); |
+ |
+ cc::SharedQuadState* round_trip_sqs = |
+ round_trip_pass->shared_quad_state_list.front(); |
+ EXPECT_EQ(content_to_target_transform, |
+ round_trip_sqs->content_to_target_transform); |
+ EXPECT_EQ(content_bounds, round_trip_sqs->content_bounds); |
+ EXPECT_EQ(visible_content_rect, round_trip_sqs->visible_content_rect); |
+ EXPECT_EQ(clip_rect, round_trip_sqs->clip_rect); |
+ EXPECT_EQ(is_clipped, round_trip_sqs->is_clipped); |
+ EXPECT_EQ(opacity, round_trip_sqs->opacity); |
+ EXPECT_EQ(sorting_context_id, round_trip_sqs->sorting_context_id); |
+ |
+ cc::QuadList::iterator dq_iter = round_trip_pass->quad_list.begin(); |
+ // First is solid color quad. |
+ ASSERT_EQ(cc::DrawQuad::SOLID_COLOR, (*dq_iter)->material); |
+ EXPECT_EQ(rect, (*dq_iter)->rect); |
+ EXPECT_EQ(opaque_rect, (*dq_iter)->opaque_rect); |
+ EXPECT_EQ(visible_rect, (*dq_iter)->visible_rect); |
+ EXPECT_EQ(needs_blending, (*dq_iter)->needs_blending); |
+ const cc::SolidColorDrawQuad* round_trip_color_quad = |
+ cc::SolidColorDrawQuad::MaterialCast(*dq_iter); |
+ EXPECT_EQ(arbitrary_color, round_trip_color_quad->color); |
+ EXPECT_EQ(force_anti_aliasing_off, |
+ round_trip_color_quad->force_anti_aliasing_off); |
+ |
+ ++dq_iter; |
+ // Second is surface quad. |
+ ASSERT_EQ(cc::DrawQuad::SURFACE_CONTENT, (*dq_iter)->material); |
+ const cc::SurfaceDrawQuad* round_trip_surface_quad = |
+ cc::SurfaceDrawQuad::MaterialCast(*dq_iter); |
+ EXPECT_EQ(arbitrary_id, round_trip_surface_quad->surface_id); |
+ |
+ ++dq_iter; |
+ // Third is texture quad. |
+ ASSERT_EQ(cc::DrawQuad::TEXTURE_CONTENT, (*dq_iter)->material); |
+ const cc::TextureDrawQuad* round_trip_texture_quad = |
+ cc::TextureDrawQuad::MaterialCast(*dq_iter); |
+ EXPECT_EQ(resource_id, round_trip_texture_quad->resource_id); |
+ EXPECT_EQ(premultiplied_alpha, round_trip_texture_quad->premultiplied_alpha); |
+ EXPECT_EQ(uv_top_left, round_trip_texture_quad->uv_top_left); |
+ EXPECT_EQ(uv_bottom_right, round_trip_texture_quad->uv_bottom_right); |
+ EXPECT_EQ(background_color, round_trip_texture_quad->background_color); |
+ for (size_t i = 0; i < 4; ++i) { |
+ EXPECT_EQ(vertex_opacity[i], round_trip_texture_quad->vertex_opacity[i]) |
+ << i; |
+ } |
+ EXPECT_EQ(flipped, round_trip_texture_quad->flipped); |
} |
TEST(SurfaceLibTest, Mailbox) { |