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

Side by Side Diff: cc/layers/recording_source_unittest.cc

Issue 2797583002: cc: Add color space to image decode caches (Closed)
Patch Set: Remove dead code Created 3 years, 8 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
« no previous file with comments | « no previous file | cc/paint/discardable_image_map.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <vector> 5 #include <vector>
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "cc/base/region.h" 8 #include "cc/base/region.h"
9 #include "cc/raster/raster_source.h" 9 #include "cc/raster/raster_source.h"
10 #include "cc/test/fake_content_layer_client.h" 10 #include "cc/test/fake_content_layer_client.h"
11 #include "cc/test/fake_recording_source.h" 11 #include "cc/test/fake_recording_source.h"
12 #include "cc/test/skia_common.h" 12 #include "cc/test/skia_common.h"
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/skia/include/core/SkRefCnt.h" 15 #include "third_party/skia/include/core/SkRefCnt.h"
16 16
17 namespace cc { 17 namespace cc {
18 namespace { 18 namespace {
19 19
20 gfx::ColorSpace DefaultColorSpace() {
21 return gfx::ColorSpace::CreateSRGB();
22 }
23
20 std::unique_ptr<FakeRecordingSource> CreateRecordingSource( 24 std::unique_ptr<FakeRecordingSource> CreateRecordingSource(
21 const gfx::Rect& viewport) { 25 const gfx::Rect& viewport) {
22 gfx::Rect layer_rect(viewport.right(), viewport.bottom()); 26 gfx::Rect layer_rect(viewport.right(), viewport.bottom());
23 std::unique_ptr<FakeRecordingSource> recording_source = 27 std::unique_ptr<FakeRecordingSource> recording_source =
24 FakeRecordingSource::CreateRecordingSource(viewport, layer_rect.size()); 28 FakeRecordingSource::CreateRecordingSource(viewport, layer_rect.size());
25 return recording_source; 29 return recording_source;
26 } 30 }
27 31
28 scoped_refptr<RasterSource> CreateRasterSource( 32 scoped_refptr<RasterSource> CreateRasterSource(
29 FakeRecordingSource* recording_source) { 33 FakeRecordingSource* recording_source) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 73
70 bool can_use_lcd_text = true; 74 bool can_use_lcd_text = true;
71 scoped_refptr<RasterSource> raster_source = 75 scoped_refptr<RasterSource> raster_source =
72 RasterSource::CreateFromRecordingSource(recording_source.get(), 76 RasterSource::CreateFromRecordingSource(recording_source.get(),
73 can_use_lcd_text); 77 can_use_lcd_text);
74 78
75 // Tile sized iterators. These should find only one pixel ref. 79 // Tile sized iterators. These should find only one pixel ref.
76 { 80 {
77 std::vector<DrawImage> images; 81 std::vector<DrawImage> images;
78 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, 82 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f,
79 &images); 83 DefaultColorSpace(), &images);
80 EXPECT_EQ(2u, images.size()); 84 EXPECT_EQ(2u, images.size());
81 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); 85 EXPECT_TRUE(images[0].image() == discardable_image[0][0]);
82 EXPECT_TRUE(images[1].image() == discardable_image[1][1]); 86 EXPECT_TRUE(images[1].image() == discardable_image[1][1]);
83 } 87 }
84 88
85 // Shifted tile sized iterators. These should find only one pixel ref. 89 // Shifted tile sized iterators. These should find only one pixel ref.
86 { 90 {
87 std::vector<DrawImage> images; 91 std::vector<DrawImage> images;
88 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 140, 128, 128), 92 raster_source->GetDiscardableImagesInRect(
89 1.f, &images); 93 gfx::Rect(130, 140, 128, 128), 1.f, DefaultColorSpace(), &images);
90 EXPECT_EQ(1u, images.size()); 94 EXPECT_EQ(1u, images.size());
91 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); 95 EXPECT_TRUE(images[0].image() == discardable_image[1][1]);
92 } 96 }
93 97
94 // The rotated bitmap would still be in the top right tile. 98 // The rotated bitmap would still be in the top right tile.
95 { 99 {
96 std::vector<DrawImage> images; 100 std::vector<DrawImage> images;
97 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 0, 128, 128), 1.f, 101 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 0, 128, 128), 1.f,
98 &images); 102 DefaultColorSpace(), &images);
99 EXPECT_EQ(1u, images.size()); 103 EXPECT_EQ(1u, images.size());
100 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); 104 EXPECT_TRUE(images[0].image() == discardable_image[1][1]);
101 } 105 }
102 106
103 // Layer sized iterators. These should find all pixel refs. 107 // Layer sized iterators. These should find all pixel refs.
104 { 108 {
105 std::vector<DrawImage> images; 109 std::vector<DrawImage> images;
106 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, 110 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f,
107 &images); 111 DefaultColorSpace(), &images);
108 EXPECT_EQ(3u, images.size()); 112 EXPECT_EQ(3u, images.size());
109 // Top left tile with bitmap[0][0] and bitmap[1][1]. 113 // Top left tile with bitmap[0][0] and bitmap[1][1].
110 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); 114 EXPECT_TRUE(images[0].image() == discardable_image[0][0]);
111 EXPECT_TRUE(images[1].image() == discardable_image[1][0]); 115 EXPECT_TRUE(images[1].image() == discardable_image[1][0]);
112 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); 116 EXPECT_TRUE(images[2].image() == discardable_image[1][1]);
113 } 117 }
114 118
115 // Verify different raster scales 119 // Verify different raster scales
116 for (float scale = 1.f; scale <= 5.f; scale += 0.5f) { 120 for (float scale = 1.f; scale <= 5.f; scale += 0.5f) {
117 std::vector<DrawImage> images; 121 std::vector<DrawImage> images;
118 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 0, 128, 128), 122 raster_source->GetDiscardableImagesInRect(
119 scale, &images); 123 gfx::Rect(130, 0, 128, 128), scale, DefaultColorSpace(), &images);
120 EXPECT_EQ(1u, images.size()); 124 EXPECT_EQ(1u, images.size());
121 EXPECT_FLOAT_EQ(scale, images[0].scale().width()); 125 EXPECT_FLOAT_EQ(scale, images[0].scale().width());
122 EXPECT_FLOAT_EQ(scale, images[0].scale().height()); 126 EXPECT_FLOAT_EQ(scale, images[0].scale().height());
123 } 127 }
124 } 128 }
125 129
126 TEST(RecordingSourceTest, NoGatherImageEmptyImages) { 130 TEST(RecordingSourceTest, NoGatherImageEmptyImages) {
127 gfx::Rect recorded_viewport(0, 0, 256, 256); 131 gfx::Rect recorded_viewport(0, 0, 256, 256);
128 132
129 std::unique_ptr<FakeRecordingSource> recording_source = 133 std::unique_ptr<FakeRecordingSource> recording_source =
130 CreateRecordingSource(recorded_viewport); 134 CreateRecordingSource(recorded_viewport);
131 recording_source->SetGenerateDiscardableImagesMetadata(false); 135 recording_source->SetGenerateDiscardableImagesMetadata(false);
132 recording_source->Rerecord(); 136 recording_source->Rerecord();
133 137
134 scoped_refptr<RasterSource> raster_source = 138 scoped_refptr<RasterSource> raster_source =
135 CreateRasterSource(recording_source.get()); 139 CreateRasterSource(recording_source.get());
136 140
137 // If recording source do not gather images, raster source is not going to 141 // If recording source do not gather images, raster source is not going to
138 // get images. 142 // get images.
139 { 143 {
140 std::vector<DrawImage> images; 144 std::vector<DrawImage> images;
141 raster_source->GetDiscardableImagesInRect(recorded_viewport, 1.f, &images); 145 raster_source->GetDiscardableImagesInRect(recorded_viewport, 1.f,
146 DefaultColorSpace(), &images);
142 EXPECT_TRUE(images.empty()); 147 EXPECT_TRUE(images.empty());
143 } 148 }
144 } 149 }
145 150
146 TEST(RecordingSourceTest, EmptyImages) { 151 TEST(RecordingSourceTest, EmptyImages) {
147 gfx::Rect recorded_viewport(0, 0, 256, 256); 152 gfx::Rect recorded_viewport(0, 0, 256, 256);
148 153
149 std::unique_ptr<FakeRecordingSource> recording_source = 154 std::unique_ptr<FakeRecordingSource> recording_source =
150 CreateRecordingSource(recorded_viewport); 155 CreateRecordingSource(recorded_viewport);
151 recording_source->SetGenerateDiscardableImagesMetadata(true); 156 recording_source->SetGenerateDiscardableImagesMetadata(true);
152 recording_source->Rerecord(); 157 recording_source->Rerecord();
153 158
154 scoped_refptr<RasterSource> raster_source = 159 scoped_refptr<RasterSource> raster_source =
155 CreateRasterSource(recording_source.get()); 160 CreateRasterSource(recording_source.get());
156 161
157 // Tile sized iterators. 162 // Tile sized iterators.
158 { 163 {
159 std::vector<DrawImage> images; 164 std::vector<DrawImage> images;
160 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, 165 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f,
161 &images); 166 DefaultColorSpace(), &images);
162 EXPECT_TRUE(images.empty()); 167 EXPECT_TRUE(images.empty());
163 } 168 }
164 // Shifted tile sized iterators. 169 // Shifted tile sized iterators.
165 { 170 {
166 std::vector<DrawImage> images; 171 std::vector<DrawImage> images;
167 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), 172 raster_source->GetDiscardableImagesInRect(
168 1.f, &images); 173 gfx::Rect(140, 140, 128, 128), 1.f, DefaultColorSpace(), &images);
169 EXPECT_TRUE(images.empty()); 174 EXPECT_TRUE(images.empty());
170 } 175 }
171 // Layer sized iterators. 176 // Layer sized iterators.
172 { 177 {
173 std::vector<DrawImage> images; 178 std::vector<DrawImage> images;
174 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, 179 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f,
175 &images); 180 DefaultColorSpace(), &images);
176 EXPECT_TRUE(images.empty()); 181 EXPECT_TRUE(images.empty());
177 } 182 }
178 } 183 }
179 184
180 TEST(RecordingSourceTest, NoDiscardableImages) { 185 TEST(RecordingSourceTest, NoDiscardableImages) {
181 gfx::Rect recorded_viewport(0, 0, 256, 256); 186 gfx::Rect recorded_viewport(0, 0, 256, 256);
182 187
183 std::unique_ptr<FakeRecordingSource> recording_source = 188 std::unique_ptr<FakeRecordingSource> recording_source =
184 CreateRecordingSource(recorded_viewport); 189 CreateRecordingSource(recorded_viewport);
185 190
(...skipping 20 matching lines...) Expand all
206 recording_source->SetGenerateDiscardableImagesMetadata(true); 211 recording_source->SetGenerateDiscardableImagesMetadata(true);
207 recording_source->Rerecord(); 212 recording_source->Rerecord();
208 213
209 scoped_refptr<RasterSource> raster_source = 214 scoped_refptr<RasterSource> raster_source =
210 CreateRasterSource(recording_source.get()); 215 CreateRasterSource(recording_source.get());
211 216
212 // Tile sized iterators. 217 // Tile sized iterators.
213 { 218 {
214 std::vector<DrawImage> images; 219 std::vector<DrawImage> images;
215 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, 220 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f,
216 &images); 221 DefaultColorSpace(), &images);
217 EXPECT_TRUE(images.empty()); 222 EXPECT_TRUE(images.empty());
218 } 223 }
219 // Shifted tile sized iterators. 224 // Shifted tile sized iterators.
220 { 225 {
221 std::vector<DrawImage> images; 226 std::vector<DrawImage> images;
222 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), 227 raster_source->GetDiscardableImagesInRect(
223 1.f, &images); 228 gfx::Rect(140, 140, 128, 128), 1.f, DefaultColorSpace(), &images);
224 EXPECT_TRUE(images.empty()); 229 EXPECT_TRUE(images.empty());
225 } 230 }
226 // Layer sized iterators. 231 // Layer sized iterators.
227 { 232 {
228 std::vector<DrawImage> images; 233 std::vector<DrawImage> images;
229 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, 234 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f,
230 &images); 235 DefaultColorSpace(), &images);
231 EXPECT_TRUE(images.empty()); 236 EXPECT_TRUE(images.empty());
232 } 237 }
233 } 238 }
234 239
235 TEST(RecordingSourceTest, DiscardableImages) { 240 TEST(RecordingSourceTest, DiscardableImages) {
236 gfx::Rect recorded_viewport(0, 0, 256, 256); 241 gfx::Rect recorded_viewport(0, 0, 256, 256);
237 242
238 std::unique_ptr<FakeRecordingSource> recording_source = 243 std::unique_ptr<FakeRecordingSource> recording_source =
239 CreateRecordingSource(recorded_viewport); 244 CreateRecordingSource(recorded_viewport);
240 245
(...skipping 15 matching lines...) Expand all
256 recording_source->SetGenerateDiscardableImagesMetadata(true); 261 recording_source->SetGenerateDiscardableImagesMetadata(true);
257 recording_source->Rerecord(); 262 recording_source->Rerecord();
258 263
259 scoped_refptr<RasterSource> raster_source = 264 scoped_refptr<RasterSource> raster_source =
260 CreateRasterSource(recording_source.get()); 265 CreateRasterSource(recording_source.get());
261 266
262 // Tile sized iterators. These should find only one image. 267 // Tile sized iterators. These should find only one image.
263 { 268 {
264 std::vector<DrawImage> images; 269 std::vector<DrawImage> images;
265 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, 270 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f,
266 &images); 271 DefaultColorSpace(), &images);
267 EXPECT_EQ(1u, images.size()); 272 EXPECT_EQ(1u, images.size());
268 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); 273 EXPECT_TRUE(images[0].image() == discardable_image[0][0]);
269 } 274 }
270 275
271 // Shifted tile sized iterators. These should find only one image. 276 // Shifted tile sized iterators. These should find only one image.
272 { 277 {
273 std::vector<DrawImage> images; 278 std::vector<DrawImage> images;
274 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), 279 raster_source->GetDiscardableImagesInRect(
275 1.f, &images); 280 gfx::Rect(140, 140, 128, 128), 1.f, DefaultColorSpace(), &images);
276 EXPECT_EQ(1u, images.size()); 281 EXPECT_EQ(1u, images.size());
277 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); 282 EXPECT_TRUE(images[0].image() == discardable_image[1][1]);
278 } 283 }
279 284
280 // Ensure there's no discardable images in the empty cell 285 // Ensure there's no discardable images in the empty cell
281 { 286 {
282 std::vector<DrawImage> images; 287 std::vector<DrawImage> images;
283 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 0, 128, 128), 1.f, 288 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 0, 128, 128), 1.f,
284 &images); 289 DefaultColorSpace(), &images);
285 EXPECT_TRUE(images.empty()); 290 EXPECT_TRUE(images.empty());
286 } 291 }
287 292
288 // Layer sized iterators. These should find all 3 images. 293 // Layer sized iterators. These should find all 3 images.
289 { 294 {
290 std::vector<DrawImage> images; 295 std::vector<DrawImage> images;
291 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, 296 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f,
292 &images); 297 DefaultColorSpace(), &images);
293 EXPECT_EQ(3u, images.size()); 298 EXPECT_EQ(3u, images.size());
294 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); 299 EXPECT_TRUE(images[0].image() == discardable_image[0][0]);
295 EXPECT_TRUE(images[1].image() == discardable_image[1][0]); 300 EXPECT_TRUE(images[1].image() == discardable_image[1][0]);
296 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); 301 EXPECT_TRUE(images[2].image() == discardable_image[1][1]);
297 } 302 }
298 } 303 }
299 304
300 TEST(RecordingSourceTest, DiscardableImagesBaseNonDiscardable) { 305 TEST(RecordingSourceTest, DiscardableImagesBaseNonDiscardable) {
301 gfx::Rect recorded_viewport(0, 0, 512, 512); 306 gfx::Rect recorded_viewport(0, 0, 512, 512);
302 307
(...skipping 26 matching lines...) Expand all
329 recording_source->SetGenerateDiscardableImagesMetadata(true); 334 recording_source->SetGenerateDiscardableImagesMetadata(true);
330 recording_source->Rerecord(); 335 recording_source->Rerecord();
331 336
332 scoped_refptr<RasterSource> raster_source = 337 scoped_refptr<RasterSource> raster_source =
333 CreateRasterSource(recording_source.get()); 338 CreateRasterSource(recording_source.get());
334 339
335 // Tile sized iterators. These should find only one image. 340 // Tile sized iterators. These should find only one image.
336 { 341 {
337 std::vector<DrawImage> images; 342 std::vector<DrawImage> images;
338 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, 343 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f,
339 &images); 344 DefaultColorSpace(), &images);
340 EXPECT_EQ(1u, images.size()); 345 EXPECT_EQ(1u, images.size());
341 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); 346 EXPECT_TRUE(images[0].image() == discardable_image[0][0]);
342 } 347 }
343 // Shifted tile sized iterators. These should find only one image. 348 // Shifted tile sized iterators. These should find only one image.
344 { 349 {
345 std::vector<DrawImage> images; 350 std::vector<DrawImage> images;
346 raster_source->GetDiscardableImagesInRect(gfx::Rect(260, 260, 256, 256), 351 raster_source->GetDiscardableImagesInRect(
347 1.f, &images); 352 gfx::Rect(260, 260, 256, 256), 1.f, DefaultColorSpace(), &images);
348 EXPECT_EQ(1u, images.size()); 353 EXPECT_EQ(1u, images.size());
349 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); 354 EXPECT_TRUE(images[0].image() == discardable_image[1][1]);
350 } 355 }
351 // Ensure there's no discardable images in the empty cell 356 // Ensure there's no discardable images in the empty cell
352 { 357 {
353 std::vector<DrawImage> images; 358 std::vector<DrawImage> images;
354 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 256, 256, 256), 1.f, 359 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 256, 256, 256), 1.f,
355 &images); 360 DefaultColorSpace(), &images);
356 EXPECT_TRUE(images.empty()); 361 EXPECT_TRUE(images.empty());
357 } 362 }
358 // Layer sized iterators. These should find three images. 363 // Layer sized iterators. These should find three images.
359 { 364 {
360 std::vector<DrawImage> images; 365 std::vector<DrawImage> images;
361 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 512, 512), 1.f, 366 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 512, 512), 1.f,
362 &images); 367 DefaultColorSpace(), &images);
363 EXPECT_EQ(3u, images.size()); 368 EXPECT_EQ(3u, images.size());
364 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); 369 EXPECT_TRUE(images[0].image() == discardable_image[0][0]);
365 EXPECT_TRUE(images[1].image() == discardable_image[0][1]); 370 EXPECT_TRUE(images[1].image() == discardable_image[0][1]);
366 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); 371 EXPECT_TRUE(images[2].image() == discardable_image[1][1]);
367 } 372 }
368 } 373 }
369 374
370 } // namespace 375 } // namespace
371 } // namespace cc 376 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/paint/discardable_image_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698