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 60d65443bb9078e6621f8440674f7661dacdf33c..ec46fd28dc0efe18714bc5ec933944cfaa3b09bf 100644 |
--- a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
@@ -120,6 +120,24 @@ PassRefPtr<SkImage> DeferredImageDecoder::createFrameAtIndex(size_t index) |
return fromSkSp(SkImage::MakeFromBitmap(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) { |
@@ -134,8 +152,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); |
+ } |
} |
} |