OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "modules/fetch/FetchDataLoader.h" | 5 #include "modules/fetch/FetchDataLoader.h" |
6 | 6 |
7 #include "core/html/parser/TextResourceDecoder.h" | 7 #include "core/html/parser/TextResourceDecoder.h" |
| 8 #include "wtf/PtrUtil.h" |
8 #include "wtf/text/StringBuilder.h" | 9 #include "wtf/text/StringBuilder.h" |
9 #include "wtf/text/WTFString.h" | 10 #include "wtf/text/WTFString.h" |
10 #include "wtf/typed_arrays/ArrayBufferBuilder.h" | 11 #include "wtf/typed_arrays/ArrayBufferBuilder.h" |
| 12 #include <memory> |
11 | 13 |
12 namespace blink { | 14 namespace blink { |
13 | 15 |
14 namespace { | 16 namespace { |
15 | 17 |
16 class FetchDataLoaderAsBlobHandle | 18 class FetchDataLoaderAsBlobHandle |
17 : public FetchDataLoader | 19 : public FetchDataLoader |
18 , public WebDataConsumerHandle::Client { | 20 , public WebDataConsumerHandle::Client { |
19 public: | 21 public: |
20 explicit FetchDataLoaderAsBlobHandle(const String& mimeType) | 22 explicit FetchDataLoaderAsBlobHandle(const String& mimeType) |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 } | 96 } |
95 } | 97 } |
96 | 98 |
97 void cancel() override | 99 void cancel() override |
98 { | 100 { |
99 m_reader.reset(); | 101 m_reader.reset(); |
100 m_blobData.reset(); | 102 m_blobData.reset(); |
101 m_client.clear(); | 103 m_client.clear(); |
102 } | 104 } |
103 | 105 |
104 OwnPtr<FetchDataConsumerHandle::Reader> m_reader; | 106 std::unique_ptr<FetchDataConsumerHandle::Reader> m_reader; |
105 Member<FetchDataLoader::Client> m_client; | 107 Member<FetchDataLoader::Client> m_client; |
106 | 108 |
107 String m_mimeType; | 109 String m_mimeType; |
108 OwnPtr<BlobData> m_blobData; | 110 std::unique_ptr<BlobData> m_blobData; |
109 }; | 111 }; |
110 | 112 |
111 class FetchDataLoaderAsArrayBuffer | 113 class FetchDataLoaderAsArrayBuffer |
112 : public FetchDataLoader | 114 : public FetchDataLoader |
113 , public WebDataConsumerHandle::Client { | 115 , public WebDataConsumerHandle::Client { |
114 public: | 116 public: |
115 FetchDataLoaderAsArrayBuffer() | 117 FetchDataLoaderAsArrayBuffer() |
116 : m_client(nullptr) { } | 118 : m_client(nullptr) { } |
117 | 119 |
118 DEFINE_INLINE_VIRTUAL_TRACE() | 120 DEFINE_INLINE_VIRTUAL_TRACE() |
119 { | 121 { |
120 FetchDataLoader::trace(visitor); | 122 FetchDataLoader::trace(visitor); |
121 visitor->trace(m_client); | 123 visitor->trace(m_client); |
122 } | 124 } |
123 | 125 |
124 protected: | 126 protected: |
125 void start(FetchDataConsumerHandle* handle, FetchDataLoader::Client* client)
override | 127 void start(FetchDataConsumerHandle* handle, FetchDataLoader::Client* client)
override |
126 { | 128 { |
127 ASSERT(!m_client); | 129 ASSERT(!m_client); |
128 ASSERT(!m_rawData); | 130 ASSERT(!m_rawData); |
129 ASSERT(!m_reader); | 131 ASSERT(!m_reader); |
130 m_client = client; | 132 m_client = client; |
131 m_rawData = adoptPtr(new ArrayBufferBuilder()); | 133 m_rawData = wrapUnique(new ArrayBufferBuilder()); |
132 m_reader = handle->obtainReader(this); | 134 m_reader = handle->obtainReader(this); |
133 } | 135 } |
134 | 136 |
135 void didGetReadable() override | 137 void didGetReadable() override |
136 { | 138 { |
137 ASSERT(m_client); | 139 ASSERT(m_client); |
138 ASSERT(m_rawData); | 140 ASSERT(m_rawData); |
139 ASSERT(m_reader); | 141 ASSERT(m_reader); |
140 | 142 |
141 while (true) { | 143 while (true) { |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 m_client.clear(); | 186 m_client.clear(); |
185 } | 187 } |
186 | 188 |
187 void cancel() override | 189 void cancel() override |
188 { | 190 { |
189 m_reader.reset(); | 191 m_reader.reset(); |
190 m_rawData.reset(); | 192 m_rawData.reset(); |
191 m_client.clear(); | 193 m_client.clear(); |
192 } | 194 } |
193 | 195 |
194 OwnPtr<FetchDataConsumerHandle::Reader> m_reader; | 196 std::unique_ptr<FetchDataConsumerHandle::Reader> m_reader; |
195 Member<FetchDataLoader::Client> m_client; | 197 Member<FetchDataLoader::Client> m_client; |
196 | 198 |
197 OwnPtr<ArrayBufferBuilder> m_rawData; | 199 std::unique_ptr<ArrayBufferBuilder> m_rawData; |
198 }; | 200 }; |
199 | 201 |
200 class FetchDataLoaderAsString | 202 class FetchDataLoaderAsString |
201 : public FetchDataLoader | 203 : public FetchDataLoader |
202 , public WebDataConsumerHandle::Client { | 204 , public WebDataConsumerHandle::Client { |
203 public: | 205 public: |
204 FetchDataLoaderAsString() | 206 FetchDataLoaderAsString() |
205 : m_client(nullptr) { } | 207 : m_client(nullptr) { } |
206 | 208 |
207 DEFINE_INLINE_VIRTUAL_TRACE() | 209 DEFINE_INLINE_VIRTUAL_TRACE() |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 } | 272 } |
271 | 273 |
272 void cancel() override | 274 void cancel() override |
273 { | 275 { |
274 m_reader.reset(); | 276 m_reader.reset(); |
275 m_builder.clear(); | 277 m_builder.clear(); |
276 m_decoder.reset(); | 278 m_decoder.reset(); |
277 m_client.clear(); | 279 m_client.clear(); |
278 } | 280 } |
279 | 281 |
280 OwnPtr<FetchDataConsumerHandle::Reader> m_reader; | 282 std::unique_ptr<FetchDataConsumerHandle::Reader> m_reader; |
281 Member<FetchDataLoader::Client> m_client; | 283 Member<FetchDataLoader::Client> m_client; |
282 | 284 |
283 OwnPtr<TextResourceDecoder> m_decoder; | 285 std::unique_ptr<TextResourceDecoder> m_decoder; |
284 StringBuilder m_builder; | 286 StringBuilder m_builder; |
285 }; | 287 }; |
286 | 288 |
287 class FetchDataLoaderAsStream | 289 class FetchDataLoaderAsStream |
288 : public FetchDataLoader | 290 : public FetchDataLoader |
289 , public WebDataConsumerHandle::Client { | 291 , public WebDataConsumerHandle::Client { |
290 public: | 292 public: |
291 explicit FetchDataLoaderAsStream(Stream* outStream) | 293 explicit FetchDataLoaderAsStream(Stream* outStream) |
292 : m_client(nullptr) | 294 : m_client(nullptr) |
293 , m_outStream(outStream) { } | 295 , m_outStream(outStream) { } |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 cleanup(); | 364 cleanup(); |
363 } | 365 } |
364 | 366 |
365 void cleanup() | 367 void cleanup() |
366 { | 368 { |
367 m_reader.reset(); | 369 m_reader.reset(); |
368 m_client.clear(); | 370 m_client.clear(); |
369 m_outStream.clear(); | 371 m_outStream.clear(); |
370 } | 372 } |
371 | 373 |
372 OwnPtr<FetchDataConsumerHandle::Reader> m_reader; | 374 std::unique_ptr<FetchDataConsumerHandle::Reader> m_reader; |
373 Member<FetchDataLoader::Client> m_client; | 375 Member<FetchDataLoader::Client> m_client; |
374 | 376 |
375 Member<Stream> m_outStream; | 377 Member<Stream> m_outStream; |
376 }; | 378 }; |
377 | 379 |
378 | 380 |
379 } // namespace | 381 } // namespace |
380 | 382 |
381 FetchDataLoader* FetchDataLoader::createLoaderAsBlobHandle(const String& mimeTyp
e) | 383 FetchDataLoader* FetchDataLoader::createLoaderAsBlobHandle(const String& mimeTyp
e) |
382 { | 384 { |
383 return new FetchDataLoaderAsBlobHandle(mimeType); | 385 return new FetchDataLoaderAsBlobHandle(mimeType); |
384 } | 386 } |
385 | 387 |
386 FetchDataLoader* FetchDataLoader::createLoaderAsArrayBuffer() | 388 FetchDataLoader* FetchDataLoader::createLoaderAsArrayBuffer() |
387 { | 389 { |
388 return new FetchDataLoaderAsArrayBuffer(); | 390 return new FetchDataLoaderAsArrayBuffer(); |
389 } | 391 } |
390 | 392 |
391 FetchDataLoader* FetchDataLoader::createLoaderAsString() | 393 FetchDataLoader* FetchDataLoader::createLoaderAsString() |
392 { | 394 { |
393 return new FetchDataLoaderAsString(); | 395 return new FetchDataLoaderAsString(); |
394 } | 396 } |
395 | 397 |
396 FetchDataLoader* FetchDataLoader::createLoaderAsStream(Stream* outStream) | 398 FetchDataLoader* FetchDataLoader::createLoaderAsStream(Stream* outStream) |
397 { | 399 { |
398 return new FetchDataLoaderAsStream(outStream); | 400 return new FetchDataLoaderAsStream(outStream); |
399 } | 401 } |
400 | 402 |
401 } // namespace blink | 403 } // namespace blink |
OLD | NEW |