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

Unified Diff: third_party/WebKit/Source/platform/image-decoders/ImageDecoderTestHelpers.cpp

Issue 1812273003: Eliminate copies of encoded image data (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoderTestHelpers.cpp
diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoderTestHelpers.cpp b/third_party/WebKit/Source/platform/image-decoders/ImageDecoderTestHelpers.cpp
index 10824940aad9179c0359a15481b7e693c43902bb..19fb93788204b3421686790246c1ba1888427470 100644
--- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoderTestHelpers.cpp
+++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoderTestHelpers.cpp
@@ -7,6 +7,7 @@
#include "platform/SharedBuffer.h"
#include "platform/image-decoders/ImageDecoder.h"
#include "platform/image-decoders/ImageFrame.h"
+#include "platform/image-decoders/SharedBufferSegmentReader.h"
#include "platform/testing/UnitTestHelpers.h"
#include "public/platform/Platform.h"
#include "public/platform/WebUnitTestSupport.h"
@@ -42,7 +43,8 @@ unsigned hashBitmap(const SkBitmap& bitmap)
static unsigned createDecodingBaseline(DecoderCreator createDecoder, SharedBuffer* data)
{
OwnPtr<ImageDecoder> decoder = createDecoder();
- decoder->setData(data, true);
+ RefPtr<SharedBufferSegmentReader> segmentReader = adoptRef(new SharedBufferSegmentReader(data));
+ decoder->setData(segmentReader.get(), true);
f(malita) 2016/03/23 16:41:58 If we update setData to take a PassRefPtr, this sh
ImageFrame* frame = decoder->frameBufferAtIndex(0);
return hashBitmap(frame->bitmap());
}
@@ -50,7 +52,8 @@ static unsigned createDecodingBaseline(DecoderCreator createDecoder, SharedBuffe
void createDecodingBaseline(DecoderCreator createDecoder, SharedBuffer* data, Vector<unsigned>* baselineHashes)
{
OwnPtr<ImageDecoder> decoder = createDecoder();
- decoder->setData(data, true);
+ RefPtr<SharedBufferSegmentReader> segmentReader = adoptRef(new SharedBufferSegmentReader(data));
+ decoder->setData(segmentReader.get(), true);
f(malita) 2016/03/23 16:41:58 ditto
size_t frameCount = decoder->frameCount();
for (size_t i = 0; i < frameCount; ++i) {
ImageFrame* frame = decoder->frameBufferAtIndex(i);
@@ -74,13 +77,14 @@ void testByteByByteDecode(DecoderCreator createDecoder, const char* file, size_t
// Pass data to decoder byte by byte.
RefPtr<SharedBuffer> sourceData[2] = { SharedBuffer::create(), SharedBuffer::create() };
+ RefPtr<SharedBufferSegmentReader> segmentReader[2] = { adoptRef(new SharedBufferSegmentReader(sourceData[0])), adoptRef(new SharedBufferSegmentReader(sourceData[1])) };
const char* source = data->data();
for (size_t length = 1; length <= data->size() && !decoder->failed(); ++length) {
sourceData[0]->append(source, 1);
sourceData[1]->append(source++, 1);
// Alternate the buffers to cover the JPEGImageDecoder::onSetData restart code.
- decoder->setData(sourceData[length & 1].get(), length == data->size());
+ decoder->setData(segmentReader[length & 1].get(), length == data->size());
EXPECT_LE(frameCount, decoder->frameCount());
frameCount = decoder->frameCount();
@@ -125,7 +129,8 @@ void testMergeBuffer(DecoderCreator createDecoder, const char* file)
segmentedData->append(data->data(), data->size());
OwnPtr<ImageDecoder> decoder = createDecoder();
- decoder->setData(segmentedData.get(), true);
+ RefPtr<SharedBufferSegmentReader> segmentReader = adoptRef(new SharedBufferSegmentReader(data));
+ decoder->setData(segmentReader.get(), true);
ASSERT_TRUE(decoder->isSizeAvailable());

Powered by Google App Engine
This is Rietveld 408576698