| OLD | NEW |
| 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 27 matching lines...) Expand all Loading... |
| 38 red_paint.setColor(SkColorSetARGB(255, 255, 0, 0)); | 38 red_paint.setColor(SkColorSetARGB(255, 255, 0, 0)); |
| 39 SkPaint green_paint; | 39 SkPaint green_paint; |
| 40 green_paint.setColor(SkColorSetARGB(255, 0, 255, 0)); | 40 green_paint.setColor(SkColorSetARGB(255, 0, 255, 0)); |
| 41 | 41 |
| 42 // Invalid picture (not a dict). | 42 // Invalid picture (not a dict). |
| 43 tmp.reset(new base::StringValue("abc!@#$%")); | 43 tmp.reset(new base::StringValue("abc!@#$%")); |
| 44 scoped_refptr<Picture> invalid_picture = | 44 scoped_refptr<Picture> invalid_picture = |
| 45 Picture::CreateFromValue(tmp.get()); | 45 Picture::CreateFromValue(tmp.get()); |
| 46 EXPECT_FALSE(invalid_picture.get()); | 46 EXPECT_FALSE(invalid_picture.get()); |
| 47 | 47 |
| 48 Picture::RecordingMode kRecordingModes[] = {Picture::RECORD_NORMALLY, | |
| 49 Picture::RECORD_WITH_SKRECORD}; | |
| 50 | |
| 51 // Single full-size rect picture. | 48 // Single full-size rect picture. |
| 52 content_layer_client.add_draw_rect(layer_rect, red_paint); | 49 content_layer_client.add_draw_rect(layer_rect, red_paint); |
| 53 | 50 |
| 54 for (size_t i = 0; i < arraysize(kRecordingModes); ++i) { | 51 scoped_refptr<Picture> one_rect_picture = |
| 55 scoped_refptr<Picture> one_rect_picture = | 52 Picture::Create(layer_rect, |
| 56 Picture::Create(layer_rect, | 53 &content_layer_client, |
| 57 &content_layer_client, | 54 tile_grid_info, |
| 58 tile_grid_info, | 55 false, |
| 59 false, | 56 Picture::RECORD_NORMALLY); |
| 60 kRecordingModes[i]); | 57 scoped_ptr<base::Value> serialized_one_rect(one_rect_picture->AsValue()); |
| 61 scoped_ptr<base::Value> serialized_one_rect(one_rect_picture->AsValue()); | |
| 62 | 58 |
| 63 // Reconstruct the picture. | 59 // Reconstruct the picture. |
| 64 scoped_refptr<Picture> one_rect_picture_check = | 60 scoped_refptr<Picture> one_rect_picture_check = |
| 65 Picture::CreateFromValue(serialized_one_rect.get()); | 61 Picture::CreateFromValue(serialized_one_rect.get()); |
| 66 EXPECT_TRUE(!!one_rect_picture_check.get()); | 62 EXPECT_TRUE(!!one_rect_picture_check.get()); |
| 67 | 63 |
| 68 // Check for equivalence. | 64 // Check for equivalence. |
| 69 unsigned char one_rect_buffer[4 * 100 * 100] = {0}; | 65 unsigned char one_rect_buffer[4 * 100 * 100] = {0}; |
| 70 DrawPicture(one_rect_buffer, layer_rect, one_rect_picture); | 66 DrawPicture(one_rect_buffer, layer_rect, one_rect_picture); |
| 71 unsigned char one_rect_buffer_check[4 * 100 * 100] = {0}; | 67 unsigned char one_rect_buffer_check[4 * 100 * 100] = {0}; |
| 72 DrawPicture(one_rect_buffer_check, layer_rect, one_rect_picture_check); | 68 DrawPicture(one_rect_buffer_check, layer_rect, one_rect_picture_check); |
| 73 | 69 |
| 74 EXPECT_EQ(one_rect_picture->LayerRect(), | 70 EXPECT_EQ(one_rect_picture->LayerRect(), one_rect_picture_check->LayerRect()); |
| 75 one_rect_picture_check->LayerRect()); | 71 EXPECT_EQ(0, memcmp(one_rect_buffer, one_rect_buffer_check, 4 * 100 * 100)); |
| 76 EXPECT_EQ(0, memcmp(one_rect_buffer, one_rect_buffer_check, 4 * 100 * 100)); | |
| 77 } | |
| 78 | 72 |
| 79 // Two rect picture. | 73 // Two rect picture. |
| 80 content_layer_client.add_draw_rect(gfx::Rect(25, 25, 50, 50), green_paint); | 74 content_layer_client.add_draw_rect(gfx::Rect(25, 25, 50, 50), green_paint); |
| 81 | 75 |
| 82 for (size_t i = 0; i < arraysize(kRecordingModes); ++i) { | 76 scoped_refptr<Picture> two_rect_picture = |
| 83 scoped_refptr<Picture> two_rect_picture = | 77 Picture::Create(layer_rect, |
| 84 Picture::Create(layer_rect, | 78 &content_layer_client, |
| 85 &content_layer_client, | 79 tile_grid_info, |
| 86 tile_grid_info, | 80 false, |
| 87 false, | 81 Picture::RECORD_NORMALLY); |
| 88 Picture::RECORD_NORMALLY); | |
| 89 | 82 |
| 90 scoped_ptr<base::Value> serialized_two_rect(two_rect_picture->AsValue()); | 83 scoped_ptr<base::Value> serialized_two_rect(two_rect_picture->AsValue()); |
| 91 | 84 |
| 92 // Reconstruct the picture. | 85 // Reconstruct the picture. |
| 93 scoped_refptr<Picture> two_rect_picture_check = | 86 scoped_refptr<Picture> two_rect_picture_check = |
| 94 Picture::CreateFromValue(serialized_two_rect.get()); | 87 Picture::CreateFromValue(serialized_two_rect.get()); |
| 95 EXPECT_TRUE(!!two_rect_picture_check.get()); | 88 EXPECT_TRUE(!!two_rect_picture_check.get()); |
| 96 | 89 |
| 97 // Check for equivalence. | 90 // Check for equivalence. |
| 98 unsigned char two_rect_buffer[4 * 100 * 100] = {0}; | 91 unsigned char two_rect_buffer[4 * 100 * 100] = {0}; |
| 99 DrawPicture(two_rect_buffer, layer_rect, two_rect_picture); | 92 DrawPicture(two_rect_buffer, layer_rect, two_rect_picture); |
| 100 unsigned char two_rect_buffer_check[4 * 100 * 100] = {0}; | 93 unsigned char two_rect_buffer_check[4 * 100 * 100] = {0}; |
| 101 DrawPicture(two_rect_buffer_check, layer_rect, two_rect_picture_check); | 94 DrawPicture(two_rect_buffer_check, layer_rect, two_rect_picture_check); |
| 102 | 95 |
| 103 EXPECT_EQ(two_rect_picture->LayerRect(), | 96 EXPECT_EQ(two_rect_picture->LayerRect(), two_rect_picture_check->LayerRect()); |
| 104 two_rect_picture_check->LayerRect()); | 97 EXPECT_EQ(0, memcmp(two_rect_buffer, two_rect_buffer_check, 4 * 100 * 100)); |
| 105 EXPECT_EQ(0, memcmp(two_rect_buffer, two_rect_buffer_check, 4 * 100 * 100)); | |
| 106 } | |
| 107 } | 98 } |
| 108 | 99 |
| 109 TEST(PictureTest, PixelRefIterator) { | 100 TEST(PictureTest, PixelRefIterator) { |
| 110 gfx::Rect layer_rect(2048, 2048); | 101 gfx::Rect layer_rect(2048, 2048); |
| 111 | 102 |
| 112 SkTileGridFactory::TileGridInfo tile_grid_info; | 103 SkTileGridFactory::TileGridInfo tile_grid_info; |
| 113 tile_grid_info.fTileInterval = SkISize::Make(512, 512); | 104 tile_grid_info.fTileInterval = SkISize::Make(512, 512); |
| 114 tile_grid_info.fMargin.setEmpty(); | 105 tile_grid_info.fMargin.setEmpty(); |
| 115 tile_grid_info.fOffset.setZero(); | 106 tile_grid_info.fOffset.setZero(); |
| 116 | 107 |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 picture = Picture::Create(layer_rect, | 463 picture = Picture::Create(layer_rect, |
| 473 &content_layer_client, | 464 &content_layer_client, |
| 474 tile_grid_info, | 465 tile_grid_info, |
| 475 false, | 466 false, |
| 476 Picture::RECORD_WITH_PAINTING_DISABLED); | 467 Picture::RECORD_WITH_PAINTING_DISABLED); |
| 477 EXPECT_TRUE(content_layer_client.last_canvas() != NULL); | 468 EXPECT_TRUE(content_layer_client.last_canvas() != NULL); |
| 478 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_DISABLED, | 469 EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_DISABLED, |
| 479 content_layer_client.last_context_status()); | 470 content_layer_client.last_context_status()); |
| 480 EXPECT_TRUE(picture.get()); | 471 EXPECT_TRUE(picture.get()); |
| 481 | 472 |
| 482 picture = Picture::Create(layer_rect, | 473 EXPECT_EQ(3, Picture::RECORDING_MODE_COUNT); |
| 483 &content_layer_client, | |
| 484 tile_grid_info, | |
| 485 false, | |
| 486 Picture::RECORD_WITH_SKRECORD); | |
| 487 EXPECT_TRUE(content_layer_client.last_canvas() != NULL); | |
| 488 EXPECT_TRUE(picture.get()); | |
| 489 | |
| 490 EXPECT_EQ(4, Picture::RECORDING_MODE_COUNT); | |
| 491 } | 474 } |
| 492 | 475 |
| 493 } // namespace | 476 } // namespace |
| 494 } // namespace cc | 477 } // namespace cc |
| OLD | NEW |