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

Side by Side Diff: third_party/WebKit/Source/platform/image-decoders/ImageDecoderTest.cpp

Issue 2547053003: s/ passed(...) / WTF::passed(...) / to avoid future ambiguity w/ base::Passed. (Closed)
Patch Set: Rebasing... Created 4 years 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 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 for (size_t i = 0; i < numFrames; ++i) 63 for (size_t i = 0; i < numFrames; ++i)
64 m_frameBufferCache[i].setOriginalFrameRect(IntRect(0, 0, width, height)); 64 m_frameBufferCache[i].setOriginalFrameRect(IntRect(0, 0, width, height));
65 } 65 }
66 66
67 private: 67 private:
68 void decodeSize() override {} 68 void decodeSize() override {}
69 void decode(size_t index) override {} 69 void decode(size_t index) override {}
70 }; 70 };
71 71
72 TEST(ImageDecoderTest, sizeCalculationMayOverflow) { 72 TEST(ImageDecoderTest, sizeCalculationMayOverflow) {
73 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 73 std::unique_ptr<TestImageDecoder> decoder(
74 WTF::makeUnique<TestImageDecoder>());
74 EXPECT_FALSE(decoder->setSize(1 << 29, 1)); 75 EXPECT_FALSE(decoder->setSize(1 << 29, 1));
75 EXPECT_FALSE(decoder->setSize(1, 1 << 29)); 76 EXPECT_FALSE(decoder->setSize(1, 1 << 29));
76 EXPECT_FALSE(decoder->setSize(1 << 15, 1 << 15)); 77 EXPECT_FALSE(decoder->setSize(1 << 15, 1 << 15));
77 EXPECT_TRUE(decoder->setSize(1 << 28, 1)); 78 EXPECT_TRUE(decoder->setSize(1 << 28, 1));
78 EXPECT_TRUE(decoder->setSize(1, 1 << 28)); 79 EXPECT_TRUE(decoder->setSize(1, 1 << 28));
79 EXPECT_TRUE(decoder->setSize(1 << 14, 1 << 14)); 80 EXPECT_TRUE(decoder->setSize(1 << 14, 1 << 14));
80 } 81 }
81 82
82 TEST(ImageDecoderTest, requiredPreviousFrameIndex) { 83 TEST(ImageDecoderTest, requiredPreviousFrameIndex) {
83 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 84 std::unique_ptr<TestImageDecoder> decoder(
85 WTF::makeUnique<TestImageDecoder>());
84 decoder->initFrames(6); 86 decoder->initFrames(6);
85 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); 87 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache();
86 88
87 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeKeep); 89 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeKeep);
88 frameBuffers[2].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); 90 frameBuffers[2].setDisposalMethod(ImageFrame::DisposeOverwritePrevious);
89 frameBuffers[3].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); 91 frameBuffers[3].setDisposalMethod(ImageFrame::DisposeOverwritePrevious);
90 frameBuffers[4].setDisposalMethod(ImageFrame::DisposeKeep); 92 frameBuffers[4].setDisposalMethod(ImageFrame::DisposeKeep);
91 93
92 decoder->resetRequiredPreviousFrames(); 94 decoder->resetRequiredPreviousFrames();
93 95
94 // The first frame doesn't require any previous frame. 96 // The first frame doesn't require any previous frame.
95 EXPECT_EQ(kNotFound, frameBuffers[0].requiredPreviousFrameIndex()); 97 EXPECT_EQ(kNotFound, frameBuffers[0].requiredPreviousFrameIndex());
96 // The previous DisposeNotSpecified frame is required. 98 // The previous DisposeNotSpecified frame is required.
97 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex()); 99 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex());
98 // DisposeKeep is treated as DisposeNotSpecified. 100 // DisposeKeep is treated as DisposeNotSpecified.
99 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); 101 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex());
100 // Previous DisposeOverwritePrevious frames are skipped. 102 // Previous DisposeOverwritePrevious frames are skipped.
101 EXPECT_EQ(1u, frameBuffers[3].requiredPreviousFrameIndex()); 103 EXPECT_EQ(1u, frameBuffers[3].requiredPreviousFrameIndex());
102 EXPECT_EQ(1u, frameBuffers[4].requiredPreviousFrameIndex()); 104 EXPECT_EQ(1u, frameBuffers[4].requiredPreviousFrameIndex());
103 EXPECT_EQ(4u, frameBuffers[5].requiredPreviousFrameIndex()); 105 EXPECT_EQ(4u, frameBuffers[5].requiredPreviousFrameIndex());
104 } 106 }
105 107
106 TEST(ImageDecoderTest, requiredPreviousFrameIndexDisposeOverwriteBgcolor) { 108 TEST(ImageDecoderTest, requiredPreviousFrameIndexDisposeOverwriteBgcolor) {
107 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 109 std::unique_ptr<TestImageDecoder> decoder(
110 WTF::makeUnique<TestImageDecoder>());
108 decoder->initFrames(3); 111 decoder->initFrames(3);
109 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); 112 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache();
110 113
111 // Fully covering DisposeOverwriteBgcolor previous frame resets the starting 114 // Fully covering DisposeOverwriteBgcolor previous frame resets the starting
112 // state. 115 // state.
113 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); 116 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor);
114 decoder->resetRequiredPreviousFrames(); 117 decoder->resetRequiredPreviousFrames();
115 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); 118 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex());
116 119
117 // Partially covering DisposeOverwriteBgcolor previous frame is required by 120 // Partially covering DisposeOverwriteBgcolor previous frame is required by
118 // this frame. 121 // this frame.
119 frameBuffers[1].setOriginalFrameRect(IntRect(50, 50, 50, 50)); 122 frameBuffers[1].setOriginalFrameRect(IntRect(50, 50, 50, 50));
120 decoder->resetRequiredPreviousFrames(); 123 decoder->resetRequiredPreviousFrames();
121 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); 124 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex());
122 } 125 }
123 126
124 TEST(ImageDecoderTest, requiredPreviousFrameIndexForFrame1) { 127 TEST(ImageDecoderTest, requiredPreviousFrameIndexForFrame1) {
125 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 128 std::unique_ptr<TestImageDecoder> decoder(
129 WTF::makeUnique<TestImageDecoder>());
126 decoder->initFrames(2); 130 decoder->initFrames(2);
127 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); 131 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache();
128 132
129 decoder->resetRequiredPreviousFrames(); 133 decoder->resetRequiredPreviousFrames();
130 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex()); 134 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex());
131 135
132 // The first frame with DisposeOverwritePrevious or DisposeOverwriteBgcolor 136 // The first frame with DisposeOverwritePrevious or DisposeOverwriteBgcolor
133 // resets the starting state. 137 // resets the starting state.
134 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); 138 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious);
135 decoder->resetRequiredPreviousFrames(); 139 decoder->resetRequiredPreviousFrames();
136 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); 140 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex());
137 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); 141 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor);
138 decoder->resetRequiredPreviousFrames(); 142 decoder->resetRequiredPreviousFrames();
139 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); 143 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex());
140 144
141 // ... even if it partially covers. 145 // ... even if it partially covers.
142 frameBuffers[0].setOriginalFrameRect(IntRect(50, 50, 50, 50)); 146 frameBuffers[0].setOriginalFrameRect(IntRect(50, 50, 50, 50));
143 147
144 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); 148 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious);
145 decoder->resetRequiredPreviousFrames(); 149 decoder->resetRequiredPreviousFrames();
146 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); 150 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex());
147 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); 151 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor);
148 decoder->resetRequiredPreviousFrames(); 152 decoder->resetRequiredPreviousFrames();
149 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); 153 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex());
150 } 154 }
151 155
152 TEST(ImageDecoderTest, requiredPreviousFrameIndexBlendAtopBgcolor) { 156 TEST(ImageDecoderTest, requiredPreviousFrameIndexBlendAtopBgcolor) {
153 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 157 std::unique_ptr<TestImageDecoder> decoder(
158 WTF::makeUnique<TestImageDecoder>());
154 decoder->initFrames(3); 159 decoder->initFrames(3);
155 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); 160 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache();
156 161
157 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); 162 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50));
158 frameBuffers[2].setAlphaBlendSource(ImageFrame::BlendAtopBgcolor); 163 frameBuffers[2].setAlphaBlendSource(ImageFrame::BlendAtopBgcolor);
159 164
160 // A full frame with 'blending method == BlendAtopBgcolor' doesn't depend on 165 // A full frame with 'blending method == BlendAtopBgcolor' doesn't depend on
161 // any prior frames. 166 // any prior frames.
162 for (int disposeMethod = ImageFrame::DisposeNotSpecified; 167 for (int disposeMethod = ImageFrame::DisposeNotSpecified;
163 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { 168 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) {
164 frameBuffers[1].setDisposalMethod( 169 frameBuffers[1].setDisposalMethod(
165 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); 170 static_cast<ImageFrame::DisposalMethod>(disposeMethod));
166 decoder->resetRequiredPreviousFrames(); 171 decoder->resetRequiredPreviousFrames();
167 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); 172 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex());
168 } 173 }
169 174
170 // A non-full frame with 'blending method == BlendAtopBgcolor' does depend on 175 // A non-full frame with 'blending method == BlendAtopBgcolor' does depend on
171 // a prior frame. 176 // a prior frame.
172 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); 177 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50));
173 for (int disposeMethod = ImageFrame::DisposeNotSpecified; 178 for (int disposeMethod = ImageFrame::DisposeNotSpecified;
174 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { 179 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) {
175 frameBuffers[1].setDisposalMethod( 180 frameBuffers[1].setDisposalMethod(
176 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); 181 static_cast<ImageFrame::DisposalMethod>(disposeMethod));
177 decoder->resetRequiredPreviousFrames(); 182 decoder->resetRequiredPreviousFrames();
178 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); 183 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex());
179 } 184 }
180 } 185 }
181 186
182 TEST(ImageDecoderTest, requiredPreviousFrameIndexKnownOpaque) { 187 TEST(ImageDecoderTest, requiredPreviousFrameIndexKnownOpaque) {
183 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 188 std::unique_ptr<TestImageDecoder> decoder(
189 WTF::makeUnique<TestImageDecoder>());
184 decoder->initFrames(3); 190 decoder->initFrames(3);
185 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); 191 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache();
186 192
187 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); 193 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50));
188 194
189 // A full frame that is known to be opaque doesn't depend on any prior frames. 195 // A full frame that is known to be opaque doesn't depend on any prior frames.
190 for (int disposeMethod = ImageFrame::DisposeNotSpecified; 196 for (int disposeMethod = ImageFrame::DisposeNotSpecified;
191 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { 197 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) {
192 frameBuffers[1].setDisposalMethod( 198 frameBuffers[1].setDisposalMethod(
193 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); 199 static_cast<ImageFrame::DisposalMethod>(disposeMethod));
194 decoder->resetRequiredPreviousFrames(true); 200 decoder->resetRequiredPreviousFrames(true);
195 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); 201 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex());
196 } 202 }
197 203
198 // A non-full frame that is known to be opaque does depend on a prior frame. 204 // A non-full frame that is known to be opaque does depend on a prior frame.
199 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); 205 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50));
200 for (int disposeMethod = ImageFrame::DisposeNotSpecified; 206 for (int disposeMethod = ImageFrame::DisposeNotSpecified;
201 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { 207 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) {
202 frameBuffers[1].setDisposalMethod( 208 frameBuffers[1].setDisposalMethod(
203 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); 209 static_cast<ImageFrame::DisposalMethod>(disposeMethod));
204 decoder->resetRequiredPreviousFrames(true); 210 decoder->resetRequiredPreviousFrames(true);
205 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); 211 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex());
206 } 212 }
207 } 213 }
208 214
209 TEST(ImageDecoderTest, clearCacheExceptFrameDoNothing) { 215 TEST(ImageDecoderTest, clearCacheExceptFrameDoNothing) {
210 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 216 std::unique_ptr<TestImageDecoder> decoder(
217 WTF::makeUnique<TestImageDecoder>());
211 decoder->clearCacheExceptFrame(0); 218 decoder->clearCacheExceptFrame(0);
212 219
213 // This should not crash. 220 // This should not crash.
214 decoder->initFrames(20); 221 decoder->initFrames(20);
215 decoder->clearCacheExceptFrame(kNotFound); 222 decoder->clearCacheExceptFrame(kNotFound);
216 } 223 }
217 224
218 TEST(ImageDecoderTest, clearCacheExceptFrameAll) { 225 TEST(ImageDecoderTest, clearCacheExceptFrameAll) {
219 const size_t numFrames = 10; 226 const size_t numFrames = 10;
220 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 227 std::unique_ptr<TestImageDecoder> decoder(
228 WTF::makeUnique<TestImageDecoder>());
221 decoder->initFrames(numFrames); 229 decoder->initFrames(numFrames);
222 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); 230 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache();
223 for (size_t i = 0; i < numFrames; ++i) 231 for (size_t i = 0; i < numFrames; ++i)
224 frameBuffers[i].setStatus(i % 2 ? ImageFrame::FramePartial 232 frameBuffers[i].setStatus(i % 2 ? ImageFrame::FramePartial
225 : ImageFrame::FrameComplete); 233 : ImageFrame::FrameComplete);
226 234
227 decoder->clearCacheExceptFrame(kNotFound); 235 decoder->clearCacheExceptFrame(kNotFound);
228 236
229 for (size_t i = 0; i < numFrames; ++i) { 237 for (size_t i = 0; i < numFrames; ++i) {
230 SCOPED_TRACE(testing::Message() << i); 238 SCOPED_TRACE(testing::Message() << i);
231 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); 239 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus());
232 } 240 }
233 } 241 }
234 242
235 TEST(ImageDecoderTest, clearCacheExceptFramePreverveClearExceptFrame) { 243 TEST(ImageDecoderTest, clearCacheExceptFramePreverveClearExceptFrame) {
236 const size_t numFrames = 10; 244 const size_t numFrames = 10;
237 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); 245 std::unique_ptr<TestImageDecoder> decoder(
246 WTF::makeUnique<TestImageDecoder>());
238 decoder->initFrames(numFrames); 247 decoder->initFrames(numFrames);
239 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); 248 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache();
240 for (size_t i = 0; i < numFrames; ++i) 249 for (size_t i = 0; i < numFrames; ++i)
241 frameBuffers[i].setStatus(ImageFrame::FrameComplete); 250 frameBuffers[i].setStatus(ImageFrame::FrameComplete);
242 251
243 decoder->resetRequiredPreviousFrames(); 252 decoder->resetRequiredPreviousFrames();
244 decoder->clearCacheExceptFrame(5); 253 decoder->clearCacheExceptFrame(5);
245 for (size_t i = 0; i < numFrames; ++i) { 254 for (size_t i = 0; i < numFrames; ++i) {
246 SCOPED_TRACE(testing::Message() << i); 255 SCOPED_TRACE(testing::Message() << i);
247 if (i == 5) 256 if (i == 5)
248 EXPECT_EQ(ImageFrame::FrameComplete, frameBuffers[i].getStatus()); 257 EXPECT_EQ(ImageFrame::FrameComplete, frameBuffers[i].getStatus());
249 else 258 else
250 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); 259 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus());
251 } 260 }
252 } 261 }
253 262
254 } // namespace blink 263 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698