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

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

Issue 1823133002: Use sk_sp-based picture recording APIs in Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 8 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 { 154 {
155 m_lazyDecoder->setData(*m_data, true); 155 m_lazyDecoder->setData(*m_data, true);
156 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 156 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
157 ASSERT_TRUE(image); 157 ASSERT_TRUE(image);
158 EXPECT_EQ(1, image->width()); 158 EXPECT_EQ(1, image->width());
159 EXPECT_EQ(1, image->height()); 159 EXPECT_EQ(1, image->height());
160 160
161 SkPictureRecorder recorder; 161 SkPictureRecorder recorder;
162 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 162 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
163 tempCanvas->drawImage(image.get(), 0, 0); 163 tempCanvas->drawImage(image.get(), 0, 0);
164 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); 164 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
165 EXPECT_EQ(0, m_decodeRequestCount); 165 EXPECT_EQ(0, m_decodeRequestCount);
166 166
167 m_surface->getCanvas()->drawPicture(picture.get()); 167 m_surface->getCanvas()->drawPicture(picture);
168 EXPECT_EQ(0, m_decodeRequestCount); 168 EXPECT_EQ(0, m_decodeRequestCount);
169 169
170 SkBitmap canvasBitmap; 170 SkBitmap canvasBitmap;
171 canvasBitmap.allocN32Pixels(100, 100); 171 canvasBitmap.allocN32Pixels(100, 100);
172 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); 172 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0));
173 SkAutoLockPixels autoLock(canvasBitmap); 173 SkAutoLockPixels autoLock(canvasBitmap);
174 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); 174 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0));
175 } 175 }
176 176
177 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive) 177 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive)
178 { 178 {
179 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da ta->size() - 10); 179 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da ta->size() - 10);
180 180
181 // Received only half the file. 181 // Received only half the file.
182 m_lazyDecoder->setData(*partialData, false); 182 m_lazyDecoder->setData(*partialData, false);
183 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 183 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
184 ASSERT_TRUE(image); 184 ASSERT_TRUE(image);
185 SkPictureRecorder recorder; 185 SkPictureRecorder recorder;
186 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 186 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
187 tempCanvas->drawImage(image.get(), 0, 0); 187 tempCanvas->drawImage(image.get(), 0, 0);
188 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); 188 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture());
189 m_surface->getCanvas()->drawPicture(picture.get());
190 189
191 // Fully received the file and draw the SkPicture again. 190 // Fully received the file and draw the SkPicture again.
192 m_lazyDecoder->setData(*m_data, true); 191 m_lazyDecoder->setData(*m_data, true);
193 image = m_lazyDecoder->createFrameAtIndex(0); 192 image = m_lazyDecoder->createFrameAtIndex(0);
194 ASSERT_TRUE(image); 193 ASSERT_TRUE(image);
195 tempCanvas = recorder.beginRecording(100, 100, 0, 0); 194 tempCanvas = recorder.beginRecording(100, 100, 0, 0);
196 tempCanvas->drawImage(image.get(), 0, 0); 195 tempCanvas->drawImage(image.get(), 0, 0);
197 picture = adoptRef(recorder.endRecording()); 196 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture());
198 m_surface->getCanvas()->drawPicture(picture.get());
199 197
200 SkBitmap canvasBitmap; 198 SkBitmap canvasBitmap;
201 canvasBitmap.allocN32Pixels(100, 100); 199 canvasBitmap.allocN32Pixels(100, 100);
202 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); 200 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0));
203 SkAutoLockPixels autoLock(canvasBitmap); 201 SkAutoLockPixels autoLock(canvasBitmap);
204 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); 202 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0));
205 } 203 }
206 204
207 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture) 205 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture)
208 { 206 {
209 canvas->drawPicture(picture); 207 canvas->drawPicture(picture);
210 } 208 }
211 209
212 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) 210 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread)
213 { 211 {
214 m_lazyDecoder->setData(*m_data, true); 212 m_lazyDecoder->setData(*m_data, true);
215 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); 213 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0);
216 ASSERT_TRUE(image); 214 ASSERT_TRUE(image);
217 EXPECT_EQ(1, image->width()); 215 EXPECT_EQ(1, image->width());
218 EXPECT_EQ(1, image->height()); 216 EXPECT_EQ(1, image->height());
219 217
220 SkPictureRecorder recorder; 218 SkPictureRecorder recorder;
221 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 219 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
222 tempCanvas->drawImage(image.get(), 0, 0); 220 tempCanvas->drawImage(image.get(), 0, 0);
223 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); 221 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
224 EXPECT_EQ(0, m_decodeRequestCount); 222 EXPECT_EQ(0, m_decodeRequestCount);
225 223
226 // Create a thread to rasterize SkPicture. 224 // Create a thread to rasterize SkPicture.
227 OwnPtr<WebThread> thread = adoptPtr(Platform::current()->createThread("Raste rThread")); 225 OwnPtr<WebThread> thread = adoptPtr(Platform::current()->createThread("Raste rThread"));
228 thread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&raster izeMain, AllowCrossThreadAccess(m_surface->getCanvas()), AllowCrossThreadAccess( picture.get()))); 226 thread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&raster izeMain, AllowCrossThreadAccess(m_surface->getCanvas()), AllowCrossThreadAccess( picture.get())));
229 thread.clear(); 227 thread.clear();
230 EXPECT_EQ(0, m_decodeRequestCount); 228 EXPECT_EQ(0, m_decodeRequestCount);
231 229
232 SkBitmap canvasBitmap; 230 SkBitmap canvasBitmap;
233 canvasBitmap.allocN32Pixels(100, 100); 231 canvasBitmap.allocN32Pixels(100, 100);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 ASSERT_TRUE(image); 309 ASSERT_TRUE(image);
312 EXPECT_EQ(m_decodedSize.width(), image->width()); 310 EXPECT_EQ(m_decodedSize.width(), image->width());
313 EXPECT_EQ(m_decodedSize.height(), image->height()); 311 EXPECT_EQ(m_decodedSize.height(), image->height());
314 312
315 useMockImageDecoderFactory(); 313 useMockImageDecoderFactory();
316 314
317 // The following code should not fail any assert. 315 // The following code should not fail any assert.
318 SkPictureRecorder recorder; 316 SkPictureRecorder recorder;
319 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); 317 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0);
320 tempCanvas->drawImage(image.get(), 0, 0); 318 tempCanvas->drawImage(image.get(), 0, 0);
321 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); 319 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
322 EXPECT_EQ(0, m_decodeRequestCount); 320 EXPECT_EQ(0, m_decodeRequestCount);
323 m_surface->getCanvas()->drawPicture(picture.get()); 321 m_surface->getCanvas()->drawPicture(picture);
324 EXPECT_EQ(1, m_decodeRequestCount); 322 EXPECT_EQ(1, m_decodeRequestCount);
325 } 323 }
326 324
327 TEST_F(DeferredImageDecoderTest, smallerFrameCount) 325 TEST_F(DeferredImageDecoderTest, smallerFrameCount)
328 { 326 {
329 m_frameCount = 1; 327 m_frameCount = 1;
330 m_lazyDecoder->setData(*m_data, false); 328 m_lazyDecoder->setData(*m_data, false);
331 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); 329 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount());
332 m_frameCount = 2; 330 m_frameCount = 2;
333 m_lazyDecoder->setData(*m_data, false); 331 m_lazyDecoder->setData(*m_data, false);
(...skipping 29 matching lines...) Expand all
363 // After decoding, the frame is known to be opaque. 361 // After decoding, the frame is known to be opaque.
364 frame = decoder->createFrameAtIndex(0); 362 frame = decoder->createFrameAtIndex(0);
365 ASSERT_TRUE(frame); 363 ASSERT_TRUE(frame);
366 EXPECT_TRUE(frame->isOpaque()); 364 EXPECT_TRUE(frame->isOpaque());
367 365
368 // Re-generating the opaque-marked frame should not fail. 366 // Re-generating the opaque-marked frame should not fail.
369 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0)); 367 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0));
370 } 368 }
371 369
372 } // namespace blink 370 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698