blob: f7734af29d4d9b06f7dfd5d79fe96df7bfff7dc6 [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]bca159072012-12-04 00:52:449#include "cc/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;
17using cc::IOSurfaceDrawQuad;
18using cc::RenderPass;
19using cc::RenderPassDrawQuad;
20using cc::ResourceProvider;
21using cc::SharedQuadState;
22using cc::SolidColorDrawQuad;
23using cc::TextureDrawQuad;
24using cc::TileDrawQuad;
[email protected]bca159072012-12-04 00:52:4425using cc::TransferableResource;
[email protected]4934d362012-11-22 22:04:5326using cc::StreamVideoDrawQuad;
27using cc::VideoLayerImpl;
28using cc::YUVVideoDrawQuad;
[email protected]c8686a02012-11-27 08:29:0029using gfx::Transform;
[email protected]4934d362012-11-22 22:04:5330using WebKit::WebFilterOperation;
31using WebKit::WebFilterOperations;
[email protected]4934d362012-11-22 22:04:5332
[email protected]bca159072012-12-04 00:52:4433namespace content {
34namespace {
35
[email protected]4934d362012-11-22 22:04:5336class CCMessagesTest : public testing::Test {
37 protected:
38 void Compare(const RenderPass* a, const RenderPass* b) {
39 EXPECT_EQ(a->id, b->id);
40 EXPECT_EQ(a->output_rect.ToString(), b->output_rect.ToString());
41 EXPECT_EQ(a->damage_rect.ToString(), b->damage_rect.ToString());
42 EXPECT_EQ(a->transform_to_root_target, b->transform_to_root_target);
43 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background);
44 EXPECT_EQ(a->has_occlusion_from_outside_target_surface,
45 b->has_occlusion_from_outside_target_surface);
[email protected]4934d362012-11-22 22:04:5346 }
47
48 void Compare(const SharedQuadState* a, const SharedQuadState* b) {
49 EXPECT_EQ(a->content_to_target_transform, b->content_to_target_transform);
50 EXPECT_EQ(a->visible_content_rect, b->visible_content_rect);
[email protected]4934d362012-11-22 22:04:5351 EXPECT_EQ(a->clip_rect, b->clip_rect);
52 EXPECT_EQ(a->is_clipped, b->is_clipped);
53 EXPECT_EQ(a->opacity, b->opacity);
54 }
55
56 void Compare(const DrawQuad* a, const DrawQuad* b) {
57 ASSERT_NE(DrawQuad::INVALID, a->material);
58 ASSERT_EQ(a->material, b->material);
59 EXPECT_EQ(a->rect.ToString(), b->rect.ToString());
60 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString());
61 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString());
62 EXPECT_EQ(a->needs_blending, b->needs_blending);
63
64 Compare(a->shared_quad_state, b->shared_quad_state);
65
66 switch (a->material) {
67 case DrawQuad::CHECKERBOARD:
68 Compare(CheckerboardDrawQuad::MaterialCast(a),
69 CheckerboardDrawQuad::MaterialCast(b));
70 break;
71 case DrawQuad::DEBUG_BORDER:
72 Compare(DebugBorderDrawQuad::MaterialCast(a),
73 DebugBorderDrawQuad::MaterialCast(b));
74 break;
75 case DrawQuad::IO_SURFACE_CONTENT:
76 Compare(IOSurfaceDrawQuad::MaterialCast(a),
77 IOSurfaceDrawQuad::MaterialCast(b));
78 break;
79 case DrawQuad::RENDER_PASS:
80 Compare(RenderPassDrawQuad::MaterialCast(a),
81 RenderPassDrawQuad::MaterialCast(b));
82 break;
83 case DrawQuad::TEXTURE_CONTENT:
84 Compare(TextureDrawQuad::MaterialCast(a),
85 TextureDrawQuad::MaterialCast(b));
86 break;
87 case DrawQuad::TILED_CONTENT:
88 Compare(TileDrawQuad::MaterialCast(a),
89 TileDrawQuad::MaterialCast(b));
90 break;
91 case DrawQuad::SOLID_COLOR:
92 Compare(SolidColorDrawQuad::MaterialCast(a),
93 SolidColorDrawQuad::MaterialCast(b));
94 break;
95 case DrawQuad::STREAM_VIDEO_CONTENT:
96 Compare(StreamVideoDrawQuad::MaterialCast(a),
97 StreamVideoDrawQuad::MaterialCast(b));
98 break;
99 case DrawQuad::YUV_VIDEO_CONTENT:
100 Compare(YUVVideoDrawQuad::MaterialCast(a),
101 YUVVideoDrawQuad::MaterialCast(b));
102 break;
103 case DrawQuad::INVALID:
104 break;
105 }
106 }
107
108 void Compare(const CheckerboardDrawQuad* a, const CheckerboardDrawQuad* b) {
109 EXPECT_EQ(a->color, b->color);
110 }
111
112 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) {
113 EXPECT_EQ(a->color, b->color);
114 EXPECT_EQ(a->width, b->width);
115 }
116
117 void Compare(const IOSurfaceDrawQuad* a, const IOSurfaceDrawQuad* b) {
118 EXPECT_EQ(a->io_surface_size.ToString(), b->io_surface_size.ToString());
119 EXPECT_EQ(a->io_surface_texture_id, b->io_surface_texture_id);
120 EXPECT_EQ(a->orientation, b->orientation);
121 }
122
123 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) {
124 EXPECT_EQ(a->is_replica, b->is_replica);
125 EXPECT_EQ(a->mask_resource_id, b->mask_resource_id);
126 EXPECT_EQ(a->contents_changed_since_last_frame,
127 b->contents_changed_since_last_frame);
[email protected]458af1e2012-12-13 05:12:18128 EXPECT_EQ(a->mask_uv_rect.ToString(), b->mask_uv_rect.ToString());
[email protected]20062042012-12-21 22:16:36129 EXPECT_EQ(a->filters, b->filters);
130 EXPECT_EQ(a->filter, b->filter);
131 EXPECT_EQ(a->background_filters, b->background_filters);
[email protected]4934d362012-11-22 22:04:53132 }
133
134 void Compare(const SolidColorDrawQuad* a, const SolidColorDrawQuad* b) {
135 EXPECT_EQ(a->color, b->color);
136 }
137
138 void Compare(const StreamVideoDrawQuad* a, const StreamVideoDrawQuad* b) {
139 EXPECT_EQ(a->texture_id, b->texture_id);
140 EXPECT_EQ(a->matrix, b->matrix);
141 }
142
143 void Compare(const TextureDrawQuad* a, const TextureDrawQuad* b) {
144 EXPECT_EQ(a->resource_id, b->resource_id);
145 EXPECT_EQ(a->premultiplied_alpha, b->premultiplied_alpha);
[email protected]1fd555b2013-01-18 00:13:21146 EXPECT_EQ(a->uv_top_left, b->uv_top_left);
147 EXPECT_EQ(a->uv_bottom_right, b->uv_bottom_right);
[email protected]61df9d82013-01-30 02:32:42148 EXPECT_EQ(a->vertex_opacity[0], b->vertex_opacity[0]);
149 EXPECT_EQ(a->vertex_opacity[1], b->vertex_opacity[1]);
150 EXPECT_EQ(a->vertex_opacity[2], b->vertex_opacity[2]);
151 EXPECT_EQ(a->vertex_opacity[3], b->vertex_opacity[3]);
[email protected]4934d362012-11-22 22:04:53152 EXPECT_EQ(a->flipped, b->flipped);
153 }
154
155 void Compare(const TileDrawQuad* a, const TileDrawQuad* b) {
156 EXPECT_EQ(a->resource_id, b->resource_id);
157 EXPECT_EQ(a->tex_coord_rect, b->tex_coord_rect);
158 EXPECT_EQ(a->texture_size, b->texture_size);
159 EXPECT_EQ(a->swizzle_contents, b->swizzle_contents);
160 EXPECT_EQ(a->left_edge_aa, b->left_edge_aa);
161 EXPECT_EQ(a->top_edge_aa, b->top_edge_aa);
162 EXPECT_EQ(a->right_edge_aa, b->right_edge_aa);
163 EXPECT_EQ(a->bottom_edge_aa, b->bottom_edge_aa);
164 }
165
166 void Compare(const YUVVideoDrawQuad* a, const YUVVideoDrawQuad* b) {
167 EXPECT_EQ(a->tex_scale, b->tex_scale);
168 EXPECT_EQ(a->y_plane.resourceId, b->y_plane.resourceId);
169 EXPECT_EQ(a->y_plane.size.ToString(), b->y_plane.size.ToString());
170 EXPECT_EQ(a->y_plane.format, b->y_plane.format);
171 EXPECT_EQ(a->u_plane.resourceId, b->u_plane.resourceId);
172 EXPECT_EQ(a->u_plane.size.ToString(), b->u_plane.size.ToString());
173 EXPECT_EQ(a->u_plane.format, b->u_plane.format);
174 EXPECT_EQ(a->v_plane.resourceId, b->v_plane.resourceId);
175 EXPECT_EQ(a->v_plane.size.ToString(), b->v_plane.size.ToString());
176 EXPECT_EQ(a->v_plane.format, b->v_plane.format);
177 }
[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;
214 bool arbitrary_bool4 = true;
215 bool arbitrary_bool5 = false;
216 bool arbitrary_bool6 = true;
[email protected]4934d362012-11-22 22:04:53217 int arbitrary_int = 5;
218 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58);
219 IOSurfaceDrawQuad::Orientation arbitrary_orientation =
220 IOSurfaceDrawQuad::UNFLIPPED;
221 RenderPass::Id arbitrary_id(10, 14);
222 ResourceProvider::ResourceId arbitrary_resourceid = 55;
223
224 VideoLayerImpl::FramePlane arbitrary_plane1;
225 arbitrary_plane1.resourceId = arbitrary_resourceid;
226 arbitrary_plane1.size = arbitrary_size1;
227 arbitrary_plane1.format = arbitrary_int;
228
229 VideoLayerImpl::FramePlane arbitrary_plane2;
230 arbitrary_plane2.resourceId = arbitrary_resourceid;
231 arbitrary_plane2.size = arbitrary_size2;
232 arbitrary_plane2.format = arbitrary_int;
233
234 VideoLayerImpl::FramePlane arbitrary_plane3;
235 arbitrary_plane3.resourceId = arbitrary_resourceid;
236 arbitrary_plane3.size = arbitrary_size3;
237 arbitrary_plane3.format = arbitrary_int;
238
239 WebFilterOperations arbitrary_filters1;
240 arbitrary_filters1.append(WebFilterOperation::createGrayscaleFilter(
241 arbitrary_float1));
242
243 WebFilterOperations arbitrary_filters2;
244 arbitrary_filters2.append(WebFilterOperation::createBrightnessFilter(
245 arbitrary_float2));
246
[email protected]1940c4e2012-12-04 05:08:15247 // TODO(danakj): filter is not serialized.
248 skia::RefPtr<SkImageFilter> arbitrary_filter;
249
[email protected]4934d362012-11-22 22:04:53250 scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create();
251 shared_state1_in->SetAll(arbitrary_matrix,
252 arbitrary_rect1,
253 arbitrary_rect2,
[email protected]4934d362012-11-22 22:04:53254 arbitrary_bool1,
255 arbitrary_float1);
256 scoped_ptr<SharedQuadState> shared_state1_cmp = shared_state1_in->Copy();
257
258 scoped_ptr<CheckerboardDrawQuad> checkerboard_in =
259 CheckerboardDrawQuad::Create();
260 checkerboard_in->SetAll(shared_state1_in.get(),
261 arbitrary_rect1,
262 arbitrary_rect2,
263 arbitrary_rect3,
264 arbitrary_bool1,
265 arbitrary_color);
266 scoped_ptr<DrawQuad> checkerboard_cmp = checkerboard_in->Copy(
267 checkerboard_in->shared_quad_state);
268
269 scoped_ptr<DebugBorderDrawQuad> debugborder_in =
270 DebugBorderDrawQuad::Create();
271 debugborder_in->SetAll(shared_state1_in.get(),
272 arbitrary_rect3,
273 arbitrary_rect1,
274 arbitrary_rect2,
275 arbitrary_bool1,
276 arbitrary_color,
277 arbitrary_int);
278 scoped_ptr<DrawQuad> debugborder_cmp = debugborder_in->Copy(
279 debugborder_in->shared_quad_state);
280
281 scoped_ptr<IOSurfaceDrawQuad> iosurface_in =
282 IOSurfaceDrawQuad::Create();
283 iosurface_in->SetAll(shared_state1_in.get(),
284 arbitrary_rect2,
285 arbitrary_rect3,
286 arbitrary_rect1,
287 arbitrary_bool1,
288 arbitrary_size1,
289 arbitrary_int,
290 arbitrary_orientation);
291 scoped_ptr<DrawQuad> iosurface_cmp = iosurface_in->Copy(
292 iosurface_in->shared_quad_state);
293
294 scoped_ptr<RenderPassDrawQuad> renderpass_in =
295 RenderPassDrawQuad::Create();
296 renderpass_in->SetAll(shared_state1_in.get(),
297 arbitrary_rect1,
298 arbitrary_rect2,
299 arbitrary_rect3,
300 arbitrary_bool1,
301 arbitrary_id,
302 arbitrary_bool2,
303 arbitrary_resourceid,
304 arbitrary_rect1,
[email protected]20062042012-12-21 22:16:36305 arbitrary_rectf1,
306 arbitrary_filters1,
307 arbitrary_filter, // TODO(piman): not serialized.
308 arbitrary_filters2);
[email protected]4934d362012-11-22 22:04:53309 scoped_ptr<RenderPassDrawQuad> renderpass_cmp = renderpass_in->Copy(
310 renderpass_in->shared_quad_state, renderpass_in->render_pass_id);
311
312 scoped_ptr<SharedQuadState> shared_state2_in = SharedQuadState::Create();
313 shared_state2_in->SetAll(arbitrary_matrix,
314 arbitrary_rect2,
315 arbitrary_rect3,
[email protected]4934d362012-11-22 22:04:53316 arbitrary_bool1,
317 arbitrary_float2);
318 scoped_ptr<SharedQuadState> shared_state2_cmp = shared_state2_in->Copy();
319
320 scoped_ptr<SharedQuadState> shared_state3_in = SharedQuadState::Create();
321 shared_state3_in->SetAll(arbitrary_matrix,
322 arbitrary_rect3,
323 arbitrary_rect1,
[email protected]4934d362012-11-22 22:04:53324 arbitrary_bool1,
325 arbitrary_float3);
326 scoped_ptr<SharedQuadState> shared_state3_cmp = shared_state3_in->Copy();
327
328 scoped_ptr<SolidColorDrawQuad> solidcolor_in =
329 SolidColorDrawQuad::Create();
330 solidcolor_in->SetAll(shared_state1_in.get(),
331 arbitrary_rect3,
332 arbitrary_rect1,
333 arbitrary_rect2,
334 arbitrary_bool1,
335 arbitrary_color);
336 scoped_ptr<DrawQuad> solidcolor_cmp = solidcolor_in->Copy(
337 solidcolor_in->shared_quad_state);
338
339 scoped_ptr<StreamVideoDrawQuad> streamvideo_in =
340 StreamVideoDrawQuad::Create();
341 streamvideo_in->SetAll(shared_state1_in.get(),
342 arbitrary_rect2,
343 arbitrary_rect3,
344 arbitrary_rect1,
345 arbitrary_bool1,
346 arbitrary_int,
347 arbitrary_matrix);
348 scoped_ptr<DrawQuad> streamvideo_cmp = streamvideo_in->Copy(
349 streamvideo_in->shared_quad_state);
350
[email protected]61df9d82013-01-30 02:32:42351 scoped_ptr<TextureDrawQuad> texture_in = TextureDrawQuad::Create();
352 texture_in->SetAll(shared_state1_in.get(),
353 arbitrary_rect2,
354 arbitrary_rect3,
355 arbitrary_rect1,
356 arbitrary_bool1,
357 arbitrary_resourceid,
358 arbitrary_bool2,
359 arbitrary_pointf1,
360 arbitrary_pointf2,
361 arbitrary_float_array,
362 arbitrary_bool3);
363 scoped_ptr<DrawQuad> texture_cmp = texture_in->Copy(
364 texture_in->shared_quad_state);
365
366 scoped_ptr<TileDrawQuad> tile_in = TileDrawQuad::Create();
367 tile_in->SetAll(shared_state1_in.get(),
368 arbitrary_rect2,
369 arbitrary_rect3,
370 arbitrary_rect1,
371 arbitrary_bool1,
372 arbitrary_resourceid,
373 arbitrary_rectf1,
374 arbitrary_size1,
375 arbitrary_bool2,
376 arbitrary_bool3,
377 arbitrary_bool4,
378 arbitrary_bool5,
379 arbitrary_bool6);
380 scoped_ptr<DrawQuad> tile_cmp = tile_in->Copy(
381 tile_in->shared_quad_state);
382
[email protected]4934d362012-11-22 22:04:53383 scoped_ptr<YUVVideoDrawQuad> yuvvideo_in =
384 YUVVideoDrawQuad::Create();
385 yuvvideo_in->SetAll(shared_state1_in.get(),
386 arbitrary_rect1,
387 arbitrary_rect2,
388 arbitrary_rect3,
389 arbitrary_bool1,
390 arbitrary_sizef1,
391 arbitrary_plane1,
392 arbitrary_plane2,
393 arbitrary_plane3);
394 scoped_ptr<DrawQuad> yuvvideo_cmp = yuvvideo_in->Copy(
395 yuvvideo_in->shared_quad_state);
396
397 scoped_ptr<RenderPass> pass_in = RenderPass::Create();
398 pass_in->SetAll(arbitrary_id,
399 arbitrary_rect1,
400 arbitrary_rectf1,
401 arbitrary_matrix,
402 arbitrary_bool1,
[email protected]20062042012-12-21 22:16:36403 arbitrary_bool2);
[email protected]4934d362012-11-22 22:04:53404
[email protected]ead39c52013-01-09 07:22:45405 pass_in->shared_quad_state_list.push_back(shared_state1_in.Pass());
406 pass_in->quad_list.push_back(checkerboard_in.PassAs<DrawQuad>());
407 pass_in->quad_list.push_back(debugborder_in.PassAs<DrawQuad>());
408 pass_in->quad_list.push_back(iosurface_in.PassAs<DrawQuad>());
409 pass_in->quad_list.push_back(renderpass_in.PassAs<DrawQuad>());
410 pass_in->shared_quad_state_list.push_back(shared_state2_in.Pass());
411 pass_in->shared_quad_state_list.push_back(shared_state3_in.Pass());
412 pass_in->quad_list.push_back(solidcolor_in.PassAs<DrawQuad>());
413 pass_in->quad_list.push_back(streamvideo_in.PassAs<DrawQuad>());
[email protected]61df9d82013-01-30 02:32:42414 pass_in->quad_list.push_back(texture_in.PassAs<DrawQuad>());
415 pass_in->quad_list.push_back(tile_in.PassAs<DrawQuad>());
[email protected]ead39c52013-01-09 07:22:45416 pass_in->quad_list.push_back(yuvvideo_in.PassAs<DrawQuad>());
[email protected]4934d362012-11-22 22:04:53417
418 scoped_ptr<RenderPass> pass_cmp = RenderPass::Create();
419 pass_cmp->SetAll(arbitrary_id,
420 arbitrary_rect1,
421 arbitrary_rectf1,
422 arbitrary_matrix,
423 arbitrary_bool1,
[email protected]20062042012-12-21 22:16:36424 arbitrary_bool2);
[email protected]4934d362012-11-22 22:04:53425
[email protected]ead39c52013-01-09 07:22:45426 pass_cmp->shared_quad_state_list.push_back(shared_state1_cmp.Pass());
427 pass_cmp->quad_list.push_back(checkerboard_cmp.PassAs<DrawQuad>());
428 pass_cmp->quad_list.push_back(debugborder_cmp.PassAs<DrawQuad>());
429 pass_cmp->quad_list.push_back(iosurface_cmp.PassAs<DrawQuad>());
430 pass_cmp->quad_list.push_back(renderpass_cmp.PassAs<DrawQuad>());
431 pass_cmp->shared_quad_state_list.push_back(shared_state2_cmp.Pass());
432 pass_cmp->shared_quad_state_list.push_back(shared_state3_cmp.Pass());
433 pass_cmp->quad_list.push_back(solidcolor_cmp.PassAs<DrawQuad>());
434 pass_cmp->quad_list.push_back(streamvideo_cmp.PassAs<DrawQuad>());
[email protected]61df9d82013-01-30 02:32:42435 pass_cmp->quad_list.push_back(texture_cmp.PassAs<DrawQuad>());
436 pass_cmp->quad_list.push_back(tile_cmp.PassAs<DrawQuad>());
[email protected]ead39c52013-01-09 07:22:45437 pass_cmp->quad_list.push_back(yuvvideo_cmp.PassAs<DrawQuad>());
[email protected]4934d362012-11-22 22:04:53438
439 // Make sure the in and cmp RenderPasses match.
440 Compare(pass_cmp.get(), pass_in.get());
441 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size());
[email protected]61df9d82013-01-30 02:32:42442 ASSERT_EQ(9u, pass_in->quad_list.size());
[email protected]4934d362012-11-22 22:04:53443 for (size_t i = 0; i < 3; ++i) {
444 Compare(pass_cmp->shared_quad_state_list[i],
445 pass_in->shared_quad_state_list[i]);
446 }
[email protected]61df9d82013-01-30 02:32:42447 for (size_t i = 0; i < pass_in->quad_list.size(); ++i)
[email protected]4934d362012-11-22 22:04:53448 Compare(pass_cmp->quad_list[i], pass_in->quad_list[i]);
[email protected]61df9d82013-01-30 02:32:42449 for (size_t i = 1; i < pass_in->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53450 bool same_shared_quad_state_cmp =
451 pass_cmp->quad_list[i]->shared_quad_state ==
452 pass_cmp->quad_list[i - 1]->shared_quad_state;
453 bool same_shared_quad_state_in =
454 pass_in->quad_list[i]->shared_quad_state ==
455 pass_in->quad_list[i - 1]->shared_quad_state;
456 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in);
457 }
458
[email protected]bf189f62012-12-18 03:42:11459 DelegatedFrameData frame_in;
[email protected]ead39c52013-01-09 07:22:45460 frame_in.render_pass_list.push_back(pass_in.Pass());
[email protected]4934d362012-11-22 22:04:53461
[email protected]bf189f62012-12-18 03:42:11462 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44463
[email protected]bf189f62012-12-18 03:42:11464 DelegatedFrameData frame_out;
[email protected]4934d362012-11-22 22:04:53465 PickleIterator iter(msg);
[email protected]bf189f62012-12-18 03:42:11466 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg,
467 &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44468
[email protected]4934d362012-11-22 22:04:53469 // Make sure the out and cmp RenderPasses match.
[email protected]ead39c52013-01-09 07:22:45470 scoped_ptr<RenderPass> pass_out = frame_out.render_pass_list.take(
471 frame_out.render_pass_list.begin());
[email protected]4934d362012-11-22 22:04:53472 Compare(pass_cmp.get(), pass_out.get());
473 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size());
[email protected]61df9d82013-01-30 02:32:42474 ASSERT_EQ(9u, pass_out->quad_list.size());
[email protected]4934d362012-11-22 22:04:53475 for (size_t i = 0; i < 3; ++i) {
476 Compare(pass_cmp->shared_quad_state_list[i],
477 pass_out->shared_quad_state_list[i]);
478 }
[email protected]61df9d82013-01-30 02:32:42479 for (size_t i = 0; i < pass_out->quad_list.size(); ++i)
[email protected]4934d362012-11-22 22:04:53480 Compare(pass_cmp->quad_list[i], pass_out->quad_list[i]);
[email protected]61df9d82013-01-30 02:32:42481 for (size_t i = 1; i < pass_out->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53482 bool same_shared_quad_state_cmp =
483 pass_cmp->quad_list[i]->shared_quad_state ==
484 pass_cmp->quad_list[i - 1]->shared_quad_state;
485 bool same_shared_quad_state_out =
486 pass_out->quad_list[i]->shared_quad_state ==
487 pass_out->quad_list[i - 1]->shared_quad_state;
488 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_out);
489 }
490}
[email protected]bca159072012-12-04 00:52:44491
492TEST_F(CCMessagesTest, Resources) {
493 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
494 gfx::Size arbitrary_size(757, 1281);
[email protected]09831f7f2013-02-27 03:32:15495 unsigned int arbitrary_uint1 = 71234838;
496 unsigned int arbitrary_uint2 = 53589793;
[email protected]bca159072012-12-04 00:52:44497
498 GLbyte arbitrary_mailbox1[64] = {
499 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
500 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
501 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
502 1, 2, 3, 4
503 };
504
505 GLbyte arbitrary_mailbox2[64] = {
506 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
507 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
508 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0,
509 0, 9, 8, 7
510 };
511
512 TransferableResource arbitrary_resource1;
513 arbitrary_resource1.id = 2178312;
[email protected]09831f7f2013-02-27 03:32:15514 arbitrary_resource1.sync_point = arbitrary_uint1;
[email protected]bca159072012-12-04 00:52:44515 arbitrary_resource1.format = 7;
[email protected]80189292013-02-28 01:59:36516 arbitrary_resource1.filter = 53;
[email protected]bca159072012-12-04 00:52:44517 arbitrary_resource1.size = gfx::Size(37189, 123123);
518 arbitrary_resource1.mailbox.setName(arbitrary_mailbox1);
519
520 TransferableResource arbitrary_resource2;
521 arbitrary_resource2.id = 789132;
[email protected]09831f7f2013-02-27 03:32:15522 arbitrary_resource1.sync_point = arbitrary_uint2;
[email protected]bca159072012-12-04 00:52:44523 arbitrary_resource2.format = 30;
[email protected]80189292013-02-28 01:59:36524 arbitrary_resource1.filter = 47;
[email protected]bca159072012-12-04 00:52:44525 arbitrary_resource2.size = gfx::Size(89123, 23789);
526 arbitrary_resource2.mailbox.setName(arbitrary_mailbox2);
527
[email protected]bf189f62012-12-18 03:42:11528 DelegatedFrameData frame_in;
[email protected]09831f7f2013-02-27 03:32:15529 frame_in.resource_list.push_back(arbitrary_resource1);
530 frame_in.resource_list.push_back(arbitrary_resource2);
[email protected]bca159072012-12-04 00:52:44531
[email protected]bf189f62012-12-18 03:42:11532 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44533
[email protected]bf189f62012-12-18 03:42:11534 DelegatedFrameData frame_out;
[email protected]bca159072012-12-04 00:52:44535 PickleIterator iter(msg);
[email protected]bf189f62012-12-18 03:42:11536 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg,
537 &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44538
[email protected]09831f7f2013-02-27 03:32:15539 ASSERT_EQ(2u, frame_out.resource_list.size());
540 Compare(arbitrary_resource1, frame_out.resource_list[0]);
541 Compare(arbitrary_resource2, frame_out.resource_list[1]);
[email protected]bca159072012-12-04 00:52:44542}
543
544} // namespace
545} // namespace content