| 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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 ColorBehavior::transformToTargetForTesting()); | 346 ColorBehavior::transformToTargetForTesting()); |
| 347 | 347 |
| 348 SkImageInfo pixInfo = SkImageInfo::MakeN32Premul(1, 1); | 348 SkImageInfo pixInfo = SkImageInfo::MakeN32Premul(1, 1); |
| 349 | 349 |
| 350 size_t rowBytes = pixInfo.minRowBytes(); | 350 size_t rowBytes = pixInfo.minRowBytes(); |
| 351 size_t size = pixInfo.getSafeSize(rowBytes); | 351 size_t size = pixInfo.getSafeSize(rowBytes); |
| 352 | 352 |
| 353 Vector<char> storage(size); | 353 Vector<char> storage(size); |
| 354 SkPixmap pixmap(pixInfo, storage.data(), rowBytes); | 354 SkPixmap pixmap(pixInfo, storage.data(), rowBytes); |
| 355 | 355 |
| 356 // Before decoding, the frame is not known to be opaque. | 356 // Before decoding, the frame's alpha is unknown and assumed to be |
| 357 // transparent. This works well with partial decoding, which will be |
| 358 // transparent until the full first frame is decoded. |
| 357 sk_sp<SkImage> frame = decoder->createFrameAtIndex(0); | 359 sk_sp<SkImage> frame = decoder->createFrameAtIndex(0); |
| 358 ASSERT_TRUE(frame); | 360 ASSERT_TRUE(frame); |
| 359 EXPECT_FALSE(frame->isOpaque()); | 361 EXPECT_FALSE(frame->isOpaque()); |
| 360 | 362 |
| 361 // Force a lazy decode by reading pixels. | 363 // Force a lazy decode by reading pixels. |
| 362 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0)); | 364 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0)); |
| 363 | 365 |
| 364 // After decoding, the frame is known to be opaque. | 366 // After decoding, the frame is known to be opaque. |
| 365 frame = decoder->createFrameAtIndex(0); | 367 frame = decoder->createFrameAtIndex(0); |
| 366 ASSERT_TRUE(frame); | 368 ASSERT_TRUE(frame); |
| 367 EXPECT_TRUE(frame->isOpaque()); | 369 // The GIF file specifies it is opaque. |
| 370 // Without the file, we remain at the default: transparent |
| 371 EXPECT_EQ(testGIF, frame->isOpaque()); |
| 368 | 372 |
| 369 // Re-generating the opaque-marked frame should not fail. | 373 // Re-generating the opaque-marked frame should not fail. |
| 370 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0)); | 374 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0)); |
| 371 } | 375 } |
| 372 } | 376 } |
| 373 | 377 |
| 374 // The DeferredImageDecoder would sometimes assume that a frame was a certain | 378 // The DeferredImageDecoder would sometimes assume that a frame was a certain |
| 375 // size even if the actual decoder reported it had a size of 0 bytes. This test | 379 // size even if the actual decoder reported it had a size of 0 bytes. This test |
| 376 // verifies that it's fixed by always checking with the actual decoder when | 380 // verifies that it's fixed by always checking with the actual decoder when |
| 377 // creating a frame. | 381 // creating a frame. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 394 SharedBuffer::create(m_data->data(), m_data->size()); | 398 SharedBuffer::create(m_data->data(), m_data->size()); |
| 395 EXPECT_EQ(originalData->size(), m_data->size()); | 399 EXPECT_EQ(originalData->size(), m_data->size()); |
| 396 m_lazyDecoder->setData(originalData, false); | 400 m_lazyDecoder->setData(originalData, false); |
| 397 RefPtr<SharedBuffer> newData = m_lazyDecoder->data(); | 401 RefPtr<SharedBuffer> newData = m_lazyDecoder->data(); |
| 398 EXPECT_EQ(originalData->size(), newData->size()); | 402 EXPECT_EQ(originalData->size(), newData->size()); |
| 399 EXPECT_EQ( | 403 EXPECT_EQ( |
| 400 0, std::memcmp(originalData->data(), newData->data(), newData->size())); | 404 0, std::memcmp(originalData->data(), newData->data(), newData->size())); |
| 401 } | 405 } |
| 402 | 406 |
| 403 } // namespace blink | 407 } // namespace blink |
| OLD | NEW |