OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 19 matching lines...) Expand all Loading... |
30 #include "testing/gtest/include/gtest/gtest.h" | 30 #include "testing/gtest/include/gtest/gtest.h" |
31 #include <memory> | 31 #include <memory> |
32 | 32 |
33 namespace blink { | 33 namespace blink { |
34 | 34 |
35 class ImageDecodingStoreTest : public ::testing::Test, | 35 class ImageDecodingStoreTest : public ::testing::Test, |
36 public MockImageDecoderClient { | 36 public MockImageDecoderClient { |
37 public: | 37 public: |
38 void SetUp() override { | 38 void SetUp() override { |
39 ImageDecodingStore::instance().setCacheLimitInBytes(1024 * 1024); | 39 ImageDecodingStore::instance().setCacheLimitInBytes(1024 * 1024); |
40 m_generator = ImageFrameGenerator::create(SkISize::Make(100, 100), true, | 40 m_generator = ImageFrameGenerator::create( |
41 ColorBehavior::ignore()); | 41 SkImageInfo::MakeN32Premul(100, 100), true, ColorBehavior::ignore()); |
42 m_decodersDestroyed = 0; | 42 m_decodersDestroyed = 0; |
43 } | 43 } |
44 | 44 |
45 void TearDown() override { ImageDecodingStore::instance().clear(); } | 45 void TearDown() override { ImageDecodingStore::instance().clear(); } |
46 | 46 |
47 void decoderBeingDestroyed() override { ++m_decodersDestroyed; } | 47 void decoderBeingDestroyed() override { ++m_decodersDestroyed; } |
48 | 48 |
49 void decodeRequested() override { | 49 void decodeRequested() override { |
50 // Decoder is never used by ImageDecodingStore. | 50 // Decoder is never used by ImageDecodingStore. |
51 ASSERT_TRUE(false); | 51 ASSERT_TRUE(false); |
(...skipping 24 matching lines...) Expand all Loading... |
76 const SkISize size = SkISize::Make(1, 1); | 76 const SkISize size = SkISize::Make(1, 1); |
77 std::unique_ptr<ImageDecoder> decoder = MockImageDecoder::create(this); | 77 std::unique_ptr<ImageDecoder> decoder = MockImageDecoder::create(this); |
78 decoder->setSize(1, 1); | 78 decoder->setSize(1, 1); |
79 const ImageDecoder* refDecoder = decoder.get(); | 79 const ImageDecoder* refDecoder = decoder.get(); |
80 ImageDecodingStore::instance().insertDecoder(m_generator.get(), | 80 ImageDecodingStore::instance().insertDecoder(m_generator.get(), |
81 std::move(decoder)); | 81 std::move(decoder)); |
82 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); | 82 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); |
83 EXPECT_EQ(4u, ImageDecodingStore::instance().memoryUsageInBytes()); | 83 EXPECT_EQ(4u, ImageDecodingStore::instance().memoryUsageInBytes()); |
84 | 84 |
85 ImageDecoder* testDecoder; | 85 ImageDecoder* testDecoder; |
86 EXPECT_TRUE(ImageDecodingStore::instance().lockDecoder(m_generator.get(), | 86 EXPECT_TRUE(ImageDecodingStore::instance().lockDecoder( |
87 size, &testDecoder)); | 87 m_generator.get(), size, ImageDecoder::AlphaPremultiplied, &testDecoder)); |
88 EXPECT_TRUE(testDecoder); | 88 EXPECT_TRUE(testDecoder); |
89 EXPECT_EQ(refDecoder, testDecoder); | 89 EXPECT_EQ(refDecoder, testDecoder); |
90 ImageDecodingStore::instance().unlockDecoder(m_generator.get(), testDecoder); | 90 ImageDecodingStore::instance().unlockDecoder(m_generator.get(), testDecoder); |
91 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); | 91 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); |
92 } | 92 } |
93 | 93 |
94 TEST_F(ImageDecodingStoreTest, evictDecoder) { | 94 TEST_F(ImageDecodingStoreTest, evictDecoder) { |
95 std::unique_ptr<ImageDecoder> decoder1 = MockImageDecoder::create(this); | 95 std::unique_ptr<ImageDecoder> decoder1 = MockImageDecoder::create(this); |
96 std::unique_ptr<ImageDecoder> decoder2 = MockImageDecoder::create(this); | 96 std::unique_ptr<ImageDecoder> decoder2 = MockImageDecoder::create(this); |
97 std::unique_ptr<ImageDecoder> decoder3 = MockImageDecoder::create(this); | 97 std::unique_ptr<ImageDecoder> decoder3 = MockImageDecoder::create(this); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 ImageDecodingStore::instance().insertDecoder(m_generator.get(), | 130 ImageDecodingStore::instance().insertDecoder(m_generator.get(), |
131 std::move(decoder1)); | 131 std::move(decoder1)); |
132 ImageDecodingStore::instance().insertDecoder(m_generator.get(), | 132 ImageDecodingStore::instance().insertDecoder(m_generator.get(), |
133 std::move(decoder2)); | 133 std::move(decoder2)); |
134 ImageDecodingStore::instance().insertDecoder(m_generator.get(), | 134 ImageDecodingStore::instance().insertDecoder(m_generator.get(), |
135 std::move(decoder3)); | 135 std::move(decoder3)); |
136 EXPECT_EQ(3, ImageDecodingStore::instance().cacheEntries()); | 136 EXPECT_EQ(3, ImageDecodingStore::instance().cacheEntries()); |
137 | 137 |
138 ImageDecoder* testDecoder; | 138 ImageDecoder* testDecoder; |
139 EXPECT_TRUE(ImageDecodingStore::instance().lockDecoder( | 139 EXPECT_TRUE(ImageDecodingStore::instance().lockDecoder( |
140 m_generator.get(), SkISize::Make(2, 2), &testDecoder)); | 140 m_generator.get(), SkISize::Make(2, 2), ImageDecoder::AlphaPremultiplied, |
| 141 &testDecoder)); |
141 | 142 |
142 evictOneCache(); | 143 evictOneCache(); |
143 evictOneCache(); | 144 evictOneCache(); |
144 evictOneCache(); | 145 evictOneCache(); |
145 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); | 146 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); |
146 EXPECT_EQ(16u, ImageDecodingStore::instance().memoryUsageInBytes()); | 147 EXPECT_EQ(16u, ImageDecodingStore::instance().memoryUsageInBytes()); |
147 | 148 |
148 ImageDecodingStore::instance().unlockDecoder(m_generator.get(), testDecoder); | 149 ImageDecodingStore::instance().unlockDecoder(m_generator.get(), testDecoder); |
149 evictOneCache(); | 150 evictOneCache(); |
150 EXPECT_FALSE(ImageDecodingStore::instance().cacheEntries()); | 151 EXPECT_FALSE(ImageDecodingStore::instance().cacheEntries()); |
151 EXPECT_FALSE(ImageDecodingStore::instance().memoryUsageInBytes()); | 152 EXPECT_FALSE(ImageDecodingStore::instance().memoryUsageInBytes()); |
152 } | 153 } |
153 | 154 |
154 TEST_F(ImageDecodingStoreTest, removeDecoder) { | 155 TEST_F(ImageDecodingStoreTest, removeDecoder) { |
155 const SkISize size = SkISize::Make(1, 1); | 156 const SkISize size = SkISize::Make(1, 1); |
156 std::unique_ptr<ImageDecoder> decoder = MockImageDecoder::create(this); | 157 std::unique_ptr<ImageDecoder> decoder = MockImageDecoder::create(this); |
157 decoder->setSize(1, 1); | 158 decoder->setSize(1, 1); |
158 const ImageDecoder* refDecoder = decoder.get(); | 159 const ImageDecoder* refDecoder = decoder.get(); |
159 ImageDecodingStore::instance().insertDecoder(m_generator.get(), | 160 ImageDecodingStore::instance().insertDecoder(m_generator.get(), |
160 std::move(decoder)); | 161 std::move(decoder)); |
161 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); | 162 EXPECT_EQ(1, ImageDecodingStore::instance().cacheEntries()); |
162 EXPECT_EQ(4u, ImageDecodingStore::instance().memoryUsageInBytes()); | 163 EXPECT_EQ(4u, ImageDecodingStore::instance().memoryUsageInBytes()); |
163 | 164 |
164 ImageDecoder* testDecoder; | 165 ImageDecoder* testDecoder; |
165 EXPECT_TRUE(ImageDecodingStore::instance().lockDecoder(m_generator.get(), | 166 EXPECT_TRUE(ImageDecodingStore::instance().lockDecoder( |
166 size, &testDecoder)); | 167 m_generator.get(), size, ImageDecoder::AlphaPremultiplied, &testDecoder)); |
167 EXPECT_TRUE(testDecoder); | 168 EXPECT_TRUE(testDecoder); |
168 EXPECT_EQ(refDecoder, testDecoder); | 169 EXPECT_EQ(refDecoder, testDecoder); |
169 ImageDecodingStore::instance().removeDecoder(m_generator.get(), testDecoder); | 170 ImageDecodingStore::instance().removeDecoder(m_generator.get(), testDecoder); |
170 EXPECT_FALSE(ImageDecodingStore::instance().cacheEntries()); | 171 EXPECT_FALSE(ImageDecodingStore::instance().cacheEntries()); |
171 | 172 |
172 EXPECT_FALSE(ImageDecodingStore::instance().lockDecoder(m_generator.get(), | 173 EXPECT_FALSE(ImageDecodingStore::instance().lockDecoder( |
173 size, &testDecoder)); | 174 m_generator.get(), size, ImageDecoder::AlphaPremultiplied, &testDecoder)); |
174 } | 175 } |
175 | 176 |
176 } // namespace blink | 177 } // namespace blink |
OLD | NEW |