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

Side by Side Diff: cc/playback/discardable_image_map_unittest.cc

Issue 2229603002: cc: Do a safe intersect when gathering images. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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 "cc/playback/discardable_image_map.h" 5 #include "cc/playback/discardable_image_map.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 DiscardableImageMap image_map; 301 DiscardableImageMap image_map;
302 { 302 {
303 DiscardableImageMap::ScopedMetadataGenerator generator(&image_map, 303 DiscardableImageMap::ScopedMetadataGenerator generator(&image_map,
304 visible_rect.size()); 304 visible_rect.size());
305 display_list->Raster(generator.canvas(), nullptr, visible_rect, 1.f); 305 display_list->Raster(generator.canvas(), nullptr, visible_rect, 1.f);
306 } 306 }
307 std::vector<PositionDrawImage> images = 307 std::vector<PositionDrawImage> images =
308 GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1)); 308 GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1));
309 EXPECT_EQ(1u, images.size()); 309 EXPECT_EQ(1u, images.size());
310 EXPECT_TRUE(images[0].image == discardable_image); 310 EXPECT_TRUE(images[0].image == discardable_image);
311 EXPECT_EQ(gfx::Rect(0, 0, 1 << 25, 1 << 25), images[0].image_rect); 311 EXPECT_EQ(gfx::Rect(0, 0, 2048, 2048), images[0].image_rect);
312 } 312 }
313 313
314 TEST_F(DiscardableImageMapTest, PaintDestroyedWhileImageIsDrawn) { 314 TEST_F(DiscardableImageMapTest, PaintDestroyedWhileImageIsDrawn) {
315 gfx::Rect visible_rect(2048, 2048); 315 gfx::Rect visible_rect(2048, 2048);
316 FakeContentLayerClient content_layer_client; 316 FakeContentLayerClient content_layer_client;
317 content_layer_client.set_bounds(visible_rect.size()); 317 content_layer_client.set_bounds(visible_rect.size());
318 318
319 sk_sp<SkImage> discardable_image = CreateDiscardableImage(gfx::Size(10, 10)); 319 sk_sp<SkImage> discardable_image = CreateDiscardableImage(gfx::Size(10, 10));
320 320
321 DiscardableImageMap image_map; 321 DiscardableImageMap image_map;
322 { 322 {
323 DiscardableImageMap::ScopedMetadataGenerator generator(&image_map, 323 DiscardableImageMap::ScopedMetadataGenerator generator(&image_map,
324 visible_rect.size()); 324 visible_rect.size());
325 { 325 {
326 std::unique_ptr<SkPaint> paint(new SkPaint()); 326 std::unique_ptr<SkPaint> paint(new SkPaint());
327 generator.canvas()->saveLayer(gfx::RectToSkRect(visible_rect), 327 generator.canvas()->saveLayer(gfx::RectToSkRect(visible_rect),
328 paint.get()); 328 paint.get());
329 } 329 }
330 generator.canvas()->drawImage(discardable_image, 0, 0, nullptr); 330 generator.canvas()->drawImage(discardable_image, 0, 0, nullptr);
331 generator.canvas()->restore(); 331 generator.canvas()->restore();
332 } 332 }
333 333
334 std::vector<PositionDrawImage> images = 334 std::vector<PositionDrawImage> images =
335 GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1)); 335 GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1));
336 EXPECT_EQ(1u, images.size()); 336 EXPECT_EQ(1u, images.size());
337 EXPECT_TRUE(images[0].image == discardable_image); 337 EXPECT_TRUE(images[0].image == discardable_image);
338 } 338 }
339 339
340 TEST_F(DiscardableImageMapTest, GetDiscardableImagesInRectMaxImage) {
341 gfx::Rect visible_rect(2048, 2048);
342 FakeContentLayerClient content_layer_client;
343 content_layer_client.set_bounds(visible_rect.size());
344
345 int dimension = std::numeric_limits<int>::max();
346 sk_sp<SkImage> discardable_image =
347 CreateDiscardableImage(gfx::Size(dimension, dimension));
348 SkPaint paint;
349 content_layer_client.add_draw_image(discardable_image, gfx::Point(42, 42),
350 paint);
351
352 scoped_refptr<DisplayItemList> display_list =
353 content_layer_client.PaintContentsToDisplayList(
354 ContentLayerClient::PAINTING_BEHAVIOR_NORMAL);
355
356 DiscardableImageMap image_map;
357 {
358 DiscardableImageMap::ScopedMetadataGenerator generator(&image_map,
359 visible_rect.size());
360 display_list->Raster(generator.canvas(), nullptr, visible_rect, 1.f);
361 }
362 std::vector<PositionDrawImage> images =
363 GetDiscardableImagesInRect(image_map, gfx::Rect(42, 42, 1, 1));
364 EXPECT_EQ(1u, images.size());
365 EXPECT_TRUE(images[0].image == discardable_image);
366 EXPECT_EQ(gfx::Rect(42, 42, 2006, 2006), images[0].image_rect);
367 }
368
340 } // namespace cc 369 } // namespace cc
OLDNEW
« cc/playback/discardable_image_map.cc ('K') | « cc/playback/discardable_image_map.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698