Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 122 decoder->setData(data.get(), true); | 122 decoder->setData(data.get(), true); |
| 123 size_t frameCount = decoder->frameCount(); | 123 size_t frameCount = decoder->frameCount(); |
| 124 | 124 |
| 125 // ... and then decode frames from 'reallocatedData'. | 125 // ... and then decode frames from 'reallocatedData'. |
| 126 RefPtr<SharedBuffer> reallocatedData = data.get()->copy(); | 126 RefPtr<SharedBuffer> reallocatedData = data.get()->copy(); |
| 127 ASSERT_TRUE(reallocatedData.get()); | 127 ASSERT_TRUE(reallocatedData.get()); |
| 128 data.clear(); | 128 data.clear(); |
| 129 decoder->setData(reallocatedData.get(), true); | 129 decoder->setData(reallocatedData.get(), true); |
| 130 | 130 |
| 131 for (size_t i = 0; i < frameCount; ++i) { | 131 for (size_t i = 0; i < frameCount; ++i) { |
| 132 const ImageFrame* const frame = decoder->frameBufferAtIndex(i); | 132 ImageFrame* frame = decoder->frameBufferAtIndex(i); |
|
Peter Kasting
2016/08/26 19:04:05
Why remove the consts here and on similar lines be
aleksandar.stojiljkovic
2016/08/26 21:53:51
To make it consistent with other places (GIFImageD
Peter Kasting
2016/08/27 04:19:58
Don't worry about that kind of consistency, especi
aleksandar.stojiljkovic
2016/08/28 08:58:31
Done, bitmap() const reverted back .
| |
| 133 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); | 133 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); |
| 134 } | 134 } |
| 135 } | 135 } |
| 136 | 136 |
| 137 void testByteByByteSizeAvailable(const char* webpFile, size_t frameOffset, bool hasColorProfile, int expectedRepetitionCount) | 137 void testByteByByteSizeAvailable(const char* webpFile, size_t frameOffset, bool hasColorProfile, int expectedRepetitionCount) |
| 138 { | 138 { |
| 139 std::unique_ptr<ImageDecoder> decoder = createDecoder(); | 139 std::unique_ptr<ImageDecoder> decoder = createDecoder(); |
| 140 RefPtr<SharedBuffer> data = readFile(webpFile); | 140 RefPtr<SharedBuffer> data = readFile(webpFile); |
| 141 ASSERT_TRUE(data.get()); | 141 ASSERT_TRUE(data.get()); |
| 142 EXPECT_LT(frameOffset, data->size()); | 142 EXPECT_LT(frameOffset, data->size()); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 } | 198 } |
| 199 EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount()); | 199 EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount()); |
| 200 EXPECT_TRUE(decoder->failed()); | 200 EXPECT_TRUE(decoder->failed()); |
| 201 } | 201 } |
| 202 | 202 |
| 203 uint32_t premultiplyColor(uint32_t c) | 203 uint32_t premultiplyColor(uint32_t c) |
| 204 { | 204 { |
| 205 return SkPremultiplyARGBInline(SkGetPackedA32(c), SkGetPackedR32(c), SkGetPa ckedG32(c), SkGetPackedB32(c)); | 205 return SkPremultiplyARGBInline(SkGetPackedA32(c), SkGetPackedR32(c), SkGetPa ckedG32(c), SkGetPackedB32(c)); |
| 206 } | 206 } |
| 207 | 207 |
| 208 void verifyFramesMatch(const char* webpFile, const ImageFrame* const a, ImageFra me* const b) | 208 void verifyFramesMatch(const char* webpFile, ImageFrame* a, ImageFrame* b) |
|
Peter Kasting
2016/08/26 19:04:05
Why remove the first const here? (The other two a
| |
| 209 { | 209 { |
| 210 const SkBitmap& bitmapA = a->bitmap(); | 210 const SkBitmap& bitmapA = a->bitmap(); |
| 211 const SkBitmap& bitmapB = b->bitmap(); | 211 const SkBitmap& bitmapB = b->bitmap(); |
| 212 ASSERT_EQ(bitmapA.width(), bitmapB.width()); | 212 ASSERT_EQ(bitmapA.width(), bitmapB.width()); |
| 213 ASSERT_EQ(bitmapA.height(), bitmapB.height()); | 213 ASSERT_EQ(bitmapA.height(), bitmapB.height()); |
| 214 | 214 |
| 215 int maxDifference = 0; | 215 int maxDifference = 0; |
| 216 for (int y = 0; y < bitmapA.height(); ++y) { | 216 for (int y = 0; y < bitmapA.height(); ++y) { |
| 217 for (int x = 0; x < bitmapA.width(); ++x) { | 217 for (int x = 0; x < bitmapA.width(); ++x) { |
| 218 uint32_t colorA = *bitmapA.getAddr32(x, y); | 218 uint32_t colorA = *bitmapA.getAddr32(x, y); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 290 ImageFrame::AlphaBlendSource alphaBlendSource; | 290 ImageFrame::AlphaBlendSource alphaBlendSource; |
| 291 unsigned duration; | 291 unsigned duration; |
| 292 bool hasAlpha; | 292 bool hasAlpha; |
| 293 } frameParameters[] = { | 293 } frameParameters[] = { |
| 294 { 0, 0, 11, 29, ImageFrame::DisposeKeep, ImageFrame::BlendAtopPreviousFr ame, 1000u, true }, | 294 { 0, 0, 11, 29, ImageFrame::DisposeKeep, ImageFrame::BlendAtopPreviousFr ame, 1000u, true }, |
| 295 { 2, 10, 7, 17, ImageFrame::DisposeKeep, ImageFrame::BlendAtopPreviousFr ame, 500u, true }, | 295 { 2, 10, 7, 17, ImageFrame::DisposeKeep, ImageFrame::BlendAtopPreviousFr ame, 500u, true }, |
| 296 { 2, 2, 7, 16, ImageFrame::DisposeKeep, ImageFrame::BlendAtopPreviousFra me, 1000u, true }, | 296 { 2, 2, 7, 16, ImageFrame::DisposeKeep, ImageFrame::BlendAtopPreviousFra me, 1000u, true }, |
| 297 }; | 297 }; |
| 298 | 298 |
| 299 for (size_t i = 0; i < WTF_ARRAY_LENGTH(frameParameters); ++i) { | 299 for (size_t i = 0; i < WTF_ARRAY_LENGTH(frameParameters); ++i) { |
| 300 const ImageFrame* const frame = decoder->frameBufferAtIndex(i); | 300 ImageFrame* frame = decoder->frameBufferAtIndex(i); |
| 301 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); | 301 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); |
| 302 EXPECT_EQ(canvasWidth, frame->bitmap().width()); | 302 EXPECT_EQ(canvasWidth, frame->bitmap().width()); |
| 303 EXPECT_EQ(canvasHeight, frame->bitmap().height()); | 303 EXPECT_EQ(canvasHeight, frame->bitmap().height()); |
| 304 EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); | 304 EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); |
| 305 EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); | 305 EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); |
| 306 EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); | 306 EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); |
| 307 EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height() ); | 307 EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height() ); |
| 308 EXPECT_EQ(frameParameters[i].disposalMethod, frame->getDisposalMethod()) ; | 308 EXPECT_EQ(frameParameters[i].disposalMethod, frame->getDisposalMethod()) ; |
| 309 EXPECT_EQ(frameParameters[i].alphaBlendSource, frame->getAlphaBlendSourc e()); | 309 EXPECT_EQ(frameParameters[i].alphaBlendSource, frame->getAlphaBlendSourc e()); |
| 310 EXPECT_EQ(frameParameters[i].duration, frame->duration()); | 310 EXPECT_EQ(frameParameters[i].duration, frame->duration()); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 333 unsigned duration; | 333 unsigned duration; |
| 334 bool hasAlpha; | 334 bool hasAlpha; |
| 335 } frameParameters[] = { | 335 } frameParameters[] = { |
| 336 { 4, 10, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::BlendA topPreviousFrame, 1000u, true }, | 336 { 4, 10, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::BlendA topPreviousFrame, 1000u, true }, |
| 337 { 34, 30, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopPreviousFrame, 1000u, true }, | 337 { 34, 30, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopPreviousFrame, 1000u, true }, |
| 338 { 62, 50, 32, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopPreviousFrame, 1000u, true }, | 338 { 62, 50, 32, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopPreviousFrame, 1000u, true }, |
| 339 { 10, 54, 32, 33, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopPreviousFrame, 1000u, true }, | 339 { 10, 54, 32, 33, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopPreviousFrame, 1000u, true }, |
| 340 }; | 340 }; |
| 341 | 341 |
| 342 for (size_t i = 0; i < WTF_ARRAY_LENGTH(frameParameters); ++i) { | 342 for (size_t i = 0; i < WTF_ARRAY_LENGTH(frameParameters); ++i) { |
| 343 const ImageFrame* const frame = decoder->frameBufferAtIndex(i); | 343 ImageFrame* frame = decoder->frameBufferAtIndex(i); |
| 344 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); | 344 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); |
| 345 EXPECT_EQ(canvasWidth, frame->bitmap().width()); | 345 EXPECT_EQ(canvasWidth, frame->bitmap().width()); |
| 346 EXPECT_EQ(canvasHeight, frame->bitmap().height()); | 346 EXPECT_EQ(canvasHeight, frame->bitmap().height()); |
| 347 EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); | 347 EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); |
| 348 EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); | 348 EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); |
| 349 EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); | 349 EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); |
| 350 EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height() ); | 350 EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height() ); |
| 351 EXPECT_EQ(frameParameters[i].disposalMethod, frame->getDisposalMethod()) ; | 351 EXPECT_EQ(frameParameters[i].disposalMethod, frame->getDisposalMethod()) ; |
| 352 EXPECT_EQ(frameParameters[i].alphaBlendSource, frame->getAlphaBlendSourc e()); | 352 EXPECT_EQ(frameParameters[i].alphaBlendSource, frame->getAlphaBlendSourc e()); |
| 353 EXPECT_EQ(frameParameters[i].duration, frame->duration()); | 353 EXPECT_EQ(frameParameters[i].duration, frame->duration()); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 376 unsigned duration; | 376 unsigned duration; |
| 377 bool hasAlpha; | 377 bool hasAlpha; |
| 378 } frameParameters[] = { | 378 } frameParameters[] = { |
| 379 { 4, 10, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::BlendA topBgcolor, 1000u, true }, | 379 { 4, 10, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::BlendA topBgcolor, 1000u, true }, |
| 380 { 34, 30, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopBgcolor, 1000u, true }, | 380 { 34, 30, 33, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopBgcolor, 1000u, true }, |
| 381 { 62, 50, 32, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopBgcolor, 1000u, true }, | 381 { 62, 50, 32, 32, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopBgcolor, 1000u, true }, |
| 382 { 10, 54, 32, 33, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopBgcolor, 1000u, true }, | 382 { 10, 54, 32, 33, ImageFrame::DisposeOverwriteBgcolor, ImageFrame::Blend AtopBgcolor, 1000u, true }, |
| 383 }; | 383 }; |
| 384 | 384 |
| 385 for (size_t i = 0; i < WTF_ARRAY_LENGTH(frameParameters); ++i) { | 385 for (size_t i = 0; i < WTF_ARRAY_LENGTH(frameParameters); ++i) { |
| 386 const ImageFrame* const frame = decoder->frameBufferAtIndex(i); | 386 ImageFrame* frame = decoder->frameBufferAtIndex(i); |
| 387 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); | 387 EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus()); |
| 388 EXPECT_EQ(canvasWidth, frame->bitmap().width()); | 388 EXPECT_EQ(canvasWidth, frame->bitmap().width()); |
| 389 EXPECT_EQ(canvasHeight, frame->bitmap().height()); | 389 EXPECT_EQ(canvasHeight, frame->bitmap().height()); |
| 390 EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); | 390 EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); |
| 391 EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); | 391 EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); |
| 392 EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); | 392 EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); |
| 393 EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height() ); | 393 EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height() ); |
| 394 EXPECT_EQ(frameParameters[i].disposalMethod, frame->getDisposalMethod()) ; | 394 EXPECT_EQ(frameParameters[i].disposalMethod, frame->getDisposalMethod()) ; |
| 395 EXPECT_EQ(frameParameters[i].alphaBlendSource, frame->getAlphaBlendSourc e()); | 395 EXPECT_EQ(frameParameters[i].alphaBlendSource, frame->getAlphaBlendSourc e()); |
| 396 EXPECT_EQ(frameParameters[i].duration, frame->duration()); | 396 EXPECT_EQ(frameParameters[i].duration, frame->duration()); |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 681 { | 681 { |
| 682 std::unique_ptr<ImageDecoder> decoder = createDecoder(); | 682 std::unique_ptr<ImageDecoder> decoder = createDecoder(); |
| 683 RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/web p-color-profile-lossy.webp"); | 683 RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/web p-color-profile-lossy.webp"); |
| 684 ASSERT_TRUE(data.get()); | 684 ASSERT_TRUE(data.get()); |
| 685 decoder->setData(data.get(), true); | 685 decoder->setData(data.get(), true); |
| 686 EXPECT_EQ(1u, decoder->frameCount()); | 686 EXPECT_EQ(1u, decoder->frameCount()); |
| 687 EXPECT_EQ(cAnimationNone, decoder->repetitionCount()); | 687 EXPECT_EQ(cAnimationNone, decoder->repetitionCount()); |
| 688 } | 688 } |
| 689 | 689 |
| 690 } // namespace blink | 690 } // namespace blink |
| OLD | NEW |