Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/image-decoders/ImageDecoderTestHelpers.h" | 5 #include "platform/image-decoders/ImageDecoderTestHelpers.h" |
| 6 | 6 |
| 7 #include "platform/SharedBuffer.h" | 7 #include "platform/SharedBuffer.h" |
| 8 #include "platform/image-decoders/ImageDecoder.h" | 8 #include "platform/image-decoders/ImageDecoder.h" |
| 9 #include "platform/image-decoders/ImageFrame.h" | 9 #include "platform/image-decoders/ImageFrame.h" |
| 10 #include "platform/testing/UnitTestHelpers.h" | 10 #include "platform/testing/UnitTestHelpers.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 79 sourceData[1]->append(source++, 1u); | 79 sourceData[1]->append(source++, 1u); |
| 80 // Alternate the buffers to cover the JPEGImageDecoder::onSetData restar t code. | 80 // Alternate the buffers to cover the JPEGImageDecoder::onSetData restar t code. |
| 81 decoder->setData(sourceData[length & 1].get(), length == data->size()); | 81 decoder->setData(sourceData[length & 1].get(), length == data->size()); |
| 82 | 82 |
| 83 EXPECT_LE(frameCount, decoder->frameCount()); | 83 EXPECT_LE(frameCount, decoder->frameCount()); |
| 84 frameCount = decoder->frameCount(); | 84 frameCount = decoder->frameCount(); |
| 85 | 85 |
| 86 if (!decoder->isSizeAvailable()) | 86 if (!decoder->isSizeAvailable()) |
| 87 continue; | 87 continue; |
| 88 | 88 |
| 89 ImageFrame* frame = decoder->frameBufferAtIndex(frameCount - 1); | 89 bool frameIsFullyReceived = decoder->frameIsFullyReceivedAtIndex(framesD ecoded); |
|
aleksandar.stojiljkovic
2016/06/06 14:26:39
The change here is that we decode frames one after
| |
| 90 if (frame && frame->getStatus() == ImageFrame::FrameComplete && framesDe coded < frameCount) | 90 for (size_t i = 0; i < framesDecoded; ++i) { |
| 91 ASSERT_TRUE(decoder->frameIsFullyReceivedAtIndex(i)); | |
| 92 } | |
| 93 | |
| 94 ImageFrame* frame = decoder->frameBufferAtIndex(framesDecoded); | |
| 95 | |
| 96 if (frameIsFullyReceived) | |
| 97 ASSERT_TRUE(decoder->frameIsCompleteAtIndex(framesDecoded) || decode r->failed()); | |
| 98 if (!decoder->frameIsCompleteAtIndex(framesDecoded) && !decoder->failed( )) | |
|
aleksandar.stojiljkovic
2016/06/06 14:26:38
Broken logic here - fullyReceived = trye for parti
| |
| 99 ASSERT_FALSE(decoder->frameIsFullyReceivedAtIndex(framesDecoded)); | |
| 100 | |
| 101 ASSERT_FALSE(decoder->frameIsCompleteAtIndex(frameCount)); | |
| 102 | |
| 103 if (frame && frame->getStatus() == ImageFrame::FrameComplete) { | |
| 104 ++framesDecoded; | |
| 105 } | |
| 106 } | |
| 107 | |
| 108 for (size_t i = framesDecoded; i < frameCount; ++i) { | |
| 109 // ICO frames order doesn't match the order of frames as in memory | |
| 110 // and multiple frames can be completely decoded only when file is | |
| 111 // fully received. | |
| 112 // Attempt here to decode frames that were not decoded in the loop above , | |
| 113 // while the file content was partially available. | |
| 114 ASSERT_TRUE(decoder->frameIsFullyReceivedAtIndex(i)); | |
| 115 ImageFrame* frame = decoder->frameBufferAtIndex(i); | |
| 116 if (frame && frame->getStatus() == ImageFrame::FrameComplete) | |
|
aleksandar.stojiljkovic
2016/06/06 14:26:38
"&& framesDecoded < frameCount" was reequired for
| |
| 91 ++framesDecoded; | 117 ++framesDecoded; |
| 92 } | 118 } |
| 93 | 119 |
| 120 | |
|
aleksandar.stojiljkovic
2016/06/06 14:26:38
Removed this newline.
| |
| 94 EXPECT_FALSE(decoder->failed()); | 121 EXPECT_FALSE(decoder->failed()); |
| 95 EXPECT_EQ(expectedFrameCount, decoder->frameCount()); | 122 EXPECT_EQ(expectedFrameCount, decoder->frameCount()); |
| 96 EXPECT_EQ(expectedFrameCount, framesDecoded); | 123 EXPECT_EQ(expectedFrameCount, framesDecoded); |
| 97 EXPECT_EQ(expectedRepetitionCount, decoder->repetitionCount()); | 124 EXPECT_EQ(expectedRepetitionCount, decoder->repetitionCount()); |
| 98 | 125 |
| 99 ASSERT_EQ(expectedFrameCount, baselineHashes.size()); | 126 ASSERT_EQ(expectedFrameCount, baselineHashes.size()); |
| 100 for (size_t i = 0; i < decoder->frameCount(); i++) { | 127 for (size_t i = 0; i < decoder->frameCount(); i++) { |
| 101 ImageFrame* frame = decoder->frameBufferAtIndex(i); | 128 ImageFrame* frame = decoder->frameBufferAtIndex(i); |
| 102 EXPECT_EQ(baselineHashes[i], hashBitmap(frame->bitmap())); | 129 EXPECT_EQ(baselineHashes[i], hashBitmap(frame->bitmap())); |
| 103 } | 130 } |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 132 // data in a segment, its pointer would no longer be valid. | 159 // data in a segment, its pointer would no longer be valid. |
| 133 segmentedData->data(); | 160 segmentedData->data(); |
| 134 | 161 |
| 135 ImageFrame* frame = decoder->frameBufferAtIndex(0); | 162 ImageFrame* frame = decoder->frameBufferAtIndex(0); |
| 136 ASSERT_FALSE(decoder->failed()); | 163 ASSERT_FALSE(decoder->failed()); |
| 137 EXPECT_EQ(frame->getStatus(), ImageFrame::FrameComplete); | 164 EXPECT_EQ(frame->getStatus(), ImageFrame::FrameComplete); |
| 138 EXPECT_EQ(hashBitmap(frame->bitmap()), hash); | 165 EXPECT_EQ(hashBitmap(frame->bitmap()), hash); |
| 139 } | 166 } |
| 140 | 167 |
| 141 } // namespace blink | 168 } // namespace blink |
| OLD | NEW |