Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: cc/resources/picture_unittest.cc

Issue 362073002: cc: Remove all traces of SkPicture cloning. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/resources/picture_pile_unittest.cc ('k') | cc/resources/raster_worker_pool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/picture.h" 5 #include "cc/resources/picture.h"
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/test/fake_content_layer_client.h" 10 #include "cc/test/fake_content_layer_client.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 // Single full-size rect picture. 51 // Single full-size rect picture.
52 content_layer_client.add_draw_rect(layer_rect, red_paint); 52 content_layer_client.add_draw_rect(layer_rect, red_paint);
53 53
54 for (size_t i = 0; i < arraysize(kRecordingModes); ++i) { 54 for (size_t i = 0; i < arraysize(kRecordingModes); ++i) {
55 scoped_refptr<Picture> one_rect_picture = 55 scoped_refptr<Picture> one_rect_picture =
56 Picture::Create(layer_rect, 56 Picture::Create(layer_rect,
57 &content_layer_client, 57 &content_layer_client,
58 tile_grid_info, 58 tile_grid_info,
59 false, 59 false,
60 0,
61 kRecordingModes[i]); 60 kRecordingModes[i]);
62 scoped_ptr<base::Value> serialized_one_rect(one_rect_picture->AsValue()); 61 scoped_ptr<base::Value> serialized_one_rect(one_rect_picture->AsValue());
63 62
64 // Reconstruct the picture. 63 // Reconstruct the picture.
65 scoped_refptr<Picture> one_rect_picture_check = 64 scoped_refptr<Picture> one_rect_picture_check =
66 Picture::CreateFromValue(serialized_one_rect.get()); 65 Picture::CreateFromValue(serialized_one_rect.get());
67 EXPECT_TRUE(!!one_rect_picture_check.get()); 66 EXPECT_TRUE(!!one_rect_picture_check.get());
68 67
69 // Check for equivalence. 68 // Check for equivalence.
70 unsigned char one_rect_buffer[4 * 100 * 100] = {0}; 69 unsigned char one_rect_buffer[4 * 100 * 100] = {0};
71 DrawPicture(one_rect_buffer, layer_rect, one_rect_picture); 70 DrawPicture(one_rect_buffer, layer_rect, one_rect_picture);
72 unsigned char one_rect_buffer_check[4 * 100 * 100] = {0}; 71 unsigned char one_rect_buffer_check[4 * 100 * 100] = {0};
73 DrawPicture(one_rect_buffer_check, layer_rect, one_rect_picture_check); 72 DrawPicture(one_rect_buffer_check, layer_rect, one_rect_picture_check);
74 73
75 EXPECT_EQ(one_rect_picture->LayerRect(), 74 EXPECT_EQ(one_rect_picture->LayerRect(),
76 one_rect_picture_check->LayerRect()); 75 one_rect_picture_check->LayerRect());
77 EXPECT_EQ(one_rect_picture->OpaqueRect(), 76 EXPECT_EQ(one_rect_picture->OpaqueRect(),
78 one_rect_picture_check->OpaqueRect()); 77 one_rect_picture_check->OpaqueRect());
79 EXPECT_TRUE(memcmp(one_rect_buffer, one_rect_buffer_check, 4 * 100 * 100) == 78 EXPECT_EQ(0, memcmp(one_rect_buffer, one_rect_buffer_check, 4 * 100 * 100));
80 0);
81 } 79 }
82 80
83 // Two rect picture. 81 // Two rect picture.
84 content_layer_client.add_draw_rect(gfx::Rect(25, 25, 50, 50), green_paint); 82 content_layer_client.add_draw_rect(gfx::Rect(25, 25, 50, 50), green_paint);
85 83
86 for (size_t i = 0; i < arraysize(kRecordingModes); ++i) { 84 for (size_t i = 0; i < arraysize(kRecordingModes); ++i) {
87 scoped_refptr<Picture> two_rect_picture = 85 scoped_refptr<Picture> two_rect_picture =
88 Picture::Create(layer_rect, 86 Picture::Create(layer_rect,
89 &content_layer_client, 87 &content_layer_client,
90 tile_grid_info, 88 tile_grid_info,
91 false, 89 false,
92 0,
93 Picture::RECORD_NORMALLY); 90 Picture::RECORD_NORMALLY);
94 91
95 scoped_ptr<base::Value> serialized_two_rect(two_rect_picture->AsValue()); 92 scoped_ptr<base::Value> serialized_two_rect(two_rect_picture->AsValue());
96 93
97 // Reconstruct the picture. 94 // Reconstruct the picture.
98 scoped_refptr<Picture> two_rect_picture_check = 95 scoped_refptr<Picture> two_rect_picture_check =
99 Picture::CreateFromValue(serialized_two_rect.get()); 96 Picture::CreateFromValue(serialized_two_rect.get());
100 EXPECT_TRUE(!!two_rect_picture_check.get()); 97 EXPECT_TRUE(!!two_rect_picture_check.get());
101 98
102 // Check for equivalence. 99 // Check for equivalence.
103 unsigned char two_rect_buffer[4 * 100 * 100] = {0}; 100 unsigned char two_rect_buffer[4 * 100 * 100] = {0};
104 DrawPicture(two_rect_buffer, layer_rect, two_rect_picture); 101 DrawPicture(two_rect_buffer, layer_rect, two_rect_picture);
105 unsigned char two_rect_buffer_check[4 * 100 * 100] = {0}; 102 unsigned char two_rect_buffer_check[4 * 100 * 100] = {0};
106 DrawPicture(two_rect_buffer_check, layer_rect, two_rect_picture_check); 103 DrawPicture(two_rect_buffer_check, layer_rect, two_rect_picture_check);
107 104
108 EXPECT_EQ(two_rect_picture->LayerRect(), 105 EXPECT_EQ(two_rect_picture->LayerRect(),
109 two_rect_picture_check->LayerRect()); 106 two_rect_picture_check->LayerRect());
110 EXPECT_EQ(two_rect_picture->OpaqueRect(), 107 EXPECT_EQ(two_rect_picture->OpaqueRect(),
111 two_rect_picture_check->OpaqueRect()); 108 two_rect_picture_check->OpaqueRect());
112 EXPECT_TRUE(memcmp(two_rect_buffer, two_rect_buffer_check, 4 * 100 * 100) == 109 EXPECT_EQ(0, memcmp(two_rect_buffer, two_rect_buffer_check, 4 * 100 * 100));
113 0);
114 } 110 }
115 } 111 }
116 112
117 TEST(PictureTest, PixelRefIterator) { 113 TEST(PictureTest, PixelRefIterator) {
118 gfx::Rect layer_rect(2048, 2048); 114 gfx::Rect layer_rect(2048, 2048);
119 115
120 SkTileGridFactory::TileGridInfo tile_grid_info; 116 SkTileGridFactory::TileGridInfo tile_grid_info;
121 tile_grid_info.fTileInterval = SkISize::Make(512, 512); 117 tile_grid_info.fTileInterval = SkISize::Make(512, 512);
122 tile_grid_info.fMargin.setEmpty(); 118 tile_grid_info.fMargin.setEmpty();
123 tile_grid_info.fOffset.setZero(); 119 tile_grid_info.fOffset.setZero();
(...skipping 21 matching lines...) Expand all
145 discardable_bitmap[y][x], 141 discardable_bitmap[y][x],
146 gfx::Point(x * 512 + 6, y * 512 + 6), paint); 142 gfx::Point(x * 512 + 6, y * 512 + 6), paint);
147 } 143 }
148 } 144 }
149 } 145 }
150 146
151 scoped_refptr<Picture> picture = Picture::Create(layer_rect, 147 scoped_refptr<Picture> picture = Picture::Create(layer_rect,
152 &content_layer_client, 148 &content_layer_client,
153 tile_grid_info, 149 tile_grid_info,
154 true, 150 true,
155 0,
156 Picture::RECORD_NORMALLY); 151 Picture::RECORD_NORMALLY);
157 152
158 // Default iterator does not have any pixel refs 153 // Default iterator does not have any pixel refs
159 { 154 {
160 Picture::PixelRefIterator iterator; 155 Picture::PixelRefIterator iterator;
161 EXPECT_FALSE(iterator); 156 EXPECT_FALSE(iterator);
162 } 157 }
163 for (int y = 0; y < 4; ++y) { 158 for (int y = 0; y < 4; ++y) {
164 for (int x = 0; x < 4; ++x) { 159 for (int x = 0; x < 4; ++x) {
165 Picture::PixelRefIterator iterator(gfx::Rect(x * 512, y * 512, 500, 500), 160 Picture::PixelRefIterator iterator(gfx::Rect(x * 512, y * 512, 500, 500),
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 discardable_bitmap[y][x], 241 discardable_bitmap[y][x],
247 gfx::Point(1024 + x * 512 + 6, y * 512 + 6), paint); 242 gfx::Point(1024 + x * 512 + 6, y * 512 + 6), paint);
248 } 243 }
249 } 244 }
250 } 245 }
251 246
252 scoped_refptr<Picture> picture = Picture::Create(layer_rect, 247 scoped_refptr<Picture> picture = Picture::Create(layer_rect,
253 &content_layer_client, 248 &content_layer_client,
254 tile_grid_info, 249 tile_grid_info,
255 true, 250 true,
256 0,
257 Picture::RECORD_NORMALLY); 251 Picture::RECORD_NORMALLY);
258 252
259 // Default iterator does not have any pixel refs 253 // Default iterator does not have any pixel refs
260 { 254 {
261 Picture::PixelRefIterator iterator; 255 Picture::PixelRefIterator iterator;
262 EXPECT_FALSE(iterator); 256 EXPECT_FALSE(iterator);
263 } 257 }
264 for (int y = 0; y < 4; ++y) { 258 for (int y = 0; y < 4; ++y) {
265 for (int x = 0; x < 4; ++x) { 259 for (int x = 0; x < 4; ++x) {
266 Picture::PixelRefIterator iterator( 260 Picture::PixelRefIterator iterator(
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 discardable_bitmap[y][x], 364 discardable_bitmap[y][x],
371 gfx::Point(x * 512 + 6, y * 512 + 6), paint); 365 gfx::Point(x * 512 + 6, y * 512 + 6), paint);
372 } 366 }
373 } 367 }
374 } 368 }
375 369
376 scoped_refptr<Picture> picture = Picture::Create(layer_rect, 370 scoped_refptr<Picture> picture = Picture::Create(layer_rect,
377 &content_layer_client, 371 &content_layer_client,
378 tile_grid_info, 372 tile_grid_info,
379 true, 373 true,
380 0,
381 Picture::RECORD_NORMALLY); 374 Picture::RECORD_NORMALLY);
382 375
383 for (int y = 0; y < 4; ++y) { 376 for (int y = 0; y < 4; ++y) {
384 for (int x = 0; x < 4; ++x) { 377 for (int x = 0; x < 4; ++x) {
385 Picture::PixelRefIterator iterator( 378 Picture::PixelRefIterator iterator(
386 gfx::Rect(x * 512, y * 512 + 256, 1, 1), picture.get()); 379 gfx::Rect(x * 512, y * 512 + 256, 1, 1), picture.get());
387 if ((x + y) & 1) { 380 if ((x + y) & 1) {
388 EXPECT_TRUE(iterator) << x << " " << y; 381 EXPECT_TRUE(iterator) << x << " " << y;
389 EXPECT_TRUE(*iterator == discardable_bitmap[y][x].pixelRef()); 382 EXPECT_TRUE(*iterator == discardable_bitmap[y][x].pixelRef());
390 EXPECT_FALSE(++iterator) << x << " " << y; 383 EXPECT_FALSE(++iterator) << x << " " << y;
(...skipping 29 matching lines...) Expand all
420 Picture::CreateFromSkpValue(tmp.get()); 413 Picture::CreateFromSkpValue(tmp.get());
421 EXPECT_TRUE(!invalid_picture.get()); 414 EXPECT_TRUE(!invalid_picture.get());
422 415
423 // Single full-size rect picture. 416 // Single full-size rect picture.
424 content_layer_client.add_draw_rect(layer_rect, red_paint); 417 content_layer_client.add_draw_rect(layer_rect, red_paint);
425 scoped_refptr<Picture> one_rect_picture = 418 scoped_refptr<Picture> one_rect_picture =
426 Picture::Create(layer_rect, 419 Picture::Create(layer_rect,
427 &content_layer_client, 420 &content_layer_client,
428 tile_grid_info, 421 tile_grid_info,
429 false, 422 false,
430 0,
431 Picture::RECORD_NORMALLY); 423 Picture::RECORD_NORMALLY);
432 scoped_ptr<base::Value> serialized_one_rect( 424 scoped_ptr<base::Value> serialized_one_rect(
433 one_rect_picture->AsValue()); 425 one_rect_picture->AsValue());
434 426
435 const base::DictionaryValue* value = NULL; 427 const base::DictionaryValue* value = NULL;
436 EXPECT_TRUE(serialized_one_rect->GetAsDictionary(&value)); 428 EXPECT_TRUE(serialized_one_rect->GetAsDictionary(&value));
437 429
438 // Decode the picture from base64. 430 // Decode the picture from base64.
439 const base::Value* skp_value; 431 const base::Value* skp_value;
440 EXPECT_TRUE(value->Get("skp64", &skp_value)); 432 EXPECT_TRUE(value->Get("skp64", &skp_value));
(...skipping 19 matching lines...) Expand all
460 tile_grid_info.fMargin.setEmpty(); 452 tile_grid_info.fMargin.setEmpty();
461 tile_grid_info.fOffset.setZero(); 453 tile_grid_info.fOffset.setZero();
462 454
463 FakeContentLayerClient content_layer_client; 455 FakeContentLayerClient content_layer_client;
464 EXPECT_EQ(NULL, content_layer_client.last_canvas()); 456 EXPECT_EQ(NULL, content_layer_client.last_canvas());
465 457
466 scoped_refptr<Picture> picture = Picture::Create(layer_rect, 458 scoped_refptr<Picture> picture = Picture::Create(layer_rect,
467 &content_layer_client, 459 &content_layer_client,
468 tile_grid_info, 460 tile_grid_info,
469 false, 461 false,
470 0,
471 Picture::RECORD_NORMALLY); 462 Picture::RECORD_NORMALLY);
472 EXPECT_TRUE(content_layer_client.last_canvas() != NULL); 463 EXPECT_TRUE(content_layer_client.last_canvas() != NULL);
473 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_ENABLED, 464 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_ENABLED,
474 content_layer_client.last_context_status()); 465 content_layer_client.last_context_status());
475 EXPECT_TRUE(picture); 466 EXPECT_TRUE(picture);
476 467
477 picture = Picture::Create(layer_rect, 468 picture = Picture::Create(layer_rect,
478 &content_layer_client, 469 &content_layer_client,
479 tile_grid_info, 470 tile_grid_info,
480 false, 471 false,
481 0,
482 Picture::RECORD_WITH_SK_NULL_CANVAS); 472 Picture::RECORD_WITH_SK_NULL_CANVAS);
483 EXPECT_TRUE(content_layer_client.last_canvas() != NULL); 473 EXPECT_TRUE(content_layer_client.last_canvas() != NULL);
484 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_ENABLED, 474 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_ENABLED,
485 content_layer_client.last_context_status()); 475 content_layer_client.last_context_status());
486 EXPECT_TRUE(picture); 476 EXPECT_TRUE(picture);
487 477
488 picture = Picture::Create(layer_rect, 478 picture = Picture::Create(layer_rect,
489 &content_layer_client, 479 &content_layer_client,
490 tile_grid_info, 480 tile_grid_info,
491 false, 481 false,
492 0,
493 Picture::RECORD_WITH_PAINTING_DISABLED); 482 Picture::RECORD_WITH_PAINTING_DISABLED);
494 EXPECT_TRUE(content_layer_client.last_canvas() != NULL); 483 EXPECT_TRUE(content_layer_client.last_canvas() != NULL);
495 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_DISABLED, 484 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_DISABLED,
496 content_layer_client.last_context_status()); 485 content_layer_client.last_context_status());
497 EXPECT_TRUE(picture); 486 EXPECT_TRUE(picture);
498 487
499 picture = Picture::Create(layer_rect, 488 picture = Picture::Create(layer_rect,
500 &content_layer_client, 489 &content_layer_client,
501 tile_grid_info, 490 tile_grid_info,
502 false, 491 false,
503 0,
504 Picture::RECORD_WITH_SKRECORD); 492 Picture::RECORD_WITH_SKRECORD);
505 EXPECT_TRUE(content_layer_client.last_canvas() != NULL); 493 EXPECT_TRUE(content_layer_client.last_canvas() != NULL);
506 EXPECT_TRUE(picture); 494 EXPECT_TRUE(picture);
507 495
508 EXPECT_EQ(4, Picture::RECORDING_MODE_COUNT); 496 EXPECT_EQ(4, Picture::RECORDING_MODE_COUNT);
509 } 497 }
510 498
511 } // namespace 499 } // namespace
512 } // namespace cc 500 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_pile_unittest.cc ('k') | cc/resources/raster_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698