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

Side by Side Diff: Source/core/platform/graphics/chromium/DeferredImageDecoderTest.cpp

Issue 23068027: Animated WebP: Optimize decoding in case of seeking (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@add_noblend_image
Patch Set: Fix assert fail on debug Created 7 years, 3 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
« no previous file with comments | « no previous file | Source/core/platform/graphics/chromium/ImageDecodingStoreTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 DeferredImageDecoder::setEnabled(true); 76 DeferredImageDecoder::setEnabled(true);
77 m_data = SharedBuffer::create(whitePNG, sizeof(whitePNG)); 77 m_data = SharedBuffer::create(whitePNG, sizeof(whitePNG));
78 OwnPtr<MockImageDecoder> decoder = MockImageDecoder::create(this); 78 OwnPtr<MockImageDecoder> decoder = MockImageDecoder::create(this);
79 m_actualDecoder = decoder.get(); 79 m_actualDecoder = decoder.get();
80 m_actualDecoder->setSize(1, 1); 80 m_actualDecoder->setSize(1, 1);
81 m_lazyDecoder = DeferredImageDecoder::createForTesting(decoder.release() ); 81 m_lazyDecoder = DeferredImageDecoder::createForTesting(decoder.release() );
82 m_canvas.reset(createRasterCanvas(100, 100)); 82 m_canvas.reset(createRasterCanvas(100, 100));
83 m_frameBufferRequestCount = 0; 83 m_frameBufferRequestCount = 0;
84 m_frameCount = 1; 84 m_frameCount = 1;
85 m_repetitionCount = cAnimationNone; 85 m_repetitionCount = cAnimationNone;
86 m_frameStatus = ImageFrame::FrameComplete; 86 m_status = ImageFrame::FrameComplete;
87 m_frameDuration = 0; 87 m_frameDuration = 0;
88 } 88 }
89 89
90 virtual void TearDown() 90 virtual void TearDown()
91 { 91 {
92 ImageDecodingStore::shutdown(); 92 ImageDecodingStore::shutdown();
93 } 93 }
94 94
95 virtual void decoderBeingDestroyed() 95 virtual void decoderBeingDestroyed()
96 { 96 {
97 m_actualDecoder = 0; 97 m_actualDecoder = 0;
98 } 98 }
99 99
100 virtual void frameBufferRequested() 100 virtual void frameBufferRequested()
101 { 101 {
102 ++m_frameBufferRequestCount; 102 ++m_frameBufferRequestCount;
103 } 103 }
104 104
105 virtual size_t frameCount() 105 virtual size_t frameCount()
106 { 106 {
107 return m_frameCount; 107 return m_frameCount;
108 } 108 }
109 109
110 virtual int repetitionCount() const 110 virtual int repetitionCount() const
111 { 111 {
112 return m_repetitionCount; 112 return m_repetitionCount;
113 } 113 }
114 114
115 virtual ImageFrame::FrameStatus frameStatus() 115 virtual ImageFrame::Status status()
116 { 116 {
117 return m_frameStatus; 117 return m_status;
118 } 118 }
119 119
120 virtual float frameDuration() const 120 virtual float frameDuration() const
121 { 121 {
122 return m_frameDuration; 122 return m_frameDuration;
123 } 123 }
124 124
125 protected: 125 protected:
126 // Don't own this but saves the pointer to query states. 126 // Don't own this but saves the pointer to query states.
127 MockImageDecoder* m_actualDecoder; 127 MockImageDecoder* m_actualDecoder;
128 OwnPtr<DeferredImageDecoder> m_lazyDecoder; 128 OwnPtr<DeferredImageDecoder> m_lazyDecoder;
129 SkPicture m_picture; 129 SkPicture m_picture;
130 SkAutoTUnref<SkCanvas> m_canvas; 130 SkAutoTUnref<SkCanvas> m_canvas;
131 int m_frameBufferRequestCount; 131 int m_frameBufferRequestCount;
132 RefPtr<SharedBuffer> m_data; 132 RefPtr<SharedBuffer> m_data;
133 size_t m_frameCount; 133 size_t m_frameCount;
134 int m_repetitionCount; 134 int m_repetitionCount;
135 ImageFrame::FrameStatus m_frameStatus; 135 ImageFrame::Status m_status;
136 float m_frameDuration; 136 float m_frameDuration;
137 }; 137 };
138 138
139 TEST_F(DeferredImageDecoderTest, drawIntoSkPicture) 139 TEST_F(DeferredImageDecoderTest, drawIntoSkPicture)
140 { 140 {
141 m_lazyDecoder->setData(m_data.get(), true); 141 m_lazyDecoder->setData(m_data.get(), true);
142 RefPtr<NativeImageSkia> image = m_lazyDecoder->frameBufferAtIndex(0)->asNewN ativeImage(); 142 RefPtr<NativeImageSkia> image = m_lazyDecoder->frameBufferAtIndex(0)->asNewN ativeImage();
143 EXPECT_EQ(1, image->bitmap().width()); 143 EXPECT_EQ(1, image->bitmap().width());
144 EXPECT_EQ(1, image->bitmap().height()); 144 EXPECT_EQ(1, image->bitmap().height());
145 EXPECT_FALSE(image->bitmap().isNull()); 145 EXPECT_FALSE(image->bitmap().isNull());
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 217
218 SkBitmap canvasBitmap; 218 SkBitmap canvasBitmap;
219 canvasBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); 219 canvasBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
220 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0)); 220 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0));
221 SkAutoLockPixels autoLock(canvasBitmap); 221 SkAutoLockPixels autoLock(canvasBitmap);
222 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); 222 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0));
223 } 223 }
224 224
225 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading) 225 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading)
226 { 226 {
227 m_frameStatus = ImageFrame::FramePartial; 227 m_status = ImageFrame::FramePartial;
228 m_lazyDecoder->setData(m_data.get(), false); 228 m_lazyDecoder->setData(m_data.get(), false);
229 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 229 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0));
230 ImageFrame* frame = m_lazyDecoder->frameBufferAtIndex(0); 230 ImageFrame* frame = m_lazyDecoder->frameBufferAtIndex(0);
231 EXPECT_EQ(ImageFrame::FramePartial, frame->status()); 231 EXPECT_EQ(ImageFrame::FramePartial, frame->status());
232 EXPECT_TRUE(m_actualDecoder); 232 EXPECT_TRUE(m_actualDecoder);
233 233
234 m_frameStatus = ImageFrame::FrameComplete; 234 m_status = ImageFrame::FrameComplete;
235 m_lazyDecoder->setData(m_data.get(), true); 235 m_lazyDecoder->setData(m_data.get(), true);
236 EXPECT_FALSE(m_actualDecoder); 236 EXPECT_FALSE(m_actualDecoder);
237 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 237 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0));
238 frame = m_lazyDecoder->frameBufferAtIndex(0); 238 frame = m_lazyDecoder->frameBufferAtIndex(0);
239 EXPECT_EQ(ImageFrame::FrameComplete, frame->status()); 239 EXPECT_EQ(ImageFrame::FrameComplete, frame->status());
240 EXPECT_FALSE(m_frameBufferRequestCount); 240 EXPECT_FALSE(m_frameBufferRequestCount);
241 } 241 }
242 242
243 TEST_F(DeferredImageDecoderTest, multiFrameImageLoading) 243 TEST_F(DeferredImageDecoderTest, multiFrameImageLoading)
244 { 244 {
245 m_repetitionCount = 10; 245 m_repetitionCount = 10;
246 m_frameCount = 1; 246 m_frameCount = 1;
247 m_frameDuration = 10; 247 m_frameDuration = 10;
248 m_frameStatus = ImageFrame::FramePartial; 248 m_status = ImageFrame::FramePartial;
249 m_lazyDecoder->setData(m_data.get(), false); 249 m_lazyDecoder->setData(m_data.get(), false);
250 EXPECT_EQ(ImageFrame::FramePartial, m_lazyDecoder->frameBufferAtIndex(0)->st atus()); 250 EXPECT_EQ(ImageFrame::FramePartial, m_lazyDecoder->frameBufferAtIndex(0)->st atus());
251 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 251 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0));
252 EXPECT_EQ(10.0f, m_lazyDecoder->frameBufferAtIndex(0)->duration()); 252 EXPECT_EQ(10.0f, m_lazyDecoder->frameBufferAtIndex(0)->duration());
253 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0)); 253 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0));
254 254
255 m_frameCount = 2; 255 m_frameCount = 2;
256 m_frameDuration = 20; 256 m_frameDuration = 20;
257 m_frameStatus = ImageFrame::FrameComplete; 257 m_status = ImageFrame::FrameComplete;
258 m_lazyDecoder->setData(m_data.get(), false); 258 m_lazyDecoder->setData(m_data.get(), false);
259 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(0)->s tatus()); 259 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(0)->s tatus());
260 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(1)->s tatus()); 260 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(1)->s tatus());
261 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 261 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0));
262 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1)); 262 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1));
263 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1)); 263 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1));
264 EXPECT_EQ(10.0f, m_lazyDecoder->frameBufferAtIndex(0)->duration()); 264 EXPECT_EQ(10.0f, m_lazyDecoder->frameBufferAtIndex(0)->duration());
265 EXPECT_EQ(20.0f, m_lazyDecoder->frameBufferAtIndex(1)->duration()); 265 EXPECT_EQ(20.0f, m_lazyDecoder->frameBufferAtIndex(1)->duration());
266 EXPECT_TRUE(m_actualDecoder); 266 EXPECT_TRUE(m_actualDecoder);
267 267
268 m_frameCount = 3; 268 m_frameCount = 3;
269 m_frameDuration = 30; 269 m_frameDuration = 30;
270 m_frameStatus = ImageFrame::FrameComplete; 270 m_status = ImageFrame::FrameComplete;
271 m_lazyDecoder->setData(m_data.get(), true); 271 m_lazyDecoder->setData(m_data.get(), true);
272 EXPECT_FALSE(m_actualDecoder); 272 EXPECT_FALSE(m_actualDecoder);
273 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(0)->s tatus()); 273 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(0)->s tatus());
274 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(1)->s tatus()); 274 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(1)->s tatus());
275 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(2)->s tatus()); 275 EXPECT_EQ(ImageFrame::FrameComplete, m_lazyDecoder->frameBufferAtIndex(2)->s tatus());
276 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0)); 276 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(0));
277 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1)); 277 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(1));
278 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(2)); 278 EXPECT_TRUE(m_lazyDecoder->frameIsCompleteAtIndex(2));
279 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0)); 279 EXPECT_EQ(10.0f, m_lazyDecoder->frameDurationAtIndex(0));
280 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1)); 280 EXPECT_EQ(20.0f, m_lazyDecoder->frameDurationAtIndex(1));
281 EXPECT_EQ(30.0f, m_lazyDecoder->frameDurationAtIndex(2)); 281 EXPECT_EQ(30.0f, m_lazyDecoder->frameDurationAtIndex(2));
282 EXPECT_EQ(10.0f, m_lazyDecoder->frameBufferAtIndex(0)->duration()); 282 EXPECT_EQ(10.0f, m_lazyDecoder->frameBufferAtIndex(0)->duration());
283 EXPECT_EQ(20.0f, m_lazyDecoder->frameBufferAtIndex(1)->duration()); 283 EXPECT_EQ(20.0f, m_lazyDecoder->frameBufferAtIndex(1)->duration());
284 EXPECT_EQ(30.0f, m_lazyDecoder->frameBufferAtIndex(2)->duration()); 284 EXPECT_EQ(30.0f, m_lazyDecoder->frameBufferAtIndex(2)->duration());
285 EXPECT_EQ(10, m_lazyDecoder->repetitionCount()); 285 EXPECT_EQ(10, m_lazyDecoder->repetitionCount());
286 } 286 }
287 287
288 } // namespace 288 } // namespace
OLDNEW
« no previous file with comments | « no previous file | Source/core/platform/graphics/chromium/ImageDecodingStoreTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698