Chromium Code Reviews| Index: cc/playback/discardable_image_map_unittest.cc |
| diff --git a/cc/playback/discardable_image_map_unittest.cc b/cc/playback/discardable_image_map_unittest.cc |
| index 6510939f7d1ad407281c330148b64d9edc0a4353..ea2ad245d296b50da52d81d2818b7fc2455833af 100644 |
| --- a/cc/playback/discardable_image_map_unittest.cc |
| +++ b/cc/playback/discardable_image_map_unittest.cc |
| @@ -308,7 +308,7 @@ TEST_F(DiscardableImageMapTest, GetDiscardableImagesInRectMassiveImage) { |
| GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1)); |
| EXPECT_EQ(1u, images.size()); |
| EXPECT_TRUE(images[0].image == discardable_image); |
| - EXPECT_EQ(gfx::Rect(0, 0, 1 << 25, 1 << 25), images[0].image_rect); |
| + EXPECT_EQ(gfx::Rect(0, 0, 2048, 2048), images[0].image_rect); |
| } |
| TEST_F(DiscardableImageMapTest, PaintDestroyedWhileImageIsDrawn) { |
| @@ -337,4 +337,120 @@ TEST_F(DiscardableImageMapTest, PaintDestroyedWhileImageIsDrawn) { |
| EXPECT_TRUE(images[0].image == discardable_image); |
| } |
| +TEST_F(DiscardableImageMapTest, GetDiscardableImagesInRectMaxImage) { |
| + gfx::Rect visible_rect(2048, 2048); |
| + FakeContentLayerClient content_layer_client; |
| + content_layer_client.set_bounds(visible_rect.size()); |
| + |
| + int dimension = std::numeric_limits<int>::max(); |
| + sk_sp<SkImage> discardable_image = |
| + CreateDiscardableImage(gfx::Size(dimension, dimension)); |
| + SkPaint paint; |
| + content_layer_client.add_draw_image(discardable_image, gfx::Point(42, 42), |
| + paint); |
| + |
| + scoped_refptr<DisplayItemList> display_list = |
| + content_layer_client.PaintContentsToDisplayList( |
| + ContentLayerClient::PAINTING_BEHAVIOR_NORMAL); |
| + |
| + DiscardableImageMap image_map; |
| + { |
| + DiscardableImageMap::ScopedMetadataGenerator generator(&image_map, |
| + visible_rect.size()); |
| + display_list->Raster(generator.canvas(), nullptr, visible_rect, 1.f); |
| + } |
| + std::vector<PositionDrawImage> images = |
| + GetDiscardableImagesInRect(image_map, gfx::Rect(42, 42, 1, 1)); |
| + EXPECT_EQ(1u, images.size()); |
| + EXPECT_TRUE(images[0].image == discardable_image); |
| + EXPECT_EQ(gfx::Rect(42, 42, 2006, 2006), images[0].image_rect); |
| +} |
| + |
| +TEST_F(DiscardableImageMapTest, GetDiscardableImagesInRectMaxImageMaxLayer) { |
| + int dimension = static_cast<int>( |
| + static_cast<float>(std::numeric_limits<int>::max() - 64)); |
|
enne (OOO)
2016/08/10 00:07:12
This really needs a comment.
vmpstr
2016/08/10 19:19:39
Done.
|
| + gfx::Rect visible_rect(dimension, dimension); |
| + FakeContentLayerClient content_layer_client; |
| + content_layer_client.set_bounds(visible_rect.size()); |
| + |
| + sk_sp<SkImage> discardable_image = |
| + CreateDiscardableImage(gfx::Size(dimension, dimension)); |
| + SkPaint paint; |
| + content_layer_client.add_draw_image(discardable_image, gfx::Point(0, 0), |
| + paint); |
| + content_layer_client.add_draw_image(discardable_image, gfx::Point(10000, 0), |
| + paint); |
| + content_layer_client.add_draw_image(discardable_image, |
| + gfx::Point(-10000, 500), paint); |
| + |
| + scoped_refptr<DisplayItemList> display_list = |
| + content_layer_client.PaintContentsToDisplayList( |
| + ContentLayerClient::PAINTING_BEHAVIOR_NORMAL); |
| + |
| + DiscardableImageMap image_map; |
| + { |
| + DiscardableImageMap::ScopedMetadataGenerator generator(&image_map, |
| + visible_rect.size()); |
| + display_list->Raster(generator.canvas(), nullptr, visible_rect, 1.f); |
| + } |
| + std::vector<PositionDrawImage> images = |
| + GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1)); |
| + EXPECT_EQ(1u, images.size()); |
| + EXPECT_EQ(gfx::Rect(0, 0, dimension, dimension), images[0].image_rect); |
| + |
| + images = GetDiscardableImagesInRect(image_map, gfx::Rect(10000, 0, 1, 1)); |
| + EXPECT_EQ(2u, images.size()); |
| + int expected10k = static_cast<int>(static_cast<float>(dimension - 10000)); |
| + int expected500 = static_cast<int>(static_cast<float>(dimension - 500)); |
| + EXPECT_EQ(gfx::Rect(10000, 0, expected10k, dimension), images[1].image_rect); |
| + EXPECT_EQ(gfx::Rect(0, 0, dimension, dimension), images[0].image_rect); |
| + |
| + images = GetDiscardableImagesInRect(image_map, gfx::Rect(0, 500, 1, 1)); |
| + EXPECT_EQ(2u, images.size()); |
| + EXPECT_EQ(gfx::Rect(0, 500, expected10k, expected500), images[1].image_rect); |
| + EXPECT_EQ(gfx::Rect(0, 0, dimension, dimension), images[0].image_rect); |
| +} |
| + |
| +TEST_F(DiscardableImageMapTest, GetDiscardableImagesRectInBounds) { |
| + gfx::Rect visible_rect(1000, 1000); |
| + FakeContentLayerClient content_layer_client; |
| + content_layer_client.set_bounds(visible_rect.size()); |
| + |
| + sk_sp<SkImage> discardable_image = |
| + CreateDiscardableImage(gfx::Size(100, 100)); |
| + sk_sp<SkImage> long_discardable_image = |
| + CreateDiscardableImage(gfx::Size(10000, 100)); |
| + |
| + SkPaint paint; |
| + content_layer_client.add_draw_image(discardable_image, gfx::Point(-10, -11), |
| + paint); |
| + content_layer_client.add_draw_image(discardable_image, gfx::Point(950, 951), |
| + paint); |
| + content_layer_client.add_draw_image(long_discardable_image, |
| + gfx::Point(-100, 500), paint); |
| + |
| + scoped_refptr<DisplayItemList> display_list = |
| + content_layer_client.PaintContentsToDisplayList( |
| + ContentLayerClient::PAINTING_BEHAVIOR_NORMAL); |
| + |
| + DiscardableImageMap image_map; |
| + { |
| + DiscardableImageMap::ScopedMetadataGenerator generator(&image_map, |
| + visible_rect.size()); |
| + display_list->Raster(generator.canvas(), nullptr, visible_rect, 1.f); |
| + } |
| + std::vector<PositionDrawImage> images = |
| + GetDiscardableImagesInRect(image_map, gfx::Rect(0, 0, 1, 1)); |
| + EXPECT_EQ(1u, images.size()); |
| + EXPECT_EQ(gfx::Rect(0, 0, 90, 89), images[0].image_rect); |
| + |
| + images = GetDiscardableImagesInRect(image_map, gfx::Rect(999, 999, 1, 1)); |
| + EXPECT_EQ(1u, images.size()); |
| + EXPECT_EQ(gfx::Rect(950, 951, 50, 49), images[0].image_rect); |
| + |
| + images = GetDiscardableImagesInRect(image_map, gfx::Rect(0, 500, 1, 1)); |
| + EXPECT_EQ(1u, images.size()); |
| + EXPECT_EQ(gfx::Rect(0, 500, 1000, 100), images[0].image_rect); |
| +} |
| + |
| } // namespace cc |