blob: 0537a5ad0a7e486de29fd1c307ee617f07f4aeba [file] [log] [blame]
[email protected]4934d362012-11-22 22:04:531// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/common/cc_messages.h"
6
7#include <string.h>
8
[email protected]7f0d825f2013-03-18 07:24:309#include "cc/output/compositor_frame.h"
[email protected]4934d362012-11-22 22:04:5310#include "ipc/ipc_message.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13using cc::CheckerboardDrawQuad;
[email protected]bf189f62012-12-18 03:42:1114using cc::DelegatedFrameData;
[email protected]4934d362012-11-22 22:04:5315using cc::DebugBorderDrawQuad;
16using cc::DrawQuad;
[email protected]ae6b1a72013-06-25 18:49:2917using cc::FilterOperation;
18using cc::FilterOperations;
[email protected]4934d362012-11-22 22:04:5319using cc::IOSurfaceDrawQuad;
[email protected]9ee4d3a2013-03-27 17:43:1620using cc::PictureDrawQuad;
[email protected]4934d362012-11-22 22:04:5321using cc::RenderPass;
22using cc::RenderPassDrawQuad;
23using cc::ResourceProvider;
24using cc::SharedQuadState;
25using cc::SolidColorDrawQuad;
26using cc::TextureDrawQuad;
27using cc::TileDrawQuad;
[email protected]bca159072012-12-04 00:52:4428using cc::TransferableResource;
[email protected]4934d362012-11-22 22:04:5329using cc::StreamVideoDrawQuad;
30using cc::VideoLayerImpl;
31using cc::YUVVideoDrawQuad;
[email protected]c8686a02012-11-27 08:29:0032using gfx::Transform;
[email protected]4934d362012-11-22 22:04:5333
[email protected]bca159072012-12-04 00:52:4434namespace content {
35namespace {
36
[email protected]4934d362012-11-22 22:04:5337class CCMessagesTest : public testing::Test {
38 protected:
39 void Compare(const RenderPass* a, const RenderPass* b) {
40 EXPECT_EQ(a->id, b->id);
41 EXPECT_EQ(a->output_rect.ToString(), b->output_rect.ToString());
42 EXPECT_EQ(a->damage_rect.ToString(), b->damage_rect.ToString());
43 EXPECT_EQ(a->transform_to_root_target, b->transform_to_root_target);
44 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background);
45 EXPECT_EQ(a->has_occlusion_from_outside_target_surface,
46 b->has_occlusion_from_outside_target_surface);
[email protected]4934d362012-11-22 22:04:5347 }
48
49 void Compare(const SharedQuadState* a, const SharedQuadState* b) {
50 EXPECT_EQ(a->content_to_target_transform, b->content_to_target_transform);
[email protected]f902bf92013-03-04 18:33:2751 EXPECT_EQ(a->content_bounds, b->content_bounds);
[email protected]4934d362012-11-22 22:04:5352 EXPECT_EQ(a->visible_content_rect, b->visible_content_rect);
[email protected]4934d362012-11-22 22:04:5353 EXPECT_EQ(a->clip_rect, b->clip_rect);
54 EXPECT_EQ(a->is_clipped, b->is_clipped);
55 EXPECT_EQ(a->opacity, b->opacity);
56 }
57
58 void Compare(const DrawQuad* a, const DrawQuad* b) {
59 ASSERT_NE(DrawQuad::INVALID, a->material);
60 ASSERT_EQ(a->material, b->material);
61 EXPECT_EQ(a->rect.ToString(), b->rect.ToString());
62 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString());
63 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString());
64 EXPECT_EQ(a->needs_blending, b->needs_blending);
65
66 Compare(a->shared_quad_state, b->shared_quad_state);
67
68 switch (a->material) {
69 case DrawQuad::CHECKERBOARD:
70 Compare(CheckerboardDrawQuad::MaterialCast(a),
71 CheckerboardDrawQuad::MaterialCast(b));
72 break;
73 case DrawQuad::DEBUG_BORDER:
74 Compare(DebugBorderDrawQuad::MaterialCast(a),
75 DebugBorderDrawQuad::MaterialCast(b));
76 break;
77 case DrawQuad::IO_SURFACE_CONTENT:
78 Compare(IOSurfaceDrawQuad::MaterialCast(a),
79 IOSurfaceDrawQuad::MaterialCast(b));
80 break;
[email protected]9ee4d3a2013-03-27 17:43:1681 case DrawQuad::PICTURE_CONTENT:
82 Compare(PictureDrawQuad::MaterialCast(a),
83 PictureDrawQuad::MaterialCast(b));
84 break;
[email protected]4934d362012-11-22 22:04:5385 case DrawQuad::RENDER_PASS:
86 Compare(RenderPassDrawQuad::MaterialCast(a),
87 RenderPassDrawQuad::MaterialCast(b));
88 break;
89 case DrawQuad::TEXTURE_CONTENT:
90 Compare(TextureDrawQuad::MaterialCast(a),
91 TextureDrawQuad::MaterialCast(b));
92 break;
93 case DrawQuad::TILED_CONTENT:
94 Compare(TileDrawQuad::MaterialCast(a),
95 TileDrawQuad::MaterialCast(b));
96 break;
97 case DrawQuad::SOLID_COLOR:
98 Compare(SolidColorDrawQuad::MaterialCast(a),
99 SolidColorDrawQuad::MaterialCast(b));
100 break;
101 case DrawQuad::STREAM_VIDEO_CONTENT:
102 Compare(StreamVideoDrawQuad::MaterialCast(a),
103 StreamVideoDrawQuad::MaterialCast(b));
104 break;
105 case DrawQuad::YUV_VIDEO_CONTENT:
106 Compare(YUVVideoDrawQuad::MaterialCast(a),
107 YUVVideoDrawQuad::MaterialCast(b));
108 break;
109 case DrawQuad::INVALID:
110 break;
111 }
112 }
113
114 void Compare(const CheckerboardDrawQuad* a, const CheckerboardDrawQuad* b) {
115 EXPECT_EQ(a->color, b->color);
116 }
117
118 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) {
119 EXPECT_EQ(a->color, b->color);
120 EXPECT_EQ(a->width, b->width);
121 }
122
123 void Compare(const IOSurfaceDrawQuad* a, const IOSurfaceDrawQuad* b) {
124 EXPECT_EQ(a->io_surface_size.ToString(), b->io_surface_size.ToString());
[email protected]b7cfc632013-04-10 04:44:49125 EXPECT_EQ(a->io_surface_resource_id, b->io_surface_resource_id);
[email protected]4934d362012-11-22 22:04:53126 EXPECT_EQ(a->orientation, b->orientation);
127 }
128
129 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) {
[email protected]82f93fb2013-04-17 21:42:06130 EXPECT_EQ(a->render_pass_id, b->render_pass_id);
[email protected]4934d362012-11-22 22:04:53131 EXPECT_EQ(a->is_replica, b->is_replica);
132 EXPECT_EQ(a->mask_resource_id, b->mask_resource_id);
133 EXPECT_EQ(a->contents_changed_since_last_frame,
134 b->contents_changed_since_last_frame);
[email protected]458af1e2012-12-13 05:12:18135 EXPECT_EQ(a->mask_uv_rect.ToString(), b->mask_uv_rect.ToString());
[email protected]20062042012-12-21 22:16:36136 EXPECT_EQ(a->filters, b->filters);
137 EXPECT_EQ(a->filter, b->filter);
138 EXPECT_EQ(a->background_filters, b->background_filters);
[email protected]4934d362012-11-22 22:04:53139 }
140
141 void Compare(const SolidColorDrawQuad* a, const SolidColorDrawQuad* b) {
142 EXPECT_EQ(a->color, b->color);
[email protected]10a30b12013-05-02 16:42:11143 EXPECT_EQ(a->force_anti_aliasing_off, b->force_anti_aliasing_off);
[email protected]4934d362012-11-22 22:04:53144 }
145
146 void Compare(const StreamVideoDrawQuad* a, const StreamVideoDrawQuad* b) {
[email protected]b7cfc632013-04-10 04:44:49147 EXPECT_EQ(a->resource_id, b->resource_id);
[email protected]4934d362012-11-22 22:04:53148 EXPECT_EQ(a->matrix, b->matrix);
149 }
150
151 void Compare(const TextureDrawQuad* a, const TextureDrawQuad* b) {
152 EXPECT_EQ(a->resource_id, b->resource_id);
153 EXPECT_EQ(a->premultiplied_alpha, b->premultiplied_alpha);
[email protected]1fd555b2013-01-18 00:13:21154 EXPECT_EQ(a->uv_top_left, b->uv_top_left);
155 EXPECT_EQ(a->uv_bottom_right, b->uv_bottom_right);
[email protected]d18b4d62013-07-12 05:33:49156 EXPECT_EQ(a->background_color, b->background_color);
[email protected]61df9d82013-01-30 02:32:42157 EXPECT_EQ(a->vertex_opacity[0], b->vertex_opacity[0]);
158 EXPECT_EQ(a->vertex_opacity[1], b->vertex_opacity[1]);
159 EXPECT_EQ(a->vertex_opacity[2], b->vertex_opacity[2]);
160 EXPECT_EQ(a->vertex_opacity[3], b->vertex_opacity[3]);
[email protected]4934d362012-11-22 22:04:53161 EXPECT_EQ(a->flipped, b->flipped);
162 }
163
164 void Compare(const TileDrawQuad* a, const TileDrawQuad* b) {
165 EXPECT_EQ(a->resource_id, b->resource_id);
166 EXPECT_EQ(a->tex_coord_rect, b->tex_coord_rect);
167 EXPECT_EQ(a->texture_size, b->texture_size);
168 EXPECT_EQ(a->swizzle_contents, b->swizzle_contents);
[email protected]4934d362012-11-22 22:04:53169 }
170
171 void Compare(const YUVVideoDrawQuad* a, const YUVVideoDrawQuad* b) {
172 EXPECT_EQ(a->tex_scale, b->tex_scale);
[email protected]b7cfc632013-04-10 04:44:49173 EXPECT_EQ(a->y_plane_resource_id, b->y_plane_resource_id);
174 EXPECT_EQ(a->u_plane_resource_id, b->u_plane_resource_id);
175 EXPECT_EQ(a->v_plane_resource_id, b->v_plane_resource_id);
[email protected]0402b2382013-06-07 21:50:54176 EXPECT_EQ(a->a_plane_resource_id, b->a_plane_resource_id);
[email protected]4934d362012-11-22 22:04:53177 }
[email protected]bca159072012-12-04 00:52:44178
179 void Compare(const TransferableResource& a, const TransferableResource& b) {
180 EXPECT_EQ(a.id, b.id);
[email protected]09831f7f2013-02-27 03:32:15181 EXPECT_EQ(a.sync_point, b.sync_point);
[email protected]bca159072012-12-04 00:52:44182 EXPECT_EQ(a.format, b.format);
[email protected]80189292013-02-28 01:59:36183 EXPECT_EQ(a.filter, b.filter);
[email protected]bca159072012-12-04 00:52:44184 EXPECT_EQ(a.size.ToString(), b.size.ToString());
185 for (size_t i = 0; i < arraysize(a.mailbox.name); ++i)
186 EXPECT_EQ(a.mailbox.name[i], b.mailbox.name[i]);
187 }
[email protected]4934d362012-11-22 22:04:53188};
189
190TEST_F(CCMessagesTest, AllQuads) {
191 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
192
[email protected]c8686a02012-11-27 08:29:00193 Transform arbitrary_matrix;
194 arbitrary_matrix.Scale(3, 3);
195 arbitrary_matrix.Translate(-5, 20);
196 arbitrary_matrix.Rotate(15);
[email protected]4934d362012-11-22 22:04:53197 gfx::Rect arbitrary_rect1(-5, 9, 3, 15);
198 gfx::Rect arbitrary_rect2(40, 23, 11, 7);
199 gfx::Rect arbitrary_rect3(7, -53, 22, 19);
200 gfx::Size arbitrary_size1(15, 19);
201 gfx::Size arbitrary_size2(3, 99);
202 gfx::Size arbitrary_size3(75, 1281);
203 gfx::RectF arbitrary_rectf1(4.2f, -922.1f, 15.6f, 29.5f);
204 gfx::SizeF arbitrary_sizef1(15.2f, 104.6f);
[email protected]61df9d82013-01-30 02:32:42205 gfx::PointF arbitrary_pointf1(31.4f, 15.9f);
206 gfx::PointF arbitrary_pointf2(26.5f, -35.8f);
[email protected]4934d362012-11-22 22:04:53207 float arbitrary_float1 = 0.7f;
208 float arbitrary_float2 = 0.3f;
209 float arbitrary_float3 = 0.9f;
[email protected]61df9d82013-01-30 02:32:42210 float arbitrary_float_array[4] = {3.5f, 6.2f, 9.3f, 12.3f};
[email protected]4934d362012-11-22 22:04:53211 bool arbitrary_bool1 = true;
212 bool arbitrary_bool2 = false;
[email protected]61df9d82013-01-30 02:32:42213 bool arbitrary_bool3 = true;
[email protected]4934d362012-11-22 22:04:53214 int arbitrary_int = 5;
215 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58);
216 IOSurfaceDrawQuad::Orientation arbitrary_orientation =
217 IOSurfaceDrawQuad::UNFLIPPED;
218 RenderPass::Id arbitrary_id(10, 14);
[email protected]b7cfc632013-04-10 04:44:49219 ResourceProvider::ResourceId arbitrary_resourceid1 = 55;
220 ResourceProvider::ResourceId arbitrary_resourceid2 = 47;
221 ResourceProvider::ResourceId arbitrary_resourceid3 = 23;
[email protected]0402b2382013-06-07 21:50:54222 ResourceProvider::ResourceId arbitrary_resourceid4 = 16;
[email protected]4934d362012-11-22 22:04:53223
[email protected]ae6b1a72013-06-25 18:49:29224 FilterOperations arbitrary_filters1;
225 arbitrary_filters1.Append(FilterOperation::CreateGrayscaleFilter(
[email protected]4934d362012-11-22 22:04:53226 arbitrary_float1));
227
[email protected]ae6b1a72013-06-25 18:49:29228 FilterOperations arbitrary_filters2;
229 arbitrary_filters2.Append(FilterOperation::CreateBrightnessFilter(
[email protected]4934d362012-11-22 22:04:53230 arbitrary_float2));
231
[email protected]1940c4e2012-12-04 05:08:15232 // TODO(danakj): filter is not serialized.
233 skia::RefPtr<SkImageFilter> arbitrary_filter;
234
[email protected]4934d362012-11-22 22:04:53235 scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create();
236 shared_state1_in->SetAll(arbitrary_matrix,
[email protected]f902bf92013-03-04 18:33:27237 arbitrary_size1,
[email protected]4934d362012-11-22 22:04:53238 arbitrary_rect1,
239 arbitrary_rect2,
[email protected]4934d362012-11-22 22:04:53240 arbitrary_bool1,
241 arbitrary_float1);
242 scoped_ptr<SharedQuadState> shared_state1_cmp = shared_state1_in->Copy();
243
244 scoped_ptr<CheckerboardDrawQuad> checkerboard_in =
245 CheckerboardDrawQuad::Create();
246 checkerboard_in->SetAll(shared_state1_in.get(),
247 arbitrary_rect1,
248 arbitrary_rect2,
249 arbitrary_rect3,
250 arbitrary_bool1,
251 arbitrary_color);
252 scoped_ptr<DrawQuad> checkerboard_cmp = checkerboard_in->Copy(
253 checkerboard_in->shared_quad_state);
254
255 scoped_ptr<DebugBorderDrawQuad> debugborder_in =
256 DebugBorderDrawQuad::Create();
257 debugborder_in->SetAll(shared_state1_in.get(),
258 arbitrary_rect3,
259 arbitrary_rect1,
260 arbitrary_rect2,
261 arbitrary_bool1,
262 arbitrary_color,
263 arbitrary_int);
264 scoped_ptr<DrawQuad> debugborder_cmp = debugborder_in->Copy(
265 debugborder_in->shared_quad_state);
266
267 scoped_ptr<IOSurfaceDrawQuad> iosurface_in =
268 IOSurfaceDrawQuad::Create();
269 iosurface_in->SetAll(shared_state1_in.get(),
270 arbitrary_rect2,
271 arbitrary_rect3,
272 arbitrary_rect1,
273 arbitrary_bool1,
274 arbitrary_size1,
[email protected]b7cfc632013-04-10 04:44:49275 arbitrary_resourceid3,
[email protected]4934d362012-11-22 22:04:53276 arbitrary_orientation);
277 scoped_ptr<DrawQuad> iosurface_cmp = iosurface_in->Copy(
278 iosurface_in->shared_quad_state);
279
280 scoped_ptr<RenderPassDrawQuad> renderpass_in =
281 RenderPassDrawQuad::Create();
282 renderpass_in->SetAll(shared_state1_in.get(),
283 arbitrary_rect1,
284 arbitrary_rect2,
285 arbitrary_rect3,
286 arbitrary_bool1,
287 arbitrary_id,
288 arbitrary_bool2,
[email protected]b7cfc632013-04-10 04:44:49289 arbitrary_resourceid2,
[email protected]4934d362012-11-22 22:04:53290 arbitrary_rect1,
[email protected]20062042012-12-21 22:16:36291 arbitrary_rectf1,
292 arbitrary_filters1,
[email protected]10a30b12013-05-02 16:42:11293 arbitrary_filter, // TODO(piman): not serialized.
[email protected]20062042012-12-21 22:16:36294 arbitrary_filters2);
[email protected]4934d362012-11-22 22:04:53295 scoped_ptr<RenderPassDrawQuad> renderpass_cmp = renderpass_in->Copy(
296 renderpass_in->shared_quad_state, renderpass_in->render_pass_id);
297
298 scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create();
299 shared_state2_in->SetAll(arbitrary_matrix,
[email protected]f902bf92013-03-04 18:33:27300 arbitrary_size2,
[email protected]4934d362012-11-22 22:04:53301 arbitrary_rect2,
302 arbitrary_rect3,
[email protected]4934d362012-11-22 22:04:53303 arbitrary_bool1,
304 arbitrary_float2);
305 scoped_ptr<SharedQuadState> shared_state2_cmp = shared_state2_in->Copy();
306
307 scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create();
308 shared_state3_in->SetAll(arbitrary_matrix,
[email protected]f902bf92013-03-04 18:33:27309 arbitrary_size3,
[email protected]4934d362012-11-22 22:04:53310 arbitrary_rect3,
311 arbitrary_rect1,
[email protected]4934d362012-11-22 22:04:53312 arbitrary_bool1,
313 arbitrary_float3);
314 scoped_ptr<SharedQuadState> shared_state3_cmp = shared_state3_in->Copy();
315
316 scoped_ptr<SolidColorDrawQuad> solidcolor_in =
317 SolidColorDrawQuad::Create();
318 solidcolor_in->SetAll(shared_state1_in.get(),
319 arbitrary_rect3,
320 arbitrary_rect1,
321 arbitrary_rect2,
322 arbitrary_bool1,
[email protected]10a30b12013-05-02 16:42:11323 arbitrary_color,
324 arbitrary_bool2);
[email protected]4934d362012-11-22 22:04:53325 scoped_ptr<DrawQuad> solidcolor_cmp = solidcolor_in->Copy(
326 solidcolor_in->shared_quad_state);
327
328 scoped_ptr<StreamVideoDrawQuad> streamvideo_in =
329 StreamVideoDrawQuad::Create();
330 streamvideo_in->SetAll(shared_state1_in.get(),
331 arbitrary_rect2,
332 arbitrary_rect3,
333 arbitrary_rect1,
334 arbitrary_bool1,
[email protected]b7cfc632013-04-10 04:44:49335 arbitrary_resourceid2,
[email protected]4934d362012-11-22 22:04:53336 arbitrary_matrix);
337 scoped_ptr<DrawQuad> streamvideo_cmp = streamvideo_in->Copy(
338 streamvideo_in->shared_quad_state);
339
[email protected]61df9d82013-01-30 02:32:42340 scoped_ptr<TextureDrawQuad> texture_in = TextureDrawQuad::Create();
341 texture_in->SetAll(shared_state1_in.get(),
342 arbitrary_rect2,
343 arbitrary_rect3,
344 arbitrary_rect1,
345 arbitrary_bool1,
[email protected]b7cfc632013-04-10 04:44:49346 arbitrary_resourceid1,
[email protected]61df9d82013-01-30 02:32:42347 arbitrary_bool2,
348 arbitrary_pointf1,
349 arbitrary_pointf2,
[email protected]d18b4d62013-07-12 05:33:49350 arbitrary_color,
[email protected]61df9d82013-01-30 02:32:42351 arbitrary_float_array,
352 arbitrary_bool3);
353 scoped_ptr<DrawQuad> texture_cmp = texture_in->Copy(
354 texture_in->shared_quad_state);
355
356 scoped_ptr<TileDrawQuad> tile_in = TileDrawQuad::Create();
357 tile_in->SetAll(shared_state1_in.get(),
358 arbitrary_rect2,
359 arbitrary_rect3,
360 arbitrary_rect1,
361 arbitrary_bool1,
[email protected]b7cfc632013-04-10 04:44:49362 arbitrary_resourceid3,
[email protected]61df9d82013-01-30 02:32:42363 arbitrary_rectf1,
364 arbitrary_size1,
[email protected]f902bf92013-03-04 18:33:27365 arbitrary_bool2);
[email protected]61df9d82013-01-30 02:32:42366 scoped_ptr<DrawQuad> tile_cmp = tile_in->Copy(
367 tile_in->shared_quad_state);
368
[email protected]4934d362012-11-22 22:04:53369 scoped_ptr<YUVVideoDrawQuad> yuvvideo_in =
370 YUVVideoDrawQuad::Create();
371 yuvvideo_in->SetAll(shared_state1_in.get(),
372 arbitrary_rect1,
373 arbitrary_rect2,
374 arbitrary_rect3,
375 arbitrary_bool1,
376 arbitrary_sizef1,
[email protected]b7cfc632013-04-10 04:44:49377 arbitrary_resourceid1,
378 arbitrary_resourceid2,
[email protected]0402b2382013-06-07 21:50:54379 arbitrary_resourceid3,
380 arbitrary_resourceid4);
[email protected]4934d362012-11-22 22:04:53381 scoped_ptr<DrawQuad> yuvvideo_cmp = yuvvideo_in->Copy(
382 yuvvideo_in->shared_quad_state);
383
384 scoped_ptr<RenderPass> pass_in = RenderPass::Create();
385 pass_in->SetAll(arbitrary_id,
386 arbitrary_rect1,
387 arbitrary_rectf1,
388 arbitrary_matrix,
389 arbitrary_bool1,
[email protected]20062042012-12-21 22:16:36390 arbitrary_bool2);
[email protected]4934d362012-11-22 22:04:53391
[email protected]ead39c52013-01-09 07:22:45392 pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass());
393 pass_in->quad_list.push_back(checkerboard_in.PassAs<DrawQuad>());
394 pass_in->quad_list.push_back(debugborder_in.PassAs<DrawQuad>());
395 pass_in->quad_list.push_back(iosurface_in.PassAs<DrawQuad>());
396 pass_in->quad_list.push_back(renderpass_in.PassAs<DrawQuad>());
397 pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass());
398 pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass());
399 pass_in->quad_list.push_back(solidcolor_in.PassAs<DrawQuad>());
400 pass_in->quad_list.push_back(streamvideo_in.PassAs<DrawQuad>());
[email protected]61df9d82013-01-30 02:32:42401 pass_in->quad_list.push_back(texture_in.PassAs<DrawQuad>());
402 pass_in->quad_list.push_back(tile_in.PassAs<DrawQuad>());
[email protected]ead39c52013-01-09 07:22:45403 pass_in->quad_list.push_back(yuvvideo_in.PassAs<DrawQuad>());
[email protected]4934d362012-11-22 22:04:53404
405 scoped_ptr<RenderPass> pass_cmp = RenderPass::Create();
406 pass_cmp->SetAll(arbitrary_id,
407 arbitrary_rect1,
408 arbitrary_rectf1,
409 arbitrary_matrix,
410 arbitrary_bool1,
[email protected]20062042012-12-21 22:16:36411 arbitrary_bool2);
[email protected]4934d362012-11-22 22:04:53412
[email protected]ead39c52013-01-09 07:22:45413 pass_cmp->shared_quad_state_list.push_back(shared_state1_cmp.Pass());
414 pass_cmp->quad_list.push_back(checkerboard_cmp.PassAs<DrawQuad>());
415 pass_cmp->quad_list.push_back(debugborder_cmp.PassAs<DrawQuad>());
416 pass_cmp->quad_list.push_back(iosurface_cmp.PassAs<DrawQuad>());
417 pass_cmp->quad_list.push_back(renderpass_cmp.PassAs<DrawQuad>());
418 pass_cmp->shared_quad_state_list.push_back(shared_state2_cmp.Pass());
419 pass_cmp->shared_quad_state_list.push_back(shared_state3_cmp.Pass());
420 pass_cmp->quad_list.push_back(solidcolor_cmp.PassAs<DrawQuad>());
421 pass_cmp->quad_list.push_back(streamvideo_cmp.PassAs<DrawQuad>());
[email protected]61df9d82013-01-30 02:32:42422 pass_cmp->quad_list.push_back(texture_cmp.PassAs<DrawQuad>());
423 pass_cmp->quad_list.push_back(tile_cmp.PassAs<DrawQuad>());
[email protected]ead39c52013-01-09 07:22:45424 pass_cmp->quad_list.push_back(yuvvideo_cmp.PassAs<DrawQuad>());
[email protected]4934d362012-11-22 22:04:53425
426 // Make sure the in and cmp RenderPasses match.
427 Compare(pass_cmp.get(), pass_in.get());
428 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size());
[email protected]61df9d82013-01-30 02:32:42429 ASSERT_EQ(9u, pass_in->quad_list.size());
[email protected]4934d362012-11-22 22:04:53430 for (size_t i = 0; i < 3; ++i) {
431 Compare(pass_cmp->shared_quad_state_list[i],
432 pass_in->shared_quad_state_list[i]);
433 }
[email protected]61df9d82013-01-30 02:32:42434 for (size_t i = 0; i < pass_in->quad_list.size(); ++i)
[email protected]4934d362012-11-22 22:04:53435 Compare(pass_cmp->quad_list[i], pass_in->quad_list[i]);
[email protected]61df9d82013-01-30 02:32:42436 for (size_t i = 1; i < pass_in->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53437 bool same_shared_quad_state_cmp =
438 pass_cmp->quad_list[i]->shared_quad_state ==
439 pass_cmp->quad_list[i - 1]->shared_quad_state;
440 bool same_shared_quad_state_in =
441 pass_in->quad_list[i]->shared_quad_state ==
442 pass_in->quad_list[i - 1]->shared_quad_state;
443 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in);
444 }
445
[email protected]bf189f62012-12-18 03:42:11446 DelegatedFrameData frame_in;
[email protected]ead39c52013-01-09 07:22:45447 frame_in.render_pass_list.push_back(pass_in.Pass());
[email protected]4934d362012-11-22 22:04:53448
[email protected]bf189f62012-12-18 03:42:11449 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44450
[email protected]bf189f62012-12-18 03:42:11451 DelegatedFrameData frame_out;
[email protected]4934d362012-11-22 22:04:53452 PickleIterator iter(msg);
[email protected]bf189f62012-12-18 03:42:11453 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg,
454 &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44455
[email protected]4934d362012-11-22 22:04:53456 // Make sure the out and cmp RenderPasses match.
[email protected]ead39c52013-01-09 07:22:45457 scoped_ptr<RenderPass> pass_out = frame_out.render_pass_list.take(
458 frame_out.render_pass_list.begin());
[email protected]4934d362012-11-22 22:04:53459 Compare(pass_cmp.get(), pass_out.get());
460 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size());
[email protected]61df9d82013-01-30 02:32:42461 ASSERT_EQ(9u, pass_out->quad_list.size());
[email protected]4934d362012-11-22 22:04:53462 for (size_t i = 0; i < 3; ++i) {
463 Compare(pass_cmp->shared_quad_state_list[i],
464 pass_out->shared_quad_state_list[i]);
465 }
[email protected]61df9d82013-01-30 02:32:42466 for (size_t i = 0; i < pass_out->quad_list.size(); ++i)
[email protected]4934d362012-11-22 22:04:53467 Compare(pass_cmp->quad_list[i], pass_out->quad_list[i]);
[email protected]61df9d82013-01-30 02:32:42468 for (size_t i = 1; i < pass_out->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53469 bool same_shared_quad_state_cmp =
470 pass_cmp->quad_list[i]->shared_quad_state ==
471 pass_cmp->quad_list[i - 1]->shared_quad_state;
472 bool same_shared_quad_state_out =
473 pass_out->quad_list[i]->shared_quad_state ==
474 pass_out->quad_list[i - 1]->shared_quad_state;
475 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_out);
476 }
477}
[email protected]bca159072012-12-04 00:52:44478
479TEST_F(CCMessagesTest, Resources) {
480 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
481 gfx::Size arbitrary_size(757, 1281);
[email protected]09831f7f2013-02-27 03:32:15482 unsigned int arbitrary_uint1 = 71234838;
483 unsigned int arbitrary_uint2 = 53589793;
[email protected]bca159072012-12-04 00:52:44484
485 GLbyte arbitrary_mailbox1[64] = {
486 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
487 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
488 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
489 1, 2, 3, 4
490 };
491
492 GLbyte arbitrary_mailbox2[64] = {
493 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
494 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
495 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
496 0, 9, 8, 7
497 };
498
499 TransferableResource arbitrary_resource1;
500 arbitrary_resource1.id = 2178312;
[email protected]09831f7f2013-02-27 03:32:15501 arbitrary_resource1.sync_point = arbitrary_uint1;
[email protected]bca159072012-12-04 00:52:44502 arbitrary_resource1.format = 7;
[email protected]80189292013-02-28 01:59:36503 arbitrary_resource1.filter = 53;
[email protected]bca159072012-12-04 00:52:44504 arbitrary_resource1.size = gfx::Size(37189, 123123);
[email protected]1aca0092013-03-04 22:46:03505 arbitrary_resource1.mailbox.SetName(arbitrary_mailbox1);
[email protected]bca159072012-12-04 00:52:44506
507 TransferableResource arbitrary_resource2;
508 arbitrary_resource2.id = 789132;
[email protected]09831f7f2013-02-27 03:32:15509 arbitrary_resource1.sync_point = arbitrary_uint2;
[email protected]bca159072012-12-04 00:52:44510 arbitrary_resource2.format = 30;
[email protected]80189292013-02-28 01:59:36511 arbitrary_resource1.filter = 47;
[email protected]bca159072012-12-04 00:52:44512 arbitrary_resource2.size = gfx::Size(89123, 23789);
[email protected]1aca0092013-03-04 22:46:03513 arbitrary_resource2.mailbox.SetName(arbitrary_mailbox2);
[email protected]bca159072012-12-04 00:52:44514
[email protected]bf189f62012-12-18 03:42:11515 DelegatedFrameData frame_in;
[email protected]09831f7f2013-02-27 03:32:15516 frame_in.resource_list.push_back(arbitrary_resource1);
517 frame_in.resource_list.push_back(arbitrary_resource2);
[email protected]bca159072012-12-04 00:52:44518
[email protected]bf189f62012-12-18 03:42:11519 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44520
[email protected]bf189f62012-12-18 03:42:11521 DelegatedFrameData frame_out;
[email protected]bca159072012-12-04 00:52:44522 PickleIterator iter(msg);
[email protected]bf189f62012-12-18 03:42:11523 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg,
524 &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44525
[email protected]09831f7f2013-02-27 03:32:15526 ASSERT_EQ(2u, frame_out.resource_list.size());
527 Compare(arbitrary_resource1, frame_out.resource_list[0]);
528 Compare(arbitrary_resource2, frame_out.resource_list[1]);
[email protected]bca159072012-12-04 00:52:44529}
530
531} // namespace
532} // namespace content