| 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 "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 Loading... |
| 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 |
| OLD | NEW |