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