| Index: third_party/WebKit/Source/platform/image-decoders/SegmentReader.cpp
|
| diff --git a/third_party/WebKit/Source/platform/image-decoders/SegmentReader.cpp b/third_party/WebKit/Source/platform/image-decoders/SegmentReader.cpp
|
| index f40f5e70697d4d9a2a60cf0c49a2f9d151e856fd..113296cd1214f99e3af049034963094040a5bce0 100644
|
| --- a/third_party/WebKit/Source/platform/image-decoders/SegmentReader.cpp
|
| +++ b/third_party/WebKit/Source/platform/image-decoders/SegmentReader.cpp
|
| @@ -5,6 +5,7 @@
|
| #include "platform/image-decoders/SegmentReader.h"
|
|
|
| #include "platform/SharedBuffer.h"
|
| +#include "platform/SharedBufferStep.h"
|
| #include "platform/wtf/Assertions.h"
|
| #include "platform/wtf/Noncopyable.h"
|
| #include "platform/wtf/PassRefPtr.h"
|
| @@ -47,6 +48,41 @@ sk_sp<SkData> SharedBufferSegmentReader::GetAsSkData() const {
|
| return shared_buffer_->GetAsSkData();
|
| }
|
|
|
| +// SharedBufferStepSegmentReader
|
| +// ---------------------------------------------------
|
| +
|
| +// Interface for ImageDecoder to read a SharedBufferStep.
|
| +class SharedBufferStepSegmentReader final : public SegmentReader {
|
| + WTF_MAKE_NONCOPYABLE(SharedBufferStepSegmentReader);
|
| +
|
| + public:
|
| + SharedBufferStepSegmentReader(PassRefPtr<SharedBufferStep>);
|
| + size_t size() const override;
|
| + size_t GetSomeData(const char*& data, size_t position) const override;
|
| + sk_sp<SkData> GetAsSkData() const override;
|
| +
|
| + private:
|
| + RefPtr<SharedBufferStep> step_;
|
| + size_t size_;
|
| +};
|
| +
|
| +SharedBufferStepSegmentReader::SharedBufferStepSegmentReader(
|
| + PassRefPtr<SharedBufferStep> step)
|
| + : step_(std::move(step)), size_(step_->size()) {}
|
| +
|
| +size_t SharedBufferStepSegmentReader::size() const {
|
| + return size_;
|
| +}
|
| +
|
| +size_t SharedBufferStepSegmentReader::GetSomeData(const char*& data,
|
| + size_t position) const {
|
| + return step_->GetSomeData(data, position);
|
| +}
|
| +
|
| +sk_sp<SkData> SharedBufferStepSegmentReader::GetAsSkData() const {
|
| + return step_->GetAsSkData();
|
| +}
|
| +
|
| // DataSegmentReader -----------------------------------------------------------
|
|
|
| // Interface for ImageDecoder to read an SkData.
|
| @@ -190,6 +226,11 @@ PassRefPtr<SegmentReader> SegmentReader::CreateFromSkData(sk_sp<SkData> data) {
|
| return AdoptRef(new DataSegmentReader(std::move(data)));
|
| }
|
|
|
| +PassRefPtr<SegmentReader> SegmentReader::CreateFromSharedBufferStep(
|
| + PassRefPtr<SharedBufferStep> step) {
|
| + return AdoptRef(new SharedBufferStepSegmentReader(std::move(step)));
|
| +}
|
| +
|
| PassRefPtr<SegmentReader> SegmentReader::CreateFromSkROBuffer(
|
| sk_sp<SkROBuffer> buffer) {
|
| return AdoptRef(new ROBufferSegmentReader(std::move(buffer)));
|
|
|