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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/DeferredImageDecoderTest.cpp

Issue 2257513002: Refactor ImageDecoder factories (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 4 years, 4 months 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) 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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 RefPtr<SharedBuffer> m_data; 168 RefPtr<SharedBuffer> m_data;
169 size_t m_frameCount; 169 size_t m_frameCount;
170 int m_repetitionCount; 170 int m_repetitionCount;
171 ImageFrame::Status m_status; 171 ImageFrame::Status m_status;
172 float m_frameDuration; 172 float m_frameDuration;
173 IntSize m_decodedSize; 173 IntSize m_decodedSize;
174 }; 174 };
175 175
176 TEST_F(DeferredImageDecoderTest, drawIntoSkPicture) 176 TEST_F(DeferredImageDecoderTest, drawIntoSkPicture)
177 { 177 {
178 m_lazyDecoder->setData(*m_data, true); 178 m_lazyDecoder->setData(m_data, true);
179 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 179 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
180 ASSERT_TRUE(image); 180 ASSERT_TRUE(image);
181 EXPECT_EQ(1, image->width()); 181 EXPECT_EQ(1, image->width());
182 EXPECT_EQ(1, image->height()); 182 EXPECT_EQ(1, image->height());
183 183
184 SkPictureRecorder recorder; 184 SkPictureRecorder recorder;
185 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 185 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
186 tempCanvas->drawImage(image.get(), 0, 0); 186 tempCanvas->drawImage(image.get(), 0, 0);
187 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); 187 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
188 EXPECT_EQ(0, m_decodeRequestCount); 188 EXPECT_EQ(0, m_decodeRequestCount);
189 189
190 m_surface->getCanvas()->drawPicture(picture); 190 m_surface->getCanvas()->drawPicture(picture);
191 EXPECT_EQ(0, m_decodeRequestCount); 191 EXPECT_EQ(0, m_decodeRequestCount);
192 192
193 SkBitmap canvasBitmap; 193 SkBitmap canvasBitmap;
194 canvasBitmap.allocN32Pixels(100, 100); 194 canvasBitmap.allocN32Pixels(100, 100);
195 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); 195 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0));
196 SkAutoLockPixels autoLock(canvasBitmap); 196 SkAutoLockPixels autoLock(canvasBitmap);
197 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); 197 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0));
198 } 198 }
199 199
200 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive) 200 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive)
201 { 201 {
202 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da ta->size() - 10); 202 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da ta->size() - 10);
203 203
204 // Received only half the file. 204 // Received only half the file.
205 m_lazyDecoder->setData(*partialData, false); 205 m_lazyDecoder->setData(partialData, false);
206 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 206 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
207 ASSERT_TRUE(image); 207 ASSERT_TRUE(image);
208 SkPictureRecorder recorder; 208 SkPictureRecorder recorder;
209 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 209 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
210 tempCanvas->drawImage(image.get(), 0, 0); 210 tempCanvas->drawImage(image.get(), 0, 0);
211 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); 211 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture());
212 212
213 // Fully received the file and draw the SkPicture again. 213 // Fully received the file and draw the SkPicture again.
214 m_lazyDecoder->setData(*m_data, true); 214 m_lazyDecoder->setData(m_data, true);
215 image = m_lazyDecoder->createFrameAtIndex(0); 215 image = m_lazyDecoder->createFrameAtIndex(0);
216 ASSERT_TRUE(image); 216 ASSERT_TRUE(image);
217 tempCanvas = recorder.beginRecording(100, 100, 0, 0); 217 tempCanvas = recorder.beginRecording(100, 100, 0, 0);
218 tempCanvas->drawImage(image.get(), 0, 0); 218 tempCanvas->drawImage(image.get(), 0, 0);
219 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); 219 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture());
220 220
221 SkBitmap canvasBitmap; 221 SkBitmap canvasBitmap;
222 canvasBitmap.allocN32Pixels(100, 100); 222 canvasBitmap.allocN32Pixels(100, 100);
223 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); 223 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0));
224 SkAutoLockPixels autoLock(canvasBitmap); 224 SkAutoLockPixels autoLock(canvasBitmap);
225 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); 225 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0));
226 } 226 }
227 227
228 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture) 228 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture)
229 { 229 {
230 canvas->drawPicture(picture); 230 canvas->drawPicture(picture);
231 } 231 }
232 232
233 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) 233 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread)
234 { 234 {
235 m_lazyDecoder->setData(*m_data, true); 235 m_lazyDecoder->setData(m_data, true);
236 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 236 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
237 ASSERT_TRUE(image); 237 ASSERT_TRUE(image);
238 EXPECT_EQ(1, image->width()); 238 EXPECT_EQ(1, image->width());
239 EXPECT_EQ(1, image->height()); 239 EXPECT_EQ(1, image->height());
240 240
241 SkPictureRecorder recorder; 241 SkPictureRecorder recorder;
242 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 242 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
243 tempCanvas->drawImage(image.get(), 0, 0); 243 tempCanvas->drawImage(image.get(), 0, 0);
244 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); 244 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
245 EXPECT_EQ(0, m_decodeRequestCount); 245 EXPECT_EQ(0, m_decodeRequestCount);
246 246
247 // Create a thread to rasterize SkPicture. 247 // Create a thread to rasterize SkPicture.
248 std::unique_ptr<WebThread> thread = wrapUnique(Platform::current()->createTh read("RasterThread")); 248 std::unique_ptr<WebThread> thread = wrapUnique(Platform::current()->createTh read("RasterThread"));
249 thread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, crossThreadBind(&raste rizeMain, crossThreadUnretained(m_surface->getCanvas()), crossThreadUnretained(p icture.get()))); 249 thread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, crossThreadBind(&raste rizeMain, crossThreadUnretained(m_surface->getCanvas()), crossThreadUnretained(p icture.get())));
250 thread.reset(); 250 thread.reset();
251 EXPECT_EQ(0, m_decodeRequestCount); 251 EXPECT_EQ(0, m_decodeRequestCount);
252 252
253 SkBitmap canvasBitmap; 253 SkBitmap canvasBitmap;
254 canvasBitmap.allocN32Pixels(100, 100); 254 canvasBitmap.allocN32Pixels(100, 100);
255 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); 255 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0));
256 SkAutoLockPixels autoLock(canvasBitmap); 256 SkAutoLockPixels autoLock(canvasBitmap);
257 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); 257 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0));
258 } 258 }
259 259
260 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading) 260 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading)
261 { 261 {
262 m_status = ImageFrame::FramePartial; 262 m_status = ImageFrame::FramePartial;
263 m_lazyDecoder->setData(*m_data, false); 263 m_lazyDecoder->setData(m_data, false);
264 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 264 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0));
265 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 265 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
266 ASSERT_TRUE(image); 266 ASSERT_TRUE(image);
267 unsigned firstId = image->uniqueID(); 267 unsigned firstId = image->uniqueID();
268 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 268 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0));
269 EXPECT_TRUE(m_actualDecoder); 269 EXPECT_TRUE(m_actualDecoder);
270 270
271 m_status = ImageFrame::FrameComplete; 271 m_status = ImageFrame::FrameComplete;
272 m_data->append(" ", 1u); 272 m_data->append(" ", 1u);
273 m_lazyDecoder->setData(*m_data, true); 273 m_lazyDecoder->setData(m_data, true);
274 EXPECT_FALSE(m_actualDecoder); 274 EXPECT_FALSE(m_actualDecoder);
275 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 275 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0));
276 276
277 image = m_lazyDecoder->createFrameAtIndex(0); 277 image = m_lazyDecoder->createFrameAtIndex(0);
278 ASSERT_TRUE(image); 278 ASSERT_TRUE(image);
279 unsigned secondId = image->uniqueID(); 279 unsigned secondId = image->uniqueID();
280 EXPECT_FALSE(m_decodeRequestCount); 280 EXPECT_FALSE(m_decodeRequestCount);
281 EXPECT_NE(firstId, secondId); 281 EXPECT_NE(firstId, secondId);
282 } 282 }
283 283
284 TEST_F(DeferredImageDecoderTest, multiFrameImageLoading) 284 TEST_F(DeferredImageDecoderTest, multiFrameImageLoading)
285 { 285 {
286 m_repetitionCount = 10; 286 m_repetitionCount = 10;
287 m_frameCount = 1; 287 m_frameCount = 1;
288 m_frameDuration = 10; 288 m_frameDuration = 10;
289 m_status = ImageFrame::FramePartial; 289 m_status = ImageFrame::FramePartial;
290 m_lazyDecoder->setData(*m_data, false); 290 m_lazyDecoder->setData(m_data, false);
291 291
292 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 292 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
293 ASSERT_TRUE(image); 293 ASSERT_TRUE(image);
294 unsigned firstId = image->uniqueID(); 294 unsigned firstId = image->uniqueID();
295 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 295 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0));
296 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0)); 296 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0));
297 297
298 m_frameCount = 2; 298 m_frameCount = 2;
299 m_frameDuration = 20; 299 m_frameDuration = 20;
300 m_status = ImageFrame::FrameComplete; 300 m_status = ImageFrame::FrameComplete;
301 m_data->append(" ", 1u); 301 m_data->append(" ", 1u);
302 m_lazyDecoder->setData(*m_data, false); 302 m_lazyDecoder->setData(m_data, false);
303 303
304 image = m_lazyDecoder->createFrameAtIndex(0); 304 image = m_lazyDecoder->createFrameAtIndex(0);
305 ASSERT_TRUE(image); 305 ASSERT_TRUE(image);
306 unsigned secondId = image->uniqueID(); 306 unsigned secondId = image->uniqueID();
307 EXPECT_NE(firstId, secondId); 307 EXPECT_NE(firstId, secondId);
308 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 308 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0));
309 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1)); 309 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1));
310 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1)); 310 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1));
311 EXPECT_TRUE(m_actualDecoder); 311 EXPECT_TRUE(m_actualDecoder);
312 312
313 m_frameCount = 3; 313 m_frameCount = 3;
314 m_frameDuration = 30; 314 m_frameDuration = 30;
315 m_status = ImageFrame::FrameComplete; 315 m_status = ImageFrame::FrameComplete;
316 m_lazyDecoder->setData(*m_data, true); 316 m_lazyDecoder->setData(m_data, true);
317 EXPECT_FALSE(m_actualDecoder); 317 EXPECT_FALSE(m_actualDecoder);
318 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 318 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0));
319 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1)); 319 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1));
320 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(2)); 320 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(2));
321 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0)); 321 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0));
322 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1)); 322 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1));
323 EXPECT_EQ(30.0f, m_lazyDecoder->frameDurationAtIndex(2)); 323 EXPECT_EQ(30.0f, m_lazyDecoder->frameDurationAtIndex(2));
324 EXPECT_EQ(10, m_lazyDecoder->repetitionCount()); 324 EXPECT_EQ(10, m_lazyDecoder->repetitionCount());
325 } 325 }
326 326
327 TEST_F(DeferredImageDecoderTest, decodedSize) 327 TEST_F(DeferredImageDecoderTest, decodedSize)
328 { 328 {
329 m_decodedSize = IntSize(22, 33); 329 m_decodedSize = IntSize(22, 33);
330 m_lazyDecoder->setData(*m_data, true); 330 m_lazyDecoder->setData(m_data, true);
331 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 331 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
332 ASSERT_TRUE(image); 332 ASSERT_TRUE(image);
333 EXPECT_EQ(m_decodedSize.width(), image->width()); 333 EXPECT_EQ(m_decodedSize.width(), image->width());
334 EXPECT_EQ(m_decodedSize.height(), image->height()); 334 EXPECT_EQ(m_decodedSize.height(), image->height());
335 335
336 useMockImageDecoderFactory(); 336 useMockImageDecoderFactory();
337 337
338 // The following code should not fail any assert. 338 // The following code should not fail any assert.
339 SkPictureRecorder recorder; 339 SkPictureRecorder recorder;
340 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 340 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
341 tempCanvas->drawImage(image.get(), 0, 0); 341 tempCanvas->drawImage(image.get(), 0, 0);
342 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); 342 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
343 EXPECT_EQ(0, m_decodeRequestCount); 343 EXPECT_EQ(0, m_decodeRequestCount);
344 m_surface->getCanvas()->drawPicture(picture); 344 m_surface->getCanvas()->drawPicture(picture);
345 EXPECT_EQ(1, m_decodeRequestCount); 345 EXPECT_EQ(1, m_decodeRequestCount);
346 } 346 }
347 347
348 TEST_F(DeferredImageDecoderTest, smallerFrameCount) 348 TEST_F(DeferredImageDecoderTest, smallerFrameCount)
349 { 349 {
350 m_frameCount = 1; 350 m_frameCount = 1;
351 m_lazyDecoder->setData(*m_data, false); 351 m_lazyDecoder->setData(m_data, false);
352 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); 352 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount());
353 m_frameCount = 2; 353 m_frameCount = 2;
354 m_lazyDecoder->setData(*m_data, false); 354 m_lazyDecoder->setData(m_data, false);
355 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); 355 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount());
356 m_frameCount = 0; 356 m_frameCount = 0;
357 m_lazyDecoder->setData(*m_data, true); 357 m_lazyDecoder->setData(m_data, true);
358 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); 358 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount());
359 } 359 }
360 360
361 TEST_F(DeferredImageDecoderTest, frameOpacity) 361 TEST_F(DeferredImageDecoderTest, frameOpacity)
362 { 362 {
363 std::unique_ptr<ImageDecoder> actualDecoder = ImageDecoder::create(ImageDeco der::determineImageType(*m_data), 363 std::unique_ptr<DeferredImageDecoder> decoder = DeferredImageDecoder::create (m_data, true,
364 ImageDecoder::AlphaPremultiplied, ImageDecoder::GammaAndColorProfileAppl ied); 364 ImageDecoder::AlphaPremultiplied, ImageDecoder::GammaAndColorProfileAppl ied);
365 std::unique_ptr<DeferredImageDecoder> decoder = DeferredImageDecoder::create ForTesting(std::move(actualDecoder));
366 decoder->setData(*m_data, true);
367 365
368 SkImageInfo pixInfo = SkImageInfo::MakeN32Premul(1, 1); 366 SkImageInfo pixInfo = SkImageInfo::MakeN32Premul(1, 1);
369 367
370 size_t rowBytes = pixInfo.minRowBytes(); 368 size_t rowBytes = pixInfo.minRowBytes();
371 size_t size = pixInfo.getSafeSize(rowBytes); 369 size_t size = pixInfo.getSafeSize(rowBytes);
372 370
373 SkAutoMalloc storage(size); 371 SkAutoMalloc storage(size);
374 SkPixmap pixmap(pixInfo, storage.get(), rowBytes); 372 SkPixmap pixmap(pixInfo, storage.get(), rowBytes);
375 373
376 // Before decoding, the frame is not known to be opaque. 374 // Before decoding, the frame is not known to be opaque.
(...skipping 15 matching lines...) Expand all
392 390
393 // The DeferredImageDecoder would sometimes assume that a frame was a certain 391 // The DeferredImageDecoder would sometimes assume that a frame was a certain
394 // size even if the actual decoder reported it had a size of 0 bytes. This test 392 // size even if the actual decoder reported it had a size of 0 bytes. This test
395 // verifies that it's fixed by always checking with the actual decoder when 393 // verifies that it's fixed by always checking with the actual decoder when
396 // creating a frame. 394 // creating a frame.
397 TEST_F(DeferredImageDecoderTest, respectActualDecoderSizeOnCreate) 395 TEST_F(DeferredImageDecoderTest, respectActualDecoderSizeOnCreate)
398 { 396 {
399 m_data = SharedBuffer::create(animatedGIF, sizeof(animatedGIF)); 397 m_data = SharedBuffer::create(animatedGIF, sizeof(animatedGIF));
400 m_frameCount = 2; 398 m_frameCount = 2;
401 forceFirstFrameToBeEmpty(); 399 forceFirstFrameToBeEmpty();
402 m_lazyDecoder->setData(*m_data, false); 400 m_lazyDecoder->setData(m_data, false);
403 m_lazyDecoder->createFrameAtIndex(0); 401 m_lazyDecoder->createFrameAtIndex(0);
404 m_lazyDecoder->createFrameAtIndex(1); 402 m_lazyDecoder->createFrameAtIndex(1);
405 m_lazyDecoder->setData(*m_data, true); 403 m_lazyDecoder->setData(m_data, true);
406 // Clears only the first frame (0 bytes). If DeferredImageDecoder doesn't 404 // Clears only the first frame (0 bytes). If DeferredImageDecoder doesn't
407 // check with the actual decoder it reports 4 bytes instead. 405 // check with the actual decoder it reports 4 bytes instead.
408 size_t frameBytesCleared = m_lazyDecoder->clearCacheExceptFrame(1); 406 size_t frameBytesCleared = m_lazyDecoder->clearCacheExceptFrame(1);
409 EXPECT_EQ(static_cast<size_t>(0), frameBytesCleared); 407 EXPECT_EQ(static_cast<size_t>(0), frameBytesCleared);
410 } 408 }
411 409
412 TEST_F(DeferredImageDecoderTest, data) 410 TEST_F(DeferredImageDecoderTest, data)
413 { 411 {
414 RefPtr<SharedBuffer> originalData = SharedBuffer::create(m_data->data(), m_d ata->size()); 412 RefPtr<SharedBuffer> originalData = SharedBuffer::create(m_data->data(), m_d ata->size());
415 EXPECT_EQ(originalData->size(), m_data->size()); 413 EXPECT_EQ(originalData->size(), m_data->size());
416 m_lazyDecoder->setData(*originalData, false); 414 m_lazyDecoder->setData(originalData, false);
417 RefPtr<SharedBuffer> newData = m_lazyDecoder->data(); 415 RefPtr<SharedBuffer> newData = m_lazyDecoder->data();
418 EXPECT_EQ(originalData->size(), newData->size()); 416 EXPECT_EQ(originalData->size(), newData->size());
419 EXPECT_EQ(0, std::memcmp(originalData->data(), newData->data(), newData->siz e())); 417 EXPECT_EQ(0, std::memcmp(originalData->data(), newData->data(), newData->siz e()));
420 } 418 }
421 419
422 } // namespace blink 420 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698