Chromium Code Reviews| Index: content/browser/loader/upload_data_stream_builder.cc |
| diff --git a/content/browser/loader/upload_data_stream_builder.cc b/content/browser/loader/upload_data_stream_builder.cc |
| index ba7cca77d25000bfc3786cd2de08ac3189f2cfa5..2985f5453928453770a3b556e7354ef735b3cbb3 100644 |
| --- a/content/browser/loader/upload_data_stream_builder.cc |
| +++ b/content/browser/loader/upload_data_stream_builder.cc |
| @@ -13,6 +13,10 @@ |
| #include "webkit/browser/fileapi/upload_file_system_file_element_reader.h" |
| #include "webkit/common/resource_request_body.h" |
| +#if defined(OS_ANDROID) |
| +#include "net/base/upload_content_url_element_reader_android.h" |
| +#endif |
| + |
| using webkit_blob::BlobData; |
| using webkit_blob::BlobDataHandle; |
| using webkit_blob::BlobStorageContext; |
| @@ -64,6 +68,33 @@ class FileElementReader : public net::UploadFileElementReader { |
| DISALLOW_COPY_AND_ASSIGN(FileElementReader); |
| }; |
| +#if defined(OS_ANDROID) |
| +// A subclass of net::UploadContentUrlElementReader which owns |
| +// ResourceRequestBody. |
| +class ContentUrlFileElementReader : public net::UploadContentUrlElementReader { |
| + public: |
| + ContentUrlFileElementReader(ResourceRequestBody* resource_request_body, |
| + base::TaskRunner* task_runner, |
| + const ResourceRequestBody::Element& element) |
| + : net::UploadContentUrlElementReader( |
| + task_runner, |
|
kinuko
2013/10/29 02:52:31
nit: usually we indent not from ':' but from where
qinmin
2013/10/29 19:14:21
Done.
|
| + element.content_url(), |
| + element.offset(), |
| + element.length(), |
| + element.expected_modification_time()), |
| + resource_request_body_(resource_request_body) { |
| + DCHECK_EQ(ResourceRequestBody::Element::TYPE_CONTENT_URL, element.type()); |
| + } |
| + |
| + virtual ~ContentUrlFileElementReader() {} |
| + |
| + private: |
| + scoped_refptr<ResourceRequestBody> resource_request_body_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ContentUrlFileElementReader); |
| +}; |
| +#endif |
| + |
| void ResolveBlobReference( |
| ResourceRequestBody* body, |
| webkit_blob::BlobStorageContext* blob_context, |
| @@ -130,6 +161,12 @@ scoped_ptr<net::UploadDataStream> UploadDataStreamBuilder::Build( |
| element.length(), |
| element.expected_modification_time())); |
| break; |
| +#if defined(OS_ANDROID) |
| + case ResourceRequestBody::Element::TYPE_CONTENT_URL: |
| + element_readers.push_back( |
| + new ContentUrlFileElementReader(body, file_task_runner, element)); |
| + break; |
| +#endif |
| case ResourceRequestBody::Element::TYPE_BLOB: |
| // Blob elements should be resolved beforehand. |
| NOTREACHED(); |