Index: third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
index 5600cc13cc12c8c73fd6a7088e16eafc53bf2852..969d0942f528d635ae80b32aa10fc9783ed558fe 100644 |
--- a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
@@ -117,6 +117,24 @@ PassRefPtr<SkImage> DeferredImageDecoder::createFrameAtIndex(size_t index) |
return adoptRef(SkImage::NewFromBitmap(frame->bitmap())); |
} |
+bool DeferredImageDecoder::hasData() const |
+{ |
+ return static_cast<bool>(m_rwBuffer); |
+} |
+ |
+PassRefPtr<SharedBuffer> DeferredImageDecoder::data() |
+{ |
+ if (!m_rwBuffer) |
+ return nullptr; |
+ RefPtr<SkROBuffer> roBuffer = adoptRef(m_rwBuffer->newRBufferSnapshot()); |
+ RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(roBuffer->size()); |
+ SkROBuffer::Iter it(roBuffer.get()); |
+ do { |
+ sharedBuffer->append(static_cast<const char*>(it.data()), it.size()); |
+ } while (it.next()); |
+ return sharedBuffer; |
+} |
+ |
void DeferredImageDecoder::setData(SharedBuffer& data, bool allDataReceived) |
{ |
if (m_actualDecoder) { |
@@ -131,8 +149,9 @@ void DeferredImageDecoder::setData(SharedBuffer& data, bool allDataReceived) |
const char* segment = 0; |
for (size_t length = data.getSomeData(segment, m_rwBuffer->size()); |
- length; length = data.getSomeData(segment, m_rwBuffer->size())) |
+ length; length = data.getSomeData(segment, m_rwBuffer->size())) { |
m_rwBuffer->append(segment, length); |
+ } |
} |
} |