Index: cc/tiles/gpu_image_decode_cache_unittest.cc |
diff --git a/cc/tiles/gpu_image_decode_cache_unittest.cc b/cc/tiles/gpu_image_decode_cache_unittest.cc |
index d46fa18a461bf426c8d5d5195800bbe5ca2c6a23..1bedc63ad86fc0dac2c26048f0c0f35274b6f4a5 100644 |
--- a/cc/tiles/gpu_image_decode_cache_unittest.cc |
+++ b/cc/tiles/gpu_image_decode_cache_unittest.cc |
@@ -1714,5 +1714,42 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageDifferentColorSpace) { |
cache.UnrefImage(third_draw_image); |
} |
+TEST(GpuImageDecodeCacheTest, RemoveUnusedImage) { |
ericrk
2017/06/19 17:09:30
Not needed right now, but I wonder if we should mo
sohan
2017/06/20 13:31:39
If we remove this test for future, we are essentia
ericrk
2017/06/20 16:06:05
SGTM, thanks
|
+ auto context_provider = TestContextProvider::Create(); |
+ context_provider->BindToCurrentThread(); |
+ TestGpuImageDecodeCache cache(context_provider.get()); |
+ bool is_decomposable = true; |
+ SkFilterQuality quality = kHigh_SkFilterQuality; |
+ std::vector<uint32_t> unique_ids(10); |
+ |
+ for (int i = 0; i < 10; ++i) { |
+ sk_sp<SkImage> image = CreateImage(100, 100); |
+ unique_ids[i] = image->uniqueID(); |
+ DrawImage draw_image( |
+ CreatePaintImage(image), |
+ SkIRect::MakeWH(image->width(), image->height()), quality, |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
+ scoped_refptr<TileTask> task; |
+ bool need_unref = cache.GetTaskForImageAndRef( |
+ draw_image, ImageDecodeCache::TracingInfo(), &task); |
+ EXPECT_TRUE(need_unref); |
+ EXPECT_TRUE(task); |
+ TestTileTaskRunner::ProcessTask(task->dependencies()[0].get()); |
+ TestTileTaskRunner::ProcessTask(task.get()); |
+ cache.UnrefImage(draw_image); |
+ } |
+ |
+ // We should now have data image in our cache. |
+ EXPECT_GT(cache.GetBytesUsedForTesting(), 0u); |
+ EXPECT_EQ(cache.GetNumCacheEntriesForTesting(), 10u); |
+ |
+ // Remove unused ids. |
+ for (uint32_t i = 0; i < 10; ++i) { |
+ cache.NotifyImageUnused(unique_ids[i]); |
+ EXPECT_EQ(cache.GetNumCacheEntriesForTesting(), (10 - i - 1)); |
+ } |
+} |
+ |
} // namespace |
} // namespace cc |