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

Unified Diff: content/browser/loader/upload_data_stream_builder.cc

Issue 46303005: Fix chrome upload with content uri (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698