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

Side by Side Diff: third_party/WebKit/Source/platform/image-decoders/SegmentReader.cpp

Issue 2918443003: Remove redundant reading and writing of data about SharedBuffer.
Patch Set: benchmark Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/SegmentReader.h" 5 #include "platform/image-decoders/SegmentReader.h"
6 6
7 #include "platform/SharedBuffer.h" 7 #include "platform/SharedBuffer.h"
8 #include "platform/SharedBufferStep.h"
8 #include "platform/wtf/Assertions.h" 9 #include "platform/wtf/Assertions.h"
9 #include "platform/wtf/Noncopyable.h" 10 #include "platform/wtf/Noncopyable.h"
10 #include "platform/wtf/PassRefPtr.h" 11 #include "platform/wtf/PassRefPtr.h"
11 #include "platform/wtf/RefPtr.h" 12 #include "platform/wtf/RefPtr.h"
12 #include "platform/wtf/ThreadingPrimitives.h" 13 #include "platform/wtf/ThreadingPrimitives.h"
13 #include "third_party/skia/include/core/SkData.h" 14 #include "third_party/skia/include/core/SkData.h"
14 15
15 namespace blink { 16 namespace blink {
16 17
17 // SharedBufferSegmentReader --------------------------------------------------- 18 // SharedBufferSegmentReader ---------------------------------------------------
(...skipping 22 matching lines...) Expand all
40 41
41 size_t SharedBufferSegmentReader::GetSomeData(const char*& data, 42 size_t SharedBufferSegmentReader::GetSomeData(const char*& data,
42 size_t position) const { 43 size_t position) const {
43 return shared_buffer_->GetSomeData(data, position); 44 return shared_buffer_->GetSomeData(data, position);
44 } 45 }
45 46
46 sk_sp<SkData> SharedBufferSegmentReader::GetAsSkData() const { 47 sk_sp<SkData> SharedBufferSegmentReader::GetAsSkData() const {
47 return shared_buffer_->GetAsSkData(); 48 return shared_buffer_->GetAsSkData();
48 } 49 }
49 50
51 // SharedBufferStepSegmentReader
52 // ---------------------------------------------------
53
54 // Interface for ImageDecoder to read a SharedBufferStep.
55 class SharedBufferStepSegmentReader final : public SegmentReader {
56 WTF_MAKE_NONCOPYABLE(SharedBufferStepSegmentReader);
57
58 public:
59 SharedBufferStepSegmentReader(PassRefPtr<SharedBufferStep>);
60 size_t size() const override;
61 size_t GetSomeData(const char*& data, size_t position) const override;
62 sk_sp<SkData> GetAsSkData() const override;
63
64 private:
65 RefPtr<SharedBufferStep> step_;
66 size_t size_;
67 };
68
69 SharedBufferStepSegmentReader::SharedBufferStepSegmentReader(
70 PassRefPtr<SharedBufferStep> step)
71 : step_(std::move(step)), size_(step_->size()) {}
72
73 size_t SharedBufferStepSegmentReader::size() const {
74 return size_;
75 }
76
77 size_t SharedBufferStepSegmentReader::GetSomeData(const char*& data,
78 size_t position) const {
79 return step_->GetSomeData(data, position);
80 }
81
82 sk_sp<SkData> SharedBufferStepSegmentReader::GetAsSkData() const {
83 return step_->GetAsSkData();
84 }
85
50 // DataSegmentReader ----------------------------------------------------------- 86 // DataSegmentReader -----------------------------------------------------------
51 87
52 // Interface for ImageDecoder to read an SkData. 88 // Interface for ImageDecoder to read an SkData.
53 class DataSegmentReader final : public SegmentReader { 89 class DataSegmentReader final : public SegmentReader {
54 WTF_MAKE_NONCOPYABLE(DataSegmentReader); 90 WTF_MAKE_NONCOPYABLE(DataSegmentReader);
55 91
56 public: 92 public:
57 DataSegmentReader(sk_sp<SkData>); 93 DataSegmentReader(sk_sp<SkData>);
58 size_t size() const override; 94 size_t size() const override;
59 size_t GetSomeData(const char*& data, size_t position) const override; 95 size_t GetSomeData(const char*& data, size_t position) const override;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 219
184 PassRefPtr<SegmentReader> SegmentReader::CreateFromSharedBuffer( 220 PassRefPtr<SegmentReader> SegmentReader::CreateFromSharedBuffer(
185 PassRefPtr<SharedBuffer> buffer) { 221 PassRefPtr<SharedBuffer> buffer) {
186 return AdoptRef(new SharedBufferSegmentReader(std::move(buffer))); 222 return AdoptRef(new SharedBufferSegmentReader(std::move(buffer)));
187 } 223 }
188 224
189 PassRefPtr<SegmentReader> SegmentReader::CreateFromSkData(sk_sp<SkData> data) { 225 PassRefPtr<SegmentReader> SegmentReader::CreateFromSkData(sk_sp<SkData> data) {
190 return AdoptRef(new DataSegmentReader(std::move(data))); 226 return AdoptRef(new DataSegmentReader(std::move(data)));
191 } 227 }
192 228
229 PassRefPtr<SegmentReader> SegmentReader::CreateFromSharedBufferStep(
230 PassRefPtr<SharedBufferStep> step) {
231 return AdoptRef(new SharedBufferStepSegmentReader(std::move(step)));
232 }
233
193 PassRefPtr<SegmentReader> SegmentReader::CreateFromSkROBuffer( 234 PassRefPtr<SegmentReader> SegmentReader::CreateFromSkROBuffer(
194 sk_sp<SkROBuffer> buffer) { 235 sk_sp<SkROBuffer> buffer) {
195 return AdoptRef(new ROBufferSegmentReader(std::move(buffer))); 236 return AdoptRef(new ROBufferSegmentReader(std::move(buffer)));
196 } 237 }
197 238
198 } // namespace blink 239 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698