summaryrefslogtreecommitdiffstats
path: root/chromium/content/common/cc_messages_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/common/cc_messages_unittest.cc')
-rw-r--r--chromium/content/common/cc_messages_unittest.cc274
1 files changed, 190 insertions, 84 deletions
diff --git a/chromium/content/common/cc_messages_unittest.cc b/chromium/content/common/cc_messages_unittest.cc
index ccd41fc9070..d0ceb691820 100644
--- a/chromium/content/common/cc_messages_unittest.cc
+++ b/chromium/content/common/cc_messages_unittest.cc
@@ -9,11 +9,16 @@
#include <algorithm>
#include "cc/output/compositor_frame.h"
+#include "content/public/common/common_param_traits.h"
#include "ipc/ipc_message.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/khronos/GLES2/gl2ext.h"
#include "third_party/skia/include/effects/SkBlurImageFilter.h"
+#if defined(OS_POSIX)
+#include "base/file_descriptor_posix.h"
+#endif
+
using cc::CheckerboardDrawQuad;
using cc::DelegatedFrameData;
using cc::DebugBorderDrawQuad;
@@ -26,7 +31,9 @@ using cc::RenderPass;
using cc::RenderPassDrawQuad;
using cc::ResourceProvider;
using cc::SharedQuadState;
+using cc::SoftwareFrameData;
using cc::SolidColorDrawQuad;
+using cc::SurfaceDrawQuad;
using cc::TextureDrawQuad;
using cc::TileDrawQuad;
using cc::TransferableResource;
@@ -56,6 +63,7 @@ class CCMessagesTest : public testing::Test {
EXPECT_EQ(a->is_clipped, b->is_clipped);
EXPECT_EQ(a->opacity, b->opacity);
EXPECT_EQ(a->blend_mode, b->blend_mode);
+ EXPECT_EQ(a->sorting_context_id, b->sorting_context_id);
}
void Compare(const DrawQuad* a, const DrawQuad* b) {
@@ -105,6 +113,10 @@ class CCMessagesTest : public testing::Test {
Compare(StreamVideoDrawQuad::MaterialCast(a),
StreamVideoDrawQuad::MaterialCast(b));
break;
+ case DrawQuad::SURFACE_CONTENT:
+ Compare(SurfaceDrawQuad::MaterialCast(a),
+ SurfaceDrawQuad::MaterialCast(b));
+ break;
case DrawQuad::YUV_VIDEO_CONTENT:
Compare(YUVVideoDrawQuad::MaterialCast(a),
YUVVideoDrawQuad::MaterialCast(b));
@@ -159,6 +171,10 @@ class CCMessagesTest : public testing::Test {
EXPECT_EQ(a->matrix, b->matrix);
}
+ void Compare(const SurfaceDrawQuad* a, const SurfaceDrawQuad* b) {
+ EXPECT_EQ(a->surface_id, b->surface_id);
+ }
+
void Compare(const TextureDrawQuad* a, const TextureDrawQuad* b) {
EXPECT_EQ(a->resource_id, b->resource_id);
EXPECT_EQ(a->premultiplied_alpha, b->premultiplied_alpha);
@@ -180,22 +196,25 @@ class CCMessagesTest : public testing::Test {
}
void Compare(const YUVVideoDrawQuad* a, const YUVVideoDrawQuad* b) {
- EXPECT_EQ(a->tex_scale, b->tex_scale);
+ EXPECT_EQ(a->tex_coord_rect, b->tex_coord_rect);
EXPECT_EQ(a->y_plane_resource_id, b->y_plane_resource_id);
EXPECT_EQ(a->u_plane_resource_id, b->u_plane_resource_id);
EXPECT_EQ(a->v_plane_resource_id, b->v_plane_resource_id);
EXPECT_EQ(a->a_plane_resource_id, b->a_plane_resource_id);
+ EXPECT_EQ(a->color_space, b->color_space);
}
void Compare(const TransferableResource& a, const TransferableResource& b) {
EXPECT_EQ(a.id, b.id);
- EXPECT_EQ(a.sync_point, b.sync_point);
EXPECT_EQ(a.format, b.format);
- EXPECT_EQ(a.target, b.target);
EXPECT_EQ(a.filter, b.filter);
EXPECT_EQ(a.size.ToString(), b.size.ToString());
- for (size_t i = 0; i < arraysize(a.mailbox.name); ++i)
- EXPECT_EQ(a.mailbox.name[i], b.mailbox.name[i]);
+ for (size_t i = 0; i < arraysize(a.mailbox_holder.mailbox.name); ++i) {
+ EXPECT_EQ(a.mailbox_holder.mailbox.name[i],
+ b.mailbox_holder.mailbox.name[i]);
+ }
+ EXPECT_EQ(a.mailbox_holder.texture_target, b.mailbox_holder.texture_target);
+ EXPECT_EQ(a.mailbox_holder.sync_point, b.mailbox_holder.sync_point);
}
};
@@ -229,6 +248,9 @@ TEST_F(CCMessagesTest, AllQuads) {
bool arbitrary_bool1 = true;
bool arbitrary_bool2 = false;
bool arbitrary_bool3 = true;
+ int arbitrary_context_id1 = 12;
+ int arbitrary_context_id2 = 57;
+ int arbitrary_context_id3 = -503;
int arbitrary_int = 5;
SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58);
SkXfermode::Mode arbitrary_blend_mode1 = SkXfermode::kScreen_Mode;
@@ -242,12 +264,14 @@ TEST_F(CCMessagesTest, AllQuads) {
ResourceProvider::ResourceId arbitrary_resourceid3 = 23;
ResourceProvider::ResourceId arbitrary_resourceid4 = 16;
SkScalar arbitrary_sigma = SkFloatToScalar(2.0f);
+ YUVVideoDrawQuad::ColorSpace arbitrary_color_space =
+ YUVVideoDrawQuad::REC_601;
FilterOperations arbitrary_filters1;
arbitrary_filters1.Append(FilterOperation::CreateGrayscaleFilter(
arbitrary_float1));
skia::RefPtr<SkImageFilter> arbitrary_filter = skia::AdoptRef(
- new SkBlurImageFilter(arbitrary_sigma, arbitrary_sigma));
+ SkBlurImageFilter::Create(arbitrary_sigma, arbitrary_sigma));
arbitrary_filters1.Append(
cc::FilterOperation::CreateReferenceFilter(arbitrary_filter));
@@ -255,19 +279,37 @@ TEST_F(CCMessagesTest, AllQuads) {
arbitrary_filters2.Append(FilterOperation::CreateBrightnessFilter(
arbitrary_float2));
- scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create();
+ scoped_ptr<RenderPass> pass_in = RenderPass::Create();
+ pass_in->SetAll(arbitrary_id,
+ arbitrary_rect1,
+ arbitrary_rect2,
+ arbitrary_matrix,
+ arbitrary_bool1);
+
+ SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState();
shared_state1_in->SetAll(arbitrary_matrix,
arbitrary_size1,
arbitrary_rect1,
arbitrary_rect2,
arbitrary_bool1,
arbitrary_float1,
- arbitrary_blend_mode1);
- scoped_ptr<SharedQuadState> shared_state1_cmp = shared_state1_in->Copy();
+ arbitrary_blend_mode1,
+ arbitrary_context_id1);
+
+ scoped_ptr<RenderPass> pass_cmp = RenderPass::Create();
+ pass_cmp->SetAll(arbitrary_id,
+ arbitrary_rect1,
+ arbitrary_rect2,
+ arbitrary_matrix,
+ arbitrary_bool1);
+
+ SharedQuadState* shared_state1_cmp =
+ pass_cmp->CreateAndAppendSharedQuadState();
+ shared_state1_cmp->CopyFrom(shared_state1_in);
scoped_ptr<CheckerboardDrawQuad> checkerboard_in =
CheckerboardDrawQuad::Create();
- checkerboard_in->SetAll(shared_state1_in.get(),
+ checkerboard_in->SetAll(shared_state1_in,
arbitrary_rect1,
arbitrary_rect2_inside_rect1,
arbitrary_rect1_inside_rect1,
@@ -278,7 +320,7 @@ TEST_F(CCMessagesTest, AllQuads) {
scoped_ptr<DebugBorderDrawQuad> debugborder_in =
DebugBorderDrawQuad::Create();
- debugborder_in->SetAll(shared_state1_in.get(),
+ debugborder_in->SetAll(shared_state1_in,
arbitrary_rect3,
arbitrary_rect1_inside_rect3,
arbitrary_rect2_inside_rect3,
@@ -290,7 +332,7 @@ TEST_F(CCMessagesTest, AllQuads) {
scoped_ptr<IOSurfaceDrawQuad> iosurface_in =
IOSurfaceDrawQuad::Create();
- iosurface_in->SetAll(shared_state1_in.get(),
+ iosurface_in->SetAll(shared_state1_in,
arbitrary_rect2,
arbitrary_rect2_inside_rect2,
arbitrary_rect1_inside_rect2,
@@ -301,19 +343,22 @@ TEST_F(CCMessagesTest, AllQuads) {
scoped_ptr<DrawQuad> iosurface_cmp = iosurface_in->Copy(
iosurface_in->shared_quad_state);
- scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create();
+ SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState();
shared_state2_in->SetAll(arbitrary_matrix,
arbitrary_size2,
arbitrary_rect2,
arbitrary_rect3,
arbitrary_bool1,
arbitrary_float2,
- arbitrary_blend_mode2);
- scoped_ptr<SharedQuadState> shared_state2_cmp = shared_state2_in->Copy();
+ arbitrary_blend_mode2,
+ arbitrary_context_id2);
+ SharedQuadState* shared_state2_cmp =
+ pass_cmp->CreateAndAppendSharedQuadState();
+ shared_state2_cmp->CopyFrom(shared_state2_in);
scoped_ptr<RenderPassDrawQuad> renderpass_in =
RenderPassDrawQuad::Create();
- renderpass_in->SetAll(shared_state2_in.get(),
+ renderpass_in->SetAll(shared_state2_in,
arbitrary_rect1,
arbitrary_rect2_inside_rect1,
arbitrary_rect1_inside_rect1,
@@ -328,19 +373,22 @@ TEST_F(CCMessagesTest, AllQuads) {
scoped_ptr<RenderPassDrawQuad> renderpass_cmp = renderpass_in->Copy(
renderpass_in->shared_quad_state, renderpass_in->render_pass_id);
- scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create();
+ SharedQuadState* shared_state3_in = pass_in->CreateAndAppendSharedQuadState();
shared_state3_in->SetAll(arbitrary_matrix,
arbitrary_size3,
arbitrary_rect3,
arbitrary_rect1,
arbitrary_bool1,
arbitrary_float3,
- arbitrary_blend_mode3);
- scoped_ptr<SharedQuadState> shared_state3_cmp = shared_state3_in->Copy();
+ arbitrary_blend_mode3,
+ arbitrary_context_id3);
+ SharedQuadState* shared_state3_cmp =
+ pass_cmp->CreateAndAppendSharedQuadState();
+ shared_state3_cmp->CopyFrom(shared_state3_in);
scoped_ptr<SolidColorDrawQuad> solidcolor_in =
SolidColorDrawQuad::Create();
- solidcolor_in->SetAll(shared_state3_in.get(),
+ solidcolor_in->SetAll(shared_state3_in,
arbitrary_rect3,
arbitrary_rect1_inside_rect3,
arbitrary_rect2_inside_rect3,
@@ -352,7 +400,7 @@ TEST_F(CCMessagesTest, AllQuads) {
scoped_ptr<StreamVideoDrawQuad> streamvideo_in =
StreamVideoDrawQuad::Create();
- streamvideo_in->SetAll(shared_state3_in.get(),
+ streamvideo_in->SetAll(shared_state3_in,
arbitrary_rect2,
arbitrary_rect2_inside_rect2,
arbitrary_rect1_inside_rect2,
@@ -362,8 +410,19 @@ TEST_F(CCMessagesTest, AllQuads) {
scoped_ptr<DrawQuad> streamvideo_cmp = streamvideo_in->Copy(
streamvideo_in->shared_quad_state);
+ cc::SurfaceId arbitrary_surface_id(3);
+ scoped_ptr<SurfaceDrawQuad> surface_in = SurfaceDrawQuad::Create();
+ surface_in->SetAll(shared_state3_in,
+ arbitrary_rect2,
+ arbitrary_rect2_inside_rect2,
+ arbitrary_rect1_inside_rect2,
+ arbitrary_bool1,
+ arbitrary_surface_id);
+ scoped_ptr<DrawQuad> surface_cmp = surface_in->Copy(
+ surface_in->shared_quad_state);
+
scoped_ptr<TextureDrawQuad> texture_in = TextureDrawQuad::Create();
- texture_in->SetAll(shared_state3_in.get(),
+ texture_in->SetAll(shared_state3_in,
arbitrary_rect2,
arbitrary_rect2_inside_rect2,
arbitrary_rect1_inside_rect2,
@@ -379,7 +438,7 @@ TEST_F(CCMessagesTest, AllQuads) {
texture_in->shared_quad_state);
scoped_ptr<TileDrawQuad> tile_in = TileDrawQuad::Create();
- tile_in->SetAll(shared_state3_in.get(),
+ tile_in->SetAll(shared_state3_in,
arbitrary_rect2,
arbitrary_rect2_inside_rect2,
arbitrary_rect1_inside_rect2,
@@ -393,55 +452,39 @@ TEST_F(CCMessagesTest, AllQuads) {
scoped_ptr<YUVVideoDrawQuad> yuvvideo_in =
YUVVideoDrawQuad::Create();
- yuvvideo_in->SetAll(shared_state3_in.get(),
+ yuvvideo_in->SetAll(shared_state3_in,
arbitrary_rect1,
arbitrary_rect2_inside_rect1,
arbitrary_rect1_inside_rect1,
arbitrary_bool1,
- arbitrary_sizef1,
+ arbitrary_rectf1,
arbitrary_resourceid1,
arbitrary_resourceid2,
arbitrary_resourceid3,
- arbitrary_resourceid4);
+ arbitrary_resourceid4,
+ arbitrary_color_space);
scoped_ptr<DrawQuad> yuvvideo_cmp = yuvvideo_in->Copy(
yuvvideo_in->shared_quad_state);
- scoped_ptr<RenderPass> pass_in = RenderPass::Create();
- pass_in->SetAll(arbitrary_id,
- arbitrary_rect1,
- arbitrary_rectf1,
- arbitrary_matrix,
- arbitrary_bool1);
-
- pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass());
pass_in->quad_list.push_back(checkerboard_in.PassAs<DrawQuad>());
pass_in->quad_list.push_back(debugborder_in.PassAs<DrawQuad>());
pass_in->quad_list.push_back(iosurface_in.PassAs<DrawQuad>());
pass_in->quad_list.push_back(renderpass_in.PassAs<DrawQuad>());
- pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass());
- pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass());
pass_in->quad_list.push_back(solidcolor_in.PassAs<DrawQuad>());
pass_in->quad_list.push_back(streamvideo_in.PassAs<DrawQuad>());
+ pass_in->quad_list.push_back(surface_in.PassAs<DrawQuad>());
pass_in->quad_list.push_back(texture_in.PassAs<DrawQuad>());
pass_in->quad_list.push_back(tile_in.PassAs<DrawQuad>());
pass_in->quad_list.push_back(yuvvideo_in.PassAs<DrawQuad>());
- scoped_ptr<RenderPass> pass_cmp = RenderPass::Create();
- pass_cmp->SetAll(arbitrary_id,
- arbitrary_rect1,
- arbitrary_rectf1,
- arbitrary_matrix,
- arbitrary_bool1);
- pass_cmp->shared_quad_state_list.push_back(shared_state1_cmp.Pass());
pass_cmp->quad_list.push_back(checkerboard_cmp.PassAs<DrawQuad>());
pass_cmp->quad_list.push_back(debugborder_cmp.PassAs<DrawQuad>());
pass_cmp->quad_list.push_back(iosurface_cmp.PassAs<DrawQuad>());
pass_cmp->quad_list.push_back(renderpass_cmp.PassAs<DrawQuad>());
- pass_cmp->shared_quad_state_list.push_back(shared_state2_cmp.Pass());
- pass_cmp->shared_quad_state_list.push_back(shared_state3_cmp.Pass());
pass_cmp->quad_list.push_back(solidcolor_cmp.PassAs<DrawQuad>());
pass_cmp->quad_list.push_back(streamvideo_cmp.PassAs<DrawQuad>());
+ pass_cmp->quad_list.push_back(surface_cmp.PassAs<DrawQuad>());
pass_cmp->quad_list.push_back(texture_cmp.PassAs<DrawQuad>());
pass_cmp->quad_list.push_back(tile_cmp.PassAs<DrawQuad>());
pass_cmp->quad_list.push_back(yuvvideo_cmp.PassAs<DrawQuad>());
@@ -449,7 +492,7 @@ TEST_F(CCMessagesTest, AllQuads) {
// Make sure the in and cmp RenderPasses match.
Compare(pass_cmp.get(), pass_in.get());
ASSERT_EQ(3u, pass_in->shared_quad_state_list.size());
- ASSERT_EQ(9u, pass_in->quad_list.size());
+ ASSERT_EQ(10u, pass_in->quad_list.size());
for (size_t i = 0; i < 3; ++i) {
Compare(pass_cmp->shared_quad_state_list[i],
pass_in->shared_quad_state_list[i]);
@@ -481,7 +524,7 @@ TEST_F(CCMessagesTest, AllQuads) {
frame_out.render_pass_list.begin());
Compare(pass_cmp.get(), pass_out.get());
ASSERT_EQ(3u, pass_out->shared_quad_state_list.size());
- ASSERT_EQ(9u, pass_out->quad_list.size());
+ ASSERT_EQ(10u, pass_out->quad_list.size());
for (size_t i = 0; i < 3; ++i) {
Compare(pass_cmp->shared_quad_state_list[i],
pass_out->shared_quad_state_list[i]);
@@ -505,22 +548,23 @@ TEST_F(CCMessagesTest, UnusedSharedQuadStates) {
scoped_ptr<RenderPass> pass_in = RenderPass::Create();
pass_in->SetAll(RenderPass::Id(1, 1),
gfx::Rect(100, 100),
- gfx::RectF(),
+ gfx::Rect(),
gfx::Transform(),
false);
// The first SharedQuadState is used.
- scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create();
+ SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState();
shared_state1_in->SetAll(gfx::Transform(),
gfx::Size(1, 1),
gfx::Rect(),
gfx::Rect(),
false,
1.f,
- SkXfermode::kSrcOver_Mode);
+ SkXfermode::kSrcOver_Mode,
+ 0);
quad = CheckerboardDrawQuad::Create();
- quad->SetAll(shared_state1_in.get(),
+ quad->SetAll(shared_state1_in,
gfx::Rect(10, 10),
gfx::Rect(10, 10),
gfx::Rect(10, 10),
@@ -529,36 +573,39 @@ TEST_F(CCMessagesTest, UnusedSharedQuadStates) {
pass_in->quad_list.push_back(quad.PassAs<DrawQuad>());
// The second and third SharedQuadStates are not used.
- scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create();
+ SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState();
shared_state2_in->SetAll(gfx::Transform(),
gfx::Size(2, 2),
gfx::Rect(),
gfx::Rect(),
false,
1.f,
- SkXfermode::kSrcOver_Mode);
+ SkXfermode::kSrcOver_Mode,
+ 0);
- scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create();
+ SharedQuadState* shared_state3_in = pass_in->CreateAndAppendSharedQuadState();
shared_state3_in->SetAll(gfx::Transform(),
gfx::Size(3, 3),
gfx::Rect(),
gfx::Rect(),
false,
1.f,
- SkXfermode::kSrcOver_Mode);
+ SkXfermode::kSrcOver_Mode,
+ 0);
// The fourth SharedQuadState is used.
- scoped_ptr<SharedQuadState> shared_state4_in = SharedQuadState::Create();
+ SharedQuadState* shared_state4_in = pass_in->CreateAndAppendSharedQuadState();
shared_state4_in->SetAll(gfx::Transform(),
gfx::Size(4, 4),
gfx::Rect(),
gfx::Rect(),
false,
1.f,
- SkXfermode::kSrcOver_Mode);
+ SkXfermode::kSrcOver_Mode,
+ 0);
quad = CheckerboardDrawQuad::Create();
- quad->SetAll(shared_state4_in.get(),
+ quad->SetAll(shared_state4_in,
gfx::Rect(10, 10),
gfx::Rect(10, 10),
gfx::Rect(10, 10),
@@ -567,20 +614,15 @@ TEST_F(CCMessagesTest, UnusedSharedQuadStates) {
pass_in->quad_list.push_back(quad.PassAs<DrawQuad>());
// The fifth is not used again.
- scoped_ptr<SharedQuadState> shared_state5_in = SharedQuadState::Create();
+ SharedQuadState* shared_state5_in = pass_in->CreateAndAppendSharedQuadState();
shared_state5_in->SetAll(gfx::Transform(),
gfx::Size(5, 5),
gfx::Rect(),
gfx::Rect(),
false,
1.f,
- SkXfermode::kSrcOver_Mode);
-
- pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass());
- pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass());
- pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass());
- pass_in->shared_quad_state_list.push_back(shared_state4_in.Pass());
- pass_in->shared_quad_state_list.push_back(shared_state5_in.Pass());
+ SkXfermode::kSrcOver_Mode,
+ 0);
// 5 SharedQuadStates go in.
ASSERT_EQ(5u, pass_in->shared_quad_state_list.size());
@@ -617,37 +659,33 @@ TEST_F(CCMessagesTest, Resources) {
unsigned int arbitrary_uint1 = 71234838;
unsigned int arbitrary_uint2 = 53589793;
- GLbyte arbitrary_mailbox1[64] = {
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
- 1, 2, 3, 4
- };
+ GLbyte arbitrary_mailbox1[GL_MAILBOX_SIZE_CHROMIUM] = {
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4};
- GLbyte arbitrary_mailbox2[64] = {
- 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
- 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
- 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
- 0, 9, 8, 7
- };
+ GLbyte arbitrary_mailbox2[GL_MAILBOX_SIZE_CHROMIUM] = {
+ 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, 0, 9,
+ 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, 0, 9, 8, 7,
+ 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, 0, 9, 8, 7};
TransferableResource arbitrary_resource1;
arbitrary_resource1.id = 2178312;
- arbitrary_resource1.sync_point = arbitrary_uint1;
arbitrary_resource1.format = cc::RGBA_8888;
- arbitrary_resource1.target = GL_TEXTURE_2D;
arbitrary_resource1.filter = 53;
arbitrary_resource1.size = gfx::Size(37189, 123123);
- arbitrary_resource1.mailbox.SetName(arbitrary_mailbox1);
+ arbitrary_resource1.mailbox_holder.mailbox.SetName(arbitrary_mailbox1);
+ arbitrary_resource1.mailbox_holder.texture_target = GL_TEXTURE_2D;
+ arbitrary_resource1.mailbox_holder.sync_point = arbitrary_uint1;
TransferableResource arbitrary_resource2;
arbitrary_resource2.id = 789132;
- arbitrary_resource2.sync_point = arbitrary_uint2;
arbitrary_resource2.format = cc::RGBA_4444;
- arbitrary_resource2.target = GL_TEXTURE_EXTERNAL_OES;
arbitrary_resource2.filter = 47;
arbitrary_resource2.size = gfx::Size(89123, 23789);
- arbitrary_resource2.mailbox.SetName(arbitrary_mailbox2);
+ arbitrary_resource2.mailbox_holder.mailbox.SetName(arbitrary_mailbox2);
+ arbitrary_resource2.mailbox_holder.texture_target = GL_TEXTURE_EXTERNAL_OES;
+ arbitrary_resource2.mailbox_holder.sync_point = arbitrary_uint2;
scoped_ptr<RenderPass> renderpass_in = RenderPass::Create();
renderpass_in->SetNew(
@@ -697,6 +735,9 @@ TEST_F(CCMessagesTest, LargestQuadType) {
case cc::DrawQuad::SOLID_COLOR:
largest = std::max(largest, sizeof(cc::SolidColorDrawQuad));
break;
+ case cc::DrawQuad::SURFACE_CONTENT:
+ largest = std::max(largest, sizeof(cc::SurfaceDrawQuad));
+ break;
case cc::DrawQuad::TILED_CONTENT:
largest = std::max(largest, sizeof(cc::TileDrawQuad));
break;
@@ -719,5 +760,70 @@ TEST_F(CCMessagesTest, LargestQuadType) {
EXPECT_EQ(sizeof(RenderPassDrawQuad), largest);
}
+TEST_F(CCMessagesTest, SoftwareFrameData) {
+ cc::SoftwareFrameData frame_in;
+ frame_in.id = 3;
+ frame_in.size = gfx::Size(40, 20);
+ frame_in.damage_rect = gfx::Rect(5, 18, 31, 44);
+ frame_in.bitmap_id = cc::SharedBitmap::GenerateId();
+
+ // Write the frame.
+ IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
+ IPC::ParamTraits<cc::SoftwareFrameData>::Write(&msg, frame_in);
+
+ // Read the frame.
+ cc::SoftwareFrameData frame_out;
+ PickleIterator iter(msg);
+ EXPECT_TRUE(
+ IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out));
+ EXPECT_EQ(frame_in.id, frame_out.id);
+ EXPECT_EQ(frame_in.size.ToString(), frame_out.size.ToString());
+ EXPECT_EQ(frame_in.damage_rect.ToString(), frame_out.damage_rect.ToString());
+ EXPECT_EQ(frame_in.bitmap_id, frame_out.bitmap_id);
+}
+
+TEST_F(CCMessagesTest, SoftwareFrameDataMaxInt) {
+ SoftwareFrameData frame_in;
+ frame_in.id = 3;
+ frame_in.size = gfx::Size(40, 20);
+ frame_in.damage_rect = gfx::Rect(5, 18, 31, 44);
+ frame_in.bitmap_id = cc::SharedBitmap::GenerateId();
+
+ // Write the SoftwareFrameData by hand, make sure it works.
+ {
+ IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
+ IPC::WriteParam(&msg, frame_in.id);
+ IPC::WriteParam(&msg, frame_in.size);
+ IPC::WriteParam(&msg, frame_in.damage_rect);
+ IPC::WriteParam(&msg, frame_in.bitmap_id);
+ SoftwareFrameData frame_out;
+ PickleIterator iter(msg);
+ EXPECT_TRUE(
+ IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out));
+ }
+
+ // The size of the frame may overflow when multiplied together.
+ int max = std::numeric_limits<int>::max();
+ frame_in.size = gfx::Size(max, max);
+
+ // If size_t is larger than int, then int*int*4 can always fit in size_t.
+ bool expect_read = sizeof(size_t) >= sizeof(int) * 2;
+
+ // Write the SoftwareFrameData with the MaxInt size, if it causes overflow it
+ // should fail.
+ {
+ IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
+ IPC::WriteParam(&msg, frame_in.id);
+ IPC::WriteParam(&msg, frame_in.size);
+ IPC::WriteParam(&msg, frame_in.damage_rect);
+ IPC::WriteParam(&msg, frame_in.bitmap_id);
+ SoftwareFrameData frame_out;
+ PickleIterator iter(msg);
+ EXPECT_EQ(
+ expect_read,
+ IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out));
+ }
+}
+
} // namespace
} // namespace content