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

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

Issue 14001009: cc: Add pixel tests for PictureDrawQuad (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixup comment Created 7 years, 7 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/output/renderer_pixeltest.cc ('k') | cc/test/fake_content_layer_client.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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "cc/test/fake_picture_pile_impl.h" 6 #include "cc/test/fake_picture_pile_impl.h"
7 #include "skia/ext/lazy_pixel_ref.h" 7 #include "skia/ext/lazy_pixel_ref.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "third_party/skia/include/core/SkPixelRef.h" 9 #include "third_party/skia/include/core/SkPixelRef.h"
10 #include "third_party/skia/include/core/SkShader.h" 10 #include "third_party/skia/include/core/SkShader.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 SkAutoTUnref<TestLazyPixelRef> lazy_pixel_ref; 61 SkAutoTUnref<TestLazyPixelRef> lazy_pixel_ref;
62 lazy_pixel_ref.reset(new TestLazyPixelRef(size.width(), size.height())); 62 lazy_pixel_ref.reset(new TestLazyPixelRef(size.width(), size.height()));
63 lazy_pixel_ref->setURI(uri); 63 lazy_pixel_ref->setURI(uri);
64 64
65 bitmap->setConfig(SkBitmap::kARGB_8888_Config, 65 bitmap->setConfig(SkBitmap::kARGB_8888_Config,
66 size.width(), 66 size.width(),
67 size.height()); 67 size.height());
68 bitmap->setPixelRef(lazy_pixel_ref); 68 bitmap->setPixelRef(lazy_pixel_ref);
69 } 69 }
70 70
71 void RerecordPile(scoped_refptr<FakePicturePileImpl> pile) {
72 for (int y = 0; y < pile->num_tiles_y(); ++y) {
73 for (int x = 0; x < pile->num_tiles_x(); ++x) {
74 pile->RemoveRecordingAt(x, y);
75 pile->AddRecordingAt(x, y);
76 }
77 }
78 }
79
80 TEST(PicturePileImplTest, AnalyzeIsSolidUnscaled) { 71 TEST(PicturePileImplTest, AnalyzeIsSolidUnscaled) {
81 gfx::Size tile_size(100, 100); 72 gfx::Size tile_size(100, 100);
82 gfx::Size layer_bounds(400, 400); 73 gfx::Size layer_bounds(400, 400);
83 74
84 scoped_refptr<FakePicturePileImpl> pile = 75 scoped_refptr<FakePicturePileImpl> pile =
85 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 76 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
86 77
87 SkColor solid_color = SkColorSetARGB(255, 12, 23, 34); 78 SkColor solid_color = SkColorSetARGB(255, 12, 23, 34);
88 SkPaint solid_paint; 79 SkPaint solid_paint;
89 solid_paint.setColor(solid_color); 80 solid_paint.setColor(solid_color);
90 81
91 SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67); 82 SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67);
92 SkPaint non_solid_paint; 83 SkPaint non_solid_paint;
93 non_solid_paint.setColor(non_solid_color); 84 non_solid_paint.setColor(non_solid_color);
94 85
95 pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), solid_paint); 86 pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), solid_paint);
96 RerecordPile(pile); 87 pile->RerecordPile();
97 88
98 // Ensure everything is solid 89 // Ensure everything is solid
99 for (int y = 0; y <= 300; y += 100) { 90 for (int y = 0; y <= 300; y += 100) {
100 for (int x = 0; x <= 300; x += 100) { 91 for (int x = 0; x <= 300; x += 100) {
101 PicturePileImpl::Analysis analysis; 92 PicturePileImpl::Analysis analysis;
102 gfx::Rect rect(x, y, 100, 100); 93 gfx::Rect rect(x, y, 100, 100);
103 pile->AnalyzeInRect(rect, 1.0, &analysis); 94 pile->AnalyzeInRect(rect, 1.0, &analysis);
104 EXPECT_TRUE(analysis.is_solid_color) << rect.ToString(); 95 EXPECT_TRUE(analysis.is_solid_color) << rect.ToString();
105 EXPECT_EQ(analysis.solid_color, solid_color) << rect.ToString(); 96 EXPECT_EQ(analysis.solid_color, solid_color) << rect.ToString();
106 } 97 }
107 } 98 }
108 99
109 // One pixel non solid 100 // One pixel non solid
110 pile->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), non_solid_paint); 101 pile->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), non_solid_paint);
111 RerecordPile(pile); 102 pile->RerecordPile();
112 103
113 PicturePileImpl::Analysis analysis; 104 PicturePileImpl::Analysis analysis;
114 pile->AnalyzeInRect(gfx::Rect(0, 0, 100, 100), 1.0, &analysis); 105 pile->AnalyzeInRect(gfx::Rect(0, 0, 100, 100), 1.0, &analysis);
115 EXPECT_FALSE(analysis.is_solid_color); 106 EXPECT_FALSE(analysis.is_solid_color);
116 107
117 pile->AnalyzeInRect(gfx::Rect(100, 0, 100, 100), 1.0, &analysis); 108 pile->AnalyzeInRect(gfx::Rect(100, 0, 100, 100), 1.0, &analysis);
118 EXPECT_TRUE(analysis.is_solid_color); 109 EXPECT_TRUE(analysis.is_solid_color);
119 EXPECT_EQ(analysis.solid_color, solid_color); 110 EXPECT_EQ(analysis.solid_color, solid_color);
120 111
121 // Boundaries should be clipped 112 // Boundaries should be clipped
(...skipping 22 matching lines...) Expand all
144 135
145 SkColor solid_color = SkColorSetARGB(255, 12, 23, 34); 136 SkColor solid_color = SkColorSetARGB(255, 12, 23, 34);
146 SkPaint solid_paint; 137 SkPaint solid_paint;
147 solid_paint.setColor(solid_color); 138 solid_paint.setColor(solid_color);
148 139
149 SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67); 140 SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67);
150 SkPaint non_solid_paint; 141 SkPaint non_solid_paint;
151 non_solid_paint.setColor(non_solid_color); 142 non_solid_paint.setColor(non_solid_color);
152 143
153 pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), solid_paint); 144 pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), solid_paint);
154 RerecordPile(pile); 145 pile->RerecordPile();
155 146
156 // Ensure everything is solid 147 // Ensure everything is solid
157 for (int y = 0; y <= 30; y += 10) { 148 for (int y = 0; y <= 30; y += 10) {
158 for (int x = 0; x <= 30; x += 10) { 149 for (int x = 0; x <= 30; x += 10) {
159 PicturePileImpl::Analysis analysis; 150 PicturePileImpl::Analysis analysis;
160 gfx::Rect rect(x, y, 10, 10); 151 gfx::Rect rect(x, y, 10, 10);
161 pile->AnalyzeInRect(rect, 0.1f, &analysis); 152 pile->AnalyzeInRect(rect, 0.1f, &analysis);
162 EXPECT_TRUE(analysis.is_solid_color) << rect.ToString(); 153 EXPECT_TRUE(analysis.is_solid_color) << rect.ToString();
163 EXPECT_EQ(analysis.solid_color, solid_color) << rect.ToString(); 154 EXPECT_EQ(analysis.solid_color, solid_color) << rect.ToString();
164 } 155 }
165 } 156 }
166 157
167 // One pixel non solid 158 // One pixel non solid
168 pile->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), non_solid_paint); 159 pile->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), non_solid_paint);
169 RerecordPile(pile); 160 pile->RerecordPile();
170 161
171 PicturePileImpl::Analysis analysis; 162 PicturePileImpl::Analysis analysis;
172 pile->AnalyzeInRect(gfx::Rect(0, 0, 10, 10), 0.1f, &analysis); 163 pile->AnalyzeInRect(gfx::Rect(0, 0, 10, 10), 0.1f, &analysis);
173 EXPECT_FALSE(analysis.is_solid_color); 164 EXPECT_FALSE(analysis.is_solid_color);
174 165
175 pile->AnalyzeInRect(gfx::Rect(10, 0, 10, 10), 0.1f, &analysis); 166 pile->AnalyzeInRect(gfx::Rect(10, 0, 10, 10), 0.1f, &analysis);
176 EXPECT_TRUE(analysis.is_solid_color); 167 EXPECT_TRUE(analysis.is_solid_color);
177 EXPECT_EQ(analysis.solid_color, solid_color); 168 EXPECT_EQ(analysis.solid_color, solid_color);
178 169
179 // Boundaries should be clipped 170 // Boundaries should be clipped
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 CreateBitmap(gfx::Size(128, 128), "notlazy", &non_lazy_bitmap); 274 CreateBitmap(gfx::Size(128, 128), "notlazy", &non_lazy_bitmap);
284 275
285 pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 256, 256), simple_paint); 276 pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 256, 256), simple_paint);
286 pile->add_draw_rect_with_paint(gfx::Rect(128, 128, 512, 512), simple_paint); 277 pile->add_draw_rect_with_paint(gfx::Rect(128, 128, 512, 512), simple_paint);
287 pile->add_draw_rect_with_paint(gfx::Rect(512, 0, 256, 256), simple_paint); 278 pile->add_draw_rect_with_paint(gfx::Rect(512, 0, 256, 256), simple_paint);
288 pile->add_draw_rect_with_paint(gfx::Rect(0, 512, 256, 256), simple_paint); 279 pile->add_draw_rect_with_paint(gfx::Rect(0, 512, 256, 256), simple_paint);
289 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(128, 0)); 280 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(128, 0));
290 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(0, 128)); 281 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(0, 128));
291 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(150, 150)); 282 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(150, 150));
292 283
293 RerecordPile(pile); 284 pile->RerecordPile();
294 285
295 // Tile sized iterators. 286 // Tile sized iterators.
296 { 287 {
297 PicturePileImpl::PixelRefIterator iterator( 288 PicturePileImpl::PixelRefIterator iterator(
298 gfx::Rect(0, 0, 128, 128), 289 gfx::Rect(0, 0, 128, 128),
299 1.0, 290 1.0,
300 pile); 291 pile);
301 EXPECT_FALSE(iterator); 292 EXPECT_FALSE(iterator);
302 } 293 }
303 { 294 {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 // Lazy pixel refs are found in the following cells: 366 // Lazy pixel refs are found in the following cells:
376 // |---|---| 367 // |---|---|
377 // | x | | 368 // | x | |
378 // |---|---| 369 // |---|---|
379 // | x | x | 370 // | x | x |
380 // |---|---| 371 // |---|---|
381 pile->add_draw_bitmap(lazy_bitmap[0][0], gfx::Point(0, 0)); 372 pile->add_draw_bitmap(lazy_bitmap[0][0], gfx::Point(0, 0));
382 pile->add_draw_bitmap(lazy_bitmap[1][0], gfx::Point(0, 130)); 373 pile->add_draw_bitmap(lazy_bitmap[1][0], gfx::Point(0, 130));
383 pile->add_draw_bitmap(lazy_bitmap[1][1], gfx::Point(140, 140)); 374 pile->add_draw_bitmap(lazy_bitmap[1][1], gfx::Point(140, 140));
384 375
385 RerecordPile(pile); 376 pile->RerecordPile();
386 377
387 // Tile sized iterators. These should find only one pixel ref. 378 // Tile sized iterators. These should find only one pixel ref.
388 { 379 {
389 PicturePileImpl::PixelRefIterator iterator( 380 PicturePileImpl::PixelRefIterator iterator(
390 gfx::Rect(0, 0, 128, 128), 381 gfx::Rect(0, 0, 128, 128),
391 1.0, 382 1.0,
392 pile); 383 pile);
393 EXPECT_TRUE(iterator); 384 EXPECT_TRUE(iterator);
394 EXPECT_TRUE(*iterator == lazy_bitmap[0][0].pixelRef()); 385 EXPECT_TRUE(*iterator == lazy_bitmap[0][0].pixelRef());
395 EXPECT_FALSE(++iterator); 386 EXPECT_FALSE(++iterator);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 // Lazy pixel refs are found in the following cells: 496 // Lazy pixel refs are found in the following cells:
506 // |---|---| 497 // |---|---|
507 // | x | x | 498 // | x | x |
508 // |---|---| 499 // |---|---|
509 // | | x | 500 // | | x |
510 // |---|---| 501 // |---|---|
511 pile->add_draw_bitmap(lazy_bitmap[0][0], gfx::Point(0, 0)); 502 pile->add_draw_bitmap(lazy_bitmap[0][0], gfx::Point(0, 0));
512 pile->add_draw_bitmap(lazy_bitmap[0][1], gfx::Point(260, 0)); 503 pile->add_draw_bitmap(lazy_bitmap[0][1], gfx::Point(260, 0));
513 pile->add_draw_bitmap(lazy_bitmap[1][1], gfx::Point(260, 260)); 504 pile->add_draw_bitmap(lazy_bitmap[1][1], gfx::Point(260, 260));
514 505
515 RerecordPile(pile); 506 pile->RerecordPile();
516 507
517 // Tile sized iterators. These should find only one pixel ref. 508 // Tile sized iterators. These should find only one pixel ref.
518 { 509 {
519 PicturePileImpl::PixelRefIterator iterator( 510 PicturePileImpl::PixelRefIterator iterator(
520 gfx::Rect(0, 0, 256, 256), 511 gfx::Rect(0, 0, 256, 256),
521 1.0, 512 1.0,
522 pile); 513 pile);
523 EXPECT_TRUE(iterator); 514 EXPECT_TRUE(iterator);
524 EXPECT_TRUE(*iterator == lazy_bitmap[0][0].pixelRef()); 515 EXPECT_TRUE(*iterator == lazy_bitmap[0][0].pixelRef());
525 EXPECT_FALSE(++iterator); 516 EXPECT_FALSE(++iterator);
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 // |---|---| 654 // |---|---|
664 // | x | x | 655 // | x | x |
665 // |---|---| 656 // |---|---|
666 // | | x | 657 // | | x |
667 // |---|---| 658 // |---|---|
668 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(0, 0)); 659 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(0, 0));
669 pile->add_draw_bitmap(lazy_bitmap[0][0], gfx::Point(0, 0)); 660 pile->add_draw_bitmap(lazy_bitmap[0][0], gfx::Point(0, 0));
670 pile->add_draw_bitmap(lazy_bitmap[0][1], gfx::Point(260, 0)); 661 pile->add_draw_bitmap(lazy_bitmap[0][1], gfx::Point(260, 0));
671 pile->add_draw_bitmap(lazy_bitmap[1][1], gfx::Point(260, 260)); 662 pile->add_draw_bitmap(lazy_bitmap[1][1], gfx::Point(260, 260));
672 663
673 RerecordPile(pile); 664 pile->RerecordPile();
674 665
675 // Tile sized iterators. These should find only one pixel ref. 666 // Tile sized iterators. These should find only one pixel ref.
676 { 667 {
677 PicturePileImpl::PixelRefIterator iterator( 668 PicturePileImpl::PixelRefIterator iterator(
678 gfx::Rect(0, 0, 256, 256), 669 gfx::Rect(0, 0, 256, 256),
679 1.0, 670 1.0,
680 pile); 671 pile);
681 EXPECT_TRUE(iterator); 672 EXPECT_TRUE(iterator);
682 EXPECT_TRUE(*iterator == lazy_bitmap[0][0].pixelRef()); 673 EXPECT_TRUE(*iterator == lazy_bitmap[0][0].pixelRef());
683 EXPECT_FALSE(++iterator); 674 EXPECT_FALSE(++iterator);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 CreateBitmap(gfx::Size(256, 256), "notlazy", &non_lazy_bitmap); 789 CreateBitmap(gfx::Size(256, 256), "notlazy", &non_lazy_bitmap);
799 790
800 // Each bitmap goes into its own picture, the final layout 791 // Each bitmap goes into its own picture, the final layout
801 // has lazy pixel refs in the following regions: 792 // has lazy pixel refs in the following regions:
802 // ||=======|| 793 // ||=======||
803 // ||x| |x|| 794 // ||x| |x||
804 // ||-- --|| 795 // ||-- --||
805 // || |x|| 796 // || |x||
806 // ||=======|| 797 // ||=======||
807 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(0, 0)); 798 pile->add_draw_bitmap(non_lazy_bitmap, gfx::Point(0, 0));
808 RerecordPile(pile); 799 pile->RerecordPile();
809 800
810 FakeContentLayerClient content_layer_clients[2][2]; 801 FakeContentLayerClient content_layer_clients[2][2];
811 scoped_refptr<Picture> pictures[2][2]; 802 scoped_refptr<Picture> pictures[2][2];
812 for (int y = 0; y < 2; ++y) { 803 for (int y = 0; y < 2; ++y) {
813 for (int x = 0; x < 2; ++x) { 804 for (int x = 0; x < 2; ++x) {
814 if (x == 0 && y == 1) 805 if (x == 0 && y == 1)
815 continue; 806 continue;
816 content_layer_clients[y][x].add_draw_bitmap( 807 content_layer_clients[y][x].add_draw_bitmap(
817 lazy_bitmap[y][x], 808 lazy_bitmap[y][x],
818 gfx::Point(x * 128 + 10, y * 128 + 10)); 809 gfx::Point(x * 128 + 10, y * 128 + 10));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 PicturePileImpl::PixelRefIterator iterator( 850 PicturePileImpl::PixelRefIterator iterator(
860 gfx::Rect(0, 128, 128, 128), 851 gfx::Rect(0, 128, 128, 128),
861 1.0, 852 1.0,
862 pile); 853 pile);
863 EXPECT_FALSE(iterator); 854 EXPECT_FALSE(iterator);
864 } 855 }
865 } 856 }
866 857
867 } // namespace 858 } // namespace
868 } // namespace cc 859 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/renderer_pixeltest.cc ('k') | cc/test/fake_content_layer_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698