OLD | NEW |
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/playback/raster_source.h" | 9 #include "cc/playback/raster_source.h" |
10 #include "cc/test/fake_client_picture_cache.h" | 10 #include "cc/test/fake_client_picture_cache.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 recording_source->Rerecord(); | 71 recording_source->Rerecord(); |
72 | 72 |
73 bool can_use_lcd_text = true; | 73 bool can_use_lcd_text = true; |
74 scoped_refptr<RasterSource> raster_source = | 74 scoped_refptr<RasterSource> raster_source = |
75 RasterSource::CreateFromRecordingSource(recording_source.get(), | 75 RasterSource::CreateFromRecordingSource(recording_source.get(), |
76 can_use_lcd_text); | 76 can_use_lcd_text); |
77 | 77 |
78 // Tile sized iterators. These should find only one pixel ref. | 78 // Tile sized iterators. These should find only one pixel ref. |
79 { | 79 { |
80 std::vector<DrawImage> images; | 80 std::vector<DrawImage> images; |
81 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), | 81 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, |
82 gfx::SizeF(1.f, 1.f), &images); | 82 &images); |
83 EXPECT_EQ(2u, images.size()); | 83 EXPECT_EQ(2u, images.size()); |
84 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); | 84 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); |
85 EXPECT_TRUE(images[1].image() == discardable_image[1][1]); | 85 EXPECT_TRUE(images[1].image() == discardable_image[1][1]); |
86 } | 86 } |
87 | 87 |
88 // Shifted tile sized iterators. These should find only one pixel ref. | 88 // Shifted tile sized iterators. These should find only one pixel ref. |
89 { | 89 { |
90 std::vector<DrawImage> images; | 90 std::vector<DrawImage> images; |
91 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 140, 128, 128), | 91 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 140, 128, 128), |
92 gfx::SizeF(1.f, 1.f), &images); | 92 1.f, &images); |
93 EXPECT_EQ(1u, images.size()); | 93 EXPECT_EQ(1u, images.size()); |
94 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); | 94 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); |
95 } | 95 } |
96 | 96 |
97 // The rotated bitmap would still be in the top right tile. | 97 // The rotated bitmap would still be in the top right tile. |
98 { | 98 { |
99 std::vector<DrawImage> images; | 99 std::vector<DrawImage> images; |
100 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 0, 128, 128), | 100 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 0, 128, 128), 1.f, |
101 gfx::SizeF(1.f, 1.f), &images); | 101 &images); |
102 EXPECT_EQ(1u, images.size()); | 102 EXPECT_EQ(1u, images.size()); |
103 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); | 103 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); |
104 } | 104 } |
105 | 105 |
106 // Layer sized iterators. These should find all pixel refs. | 106 // Layer sized iterators. These should find all pixel refs. |
107 { | 107 { |
108 std::vector<DrawImage> images; | 108 std::vector<DrawImage> images; |
109 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), | 109 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, |
110 gfx::SizeF(1.f, 1.f), &images); | 110 &images); |
111 EXPECT_EQ(3u, images.size()); | 111 EXPECT_EQ(3u, images.size()); |
112 // Top left tile with bitmap[0][0] and bitmap[1][1]. | 112 // Top left tile with bitmap[0][0] and bitmap[1][1]. |
113 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); | 113 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); |
114 EXPECT_TRUE(images[1].image() == discardable_image[1][0]); | 114 EXPECT_TRUE(images[1].image() == discardable_image[1][0]); |
115 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); | 115 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); |
116 } | 116 } |
117 | 117 |
118 // Verify different raster scales | 118 // Verify different raster scales |
119 for (float x_scale = 1.f; x_scale <= 5.f; x_scale += 0.5f) { | 119 for (float scale = 1.f; scale <= 5.f; scale += 0.5f) { |
120 for (float y_scale = 1.f; y_scale <= 5.f; y_scale += 0.5f) { | 120 std::vector<DrawImage> images; |
121 std::vector<DrawImage> images; | 121 raster_source->GetDiscardableImagesInRect(gfx::Rect(130, 0, 128, 128), |
122 raster_source->GetDiscardableImagesInRect( | 122 scale, &images); |
123 gfx::Rect(130, 0, 128, 128), gfx::SizeF(x_scale, y_scale), &images); | 123 EXPECT_EQ(1u, images.size()); |
124 EXPECT_EQ(1u, images.size()); | 124 EXPECT_FLOAT_EQ(scale, images[0].scale().width()); |
125 EXPECT_FLOAT_EQ(x_scale, images[0].scale().width()); | 125 EXPECT_FLOAT_EQ(scale, images[0].scale().height()); |
126 EXPECT_FLOAT_EQ(y_scale, images[0].scale().height()); | |
127 } | |
128 } | 126 } |
129 } | 127 } |
130 | 128 |
131 TEST(RecordingSourceTest, NoGatherImageEmptyImages) { | 129 TEST(RecordingSourceTest, NoGatherImageEmptyImages) { |
132 gfx::Rect recorded_viewport(0, 0, 256, 256); | 130 gfx::Rect recorded_viewport(0, 0, 256, 256); |
133 | 131 |
134 std::unique_ptr<FakeRecordingSource> recording_source = | 132 std::unique_ptr<FakeRecordingSource> recording_source = |
135 CreateRecordingSource(recorded_viewport); | 133 CreateRecordingSource(recorded_viewport); |
136 recording_source->SetGenerateDiscardableImagesMetadata(false); | 134 recording_source->SetGenerateDiscardableImagesMetadata(false); |
137 recording_source->Rerecord(); | 135 recording_source->Rerecord(); |
138 | 136 |
139 scoped_refptr<RasterSource> raster_source = | 137 scoped_refptr<RasterSource> raster_source = |
140 CreateRasterSource(recording_source.get()); | 138 CreateRasterSource(recording_source.get()); |
141 | 139 |
142 // If recording source do not gather images, raster source is not going to | 140 // If recording source do not gather images, raster source is not going to |
143 // get images. | 141 // get images. |
144 { | 142 { |
145 std::vector<DrawImage> images; | 143 std::vector<DrawImage> images; |
146 raster_source->GetDiscardableImagesInRect(recorded_viewport, | 144 raster_source->GetDiscardableImagesInRect(recorded_viewport, 1.f, &images); |
147 gfx::SizeF(1.f, 1.f), &images); | |
148 EXPECT_TRUE(images.empty()); | 145 EXPECT_TRUE(images.empty()); |
149 } | 146 } |
150 } | 147 } |
151 | 148 |
152 TEST(RecordingSourceTest, EmptyImages) { | 149 TEST(RecordingSourceTest, EmptyImages) { |
153 gfx::Rect recorded_viewport(0, 0, 256, 256); | 150 gfx::Rect recorded_viewport(0, 0, 256, 256); |
154 | 151 |
155 std::unique_ptr<FakeRecordingSource> recording_source = | 152 std::unique_ptr<FakeRecordingSource> recording_source = |
156 CreateRecordingSource(recorded_viewport); | 153 CreateRecordingSource(recorded_viewport); |
157 recording_source->SetGenerateDiscardableImagesMetadata(true); | 154 recording_source->SetGenerateDiscardableImagesMetadata(true); |
158 recording_source->Rerecord(); | 155 recording_source->Rerecord(); |
159 | 156 |
160 scoped_refptr<RasterSource> raster_source = | 157 scoped_refptr<RasterSource> raster_source = |
161 CreateRasterSource(recording_source.get()); | 158 CreateRasterSource(recording_source.get()); |
162 | 159 |
163 // Tile sized iterators. | 160 // Tile sized iterators. |
164 { | 161 { |
165 std::vector<DrawImage> images; | 162 std::vector<DrawImage> images; |
166 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), | 163 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, |
167 gfx::SizeF(1.f, 1.f), &images); | 164 &images); |
168 EXPECT_TRUE(images.empty()); | 165 EXPECT_TRUE(images.empty()); |
169 } | 166 } |
170 // Shifted tile sized iterators. | 167 // Shifted tile sized iterators. |
171 { | 168 { |
172 std::vector<DrawImage> images; | 169 std::vector<DrawImage> images; |
173 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), | 170 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), |
174 gfx::SizeF(1.f, 1.f), &images); | 171 1.f, &images); |
175 EXPECT_TRUE(images.empty()); | 172 EXPECT_TRUE(images.empty()); |
176 } | 173 } |
177 // Layer sized iterators. | 174 // Layer sized iterators. |
178 { | 175 { |
179 std::vector<DrawImage> images; | 176 std::vector<DrawImage> images; |
180 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), | 177 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, |
181 gfx::SizeF(1.f, 1.f), &images); | 178 &images); |
182 EXPECT_TRUE(images.empty()); | 179 EXPECT_TRUE(images.empty()); |
183 } | 180 } |
184 } | 181 } |
185 | 182 |
186 TEST(RecordingSourceTest, NoDiscardableImages) { | 183 TEST(RecordingSourceTest, NoDiscardableImages) { |
187 gfx::Rect recorded_viewport(0, 0, 256, 256); | 184 gfx::Rect recorded_viewport(0, 0, 256, 256); |
188 | 185 |
189 std::unique_ptr<FakeRecordingSource> recording_source = | 186 std::unique_ptr<FakeRecordingSource> recording_source = |
190 CreateRecordingSource(recorded_viewport); | 187 CreateRecordingSource(recorded_viewport); |
191 | 188 |
(...skipping 19 matching lines...) Expand all Loading... |
211 recording_source->add_draw_image(non_discardable_image, gfx::Point(150, 150)); | 208 recording_source->add_draw_image(non_discardable_image, gfx::Point(150, 150)); |
212 recording_source->SetGenerateDiscardableImagesMetadata(true); | 209 recording_source->SetGenerateDiscardableImagesMetadata(true); |
213 recording_source->Rerecord(); | 210 recording_source->Rerecord(); |
214 | 211 |
215 scoped_refptr<RasterSource> raster_source = | 212 scoped_refptr<RasterSource> raster_source = |
216 CreateRasterSource(recording_source.get()); | 213 CreateRasterSource(recording_source.get()); |
217 | 214 |
218 // Tile sized iterators. | 215 // Tile sized iterators. |
219 { | 216 { |
220 std::vector<DrawImage> images; | 217 std::vector<DrawImage> images; |
221 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), | 218 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, |
222 gfx::SizeF(1.f, 1.f), &images); | 219 &images); |
223 EXPECT_TRUE(images.empty()); | 220 EXPECT_TRUE(images.empty()); |
224 } | 221 } |
225 // Shifted tile sized iterators. | 222 // Shifted tile sized iterators. |
226 { | 223 { |
227 std::vector<DrawImage> images; | 224 std::vector<DrawImage> images; |
228 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), | 225 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), |
229 gfx::SizeF(1.f, 1.f), &images); | 226 1.f, &images); |
230 EXPECT_TRUE(images.empty()); | 227 EXPECT_TRUE(images.empty()); |
231 } | 228 } |
232 // Layer sized iterators. | 229 // Layer sized iterators. |
233 { | 230 { |
234 std::vector<DrawImage> images; | 231 std::vector<DrawImage> images; |
235 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), | 232 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, |
236 gfx::SizeF(1.f, 1.f), &images); | 233 &images); |
237 EXPECT_TRUE(images.empty()); | 234 EXPECT_TRUE(images.empty()); |
238 } | 235 } |
239 } | 236 } |
240 | 237 |
241 TEST(RecordingSourceTest, DiscardableImages) { | 238 TEST(RecordingSourceTest, DiscardableImages) { |
242 gfx::Rect recorded_viewport(0, 0, 256, 256); | 239 gfx::Rect recorded_viewport(0, 0, 256, 256); |
243 | 240 |
244 std::unique_ptr<FakeRecordingSource> recording_source = | 241 std::unique_ptr<FakeRecordingSource> recording_source = |
245 CreateRecordingSource(recorded_viewport); | 242 CreateRecordingSource(recorded_viewport); |
246 | 243 |
(...skipping 14 matching lines...) Expand all Loading... |
261 gfx::Point(140, 140)); | 258 gfx::Point(140, 140)); |
262 recording_source->SetGenerateDiscardableImagesMetadata(true); | 259 recording_source->SetGenerateDiscardableImagesMetadata(true); |
263 recording_source->Rerecord(); | 260 recording_source->Rerecord(); |
264 | 261 |
265 scoped_refptr<RasterSource> raster_source = | 262 scoped_refptr<RasterSource> raster_source = |
266 CreateRasterSource(recording_source.get()); | 263 CreateRasterSource(recording_source.get()); |
267 | 264 |
268 // Tile sized iterators. These should find only one image. | 265 // Tile sized iterators. These should find only one image. |
269 { | 266 { |
270 std::vector<DrawImage> images; | 267 std::vector<DrawImage> images; |
271 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), | 268 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 128, 128), 1.f, |
272 gfx::SizeF(1.f, 1.f), &images); | 269 &images); |
273 EXPECT_EQ(1u, images.size()); | 270 EXPECT_EQ(1u, images.size()); |
274 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); | 271 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); |
275 } | 272 } |
276 | 273 |
277 // Shifted tile sized iterators. These should find only one image. | 274 // Shifted tile sized iterators. These should find only one image. |
278 { | 275 { |
279 std::vector<DrawImage> images; | 276 std::vector<DrawImage> images; |
280 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), | 277 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 140, 128, 128), |
281 gfx::SizeF(1.f, 1.f), &images); | 278 1.f, &images); |
282 EXPECT_EQ(1u, images.size()); | 279 EXPECT_EQ(1u, images.size()); |
283 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); | 280 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); |
284 } | 281 } |
285 | 282 |
286 // Ensure there's no discardable images in the empty cell | 283 // Ensure there's no discardable images in the empty cell |
287 { | 284 { |
288 std::vector<DrawImage> images; | 285 std::vector<DrawImage> images; |
289 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 0, 128, 128), | 286 raster_source->GetDiscardableImagesInRect(gfx::Rect(140, 0, 128, 128), 1.f, |
290 gfx::SizeF(1.f, 1.f), &images); | 287 &images); |
291 EXPECT_TRUE(images.empty()); | 288 EXPECT_TRUE(images.empty()); |
292 } | 289 } |
293 | 290 |
294 // Layer sized iterators. These should find all 3 images. | 291 // Layer sized iterators. These should find all 3 images. |
295 { | 292 { |
296 std::vector<DrawImage> images; | 293 std::vector<DrawImage> images; |
297 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), | 294 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, |
298 gfx::SizeF(1.f, 1.f), &images); | 295 &images); |
299 EXPECT_EQ(3u, images.size()); | 296 EXPECT_EQ(3u, images.size()); |
300 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); | 297 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); |
301 EXPECT_TRUE(images[1].image() == discardable_image[1][0]); | 298 EXPECT_TRUE(images[1].image() == discardable_image[1][0]); |
302 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); | 299 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); |
303 } | 300 } |
304 } | 301 } |
305 | 302 |
306 TEST(RecordingSourceTest, DiscardableImagesBaseNonDiscardable) { | 303 TEST(RecordingSourceTest, DiscardableImagesBaseNonDiscardable) { |
307 gfx::Rect recorded_viewport(0, 0, 512, 512); | 304 gfx::Rect recorded_viewport(0, 0, 512, 512); |
308 | 305 |
(...skipping 25 matching lines...) Expand all Loading... |
334 gfx::Point(260, 260)); | 331 gfx::Point(260, 260)); |
335 recording_source->SetGenerateDiscardableImagesMetadata(true); | 332 recording_source->SetGenerateDiscardableImagesMetadata(true); |
336 recording_source->Rerecord(); | 333 recording_source->Rerecord(); |
337 | 334 |
338 scoped_refptr<RasterSource> raster_source = | 335 scoped_refptr<RasterSource> raster_source = |
339 CreateRasterSource(recording_source.get()); | 336 CreateRasterSource(recording_source.get()); |
340 | 337 |
341 // Tile sized iterators. These should find only one image. | 338 // Tile sized iterators. These should find only one image. |
342 { | 339 { |
343 std::vector<DrawImage> images; | 340 std::vector<DrawImage> images; |
344 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), | 341 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 256, 256), 1.f, |
345 gfx::SizeF(1.f, 1.f), &images); | 342 &images); |
346 EXPECT_EQ(1u, images.size()); | 343 EXPECT_EQ(1u, images.size()); |
347 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); | 344 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); |
348 } | 345 } |
349 // Shifted tile sized iterators. These should find only one image. | 346 // Shifted tile sized iterators. These should find only one image. |
350 { | 347 { |
351 std::vector<DrawImage> images; | 348 std::vector<DrawImage> images; |
352 raster_source->GetDiscardableImagesInRect(gfx::Rect(260, 260, 256, 256), | 349 raster_source->GetDiscardableImagesInRect(gfx::Rect(260, 260, 256, 256), |
353 gfx::SizeF(1.f, 1.f), &images); | 350 1.f, &images); |
354 EXPECT_EQ(1u, images.size()); | 351 EXPECT_EQ(1u, images.size()); |
355 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); | 352 EXPECT_TRUE(images[0].image() == discardable_image[1][1]); |
356 } | 353 } |
357 // Ensure there's no discardable images in the empty cell | 354 // Ensure there's no discardable images in the empty cell |
358 { | 355 { |
359 std::vector<DrawImage> images; | 356 std::vector<DrawImage> images; |
360 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 256, 256, 256), | 357 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 256, 256, 256), 1.f, |
361 gfx::SizeF(1.f, 1.f), &images); | 358 &images); |
362 EXPECT_TRUE(images.empty()); | 359 EXPECT_TRUE(images.empty()); |
363 } | 360 } |
364 // Layer sized iterators. These should find three images. | 361 // Layer sized iterators. These should find three images. |
365 { | 362 { |
366 std::vector<DrawImage> images; | 363 std::vector<DrawImage> images; |
367 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 512, 512), | 364 raster_source->GetDiscardableImagesInRect(gfx::Rect(0, 0, 512, 512), 1.f, |
368 gfx::SizeF(1.f, 1.f), &images); | 365 &images); |
369 EXPECT_EQ(3u, images.size()); | 366 EXPECT_EQ(3u, images.size()); |
370 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); | 367 EXPECT_TRUE(images[0].image() == discardable_image[0][0]); |
371 EXPECT_TRUE(images[1].image() == discardable_image[0][1]); | 368 EXPECT_TRUE(images[1].image() == discardable_image[0][1]); |
372 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); | 369 EXPECT_TRUE(images[2].image() == discardable_image[1][1]); |
373 } | 370 } |
374 } | 371 } |
375 | 372 |
376 } // namespace | 373 } // namespace |
377 } // namespace cc | 374 } // namespace cc |
OLD | NEW |