OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/loader/upload_data_stream_builder.h" | 5 #include "content/browser/loader/upload_data_stream_builder.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 DISALLOW_COPY_AND_ASSIGN(FileElementReader); | 70 DISALLOW_COPY_AND_ASSIGN(FileElementReader); |
71 }; | 71 }; |
72 | 72 |
73 } // namespace | 73 } // namespace |
74 | 74 |
75 scoped_ptr<net::UploadDataStream> UploadDataStreamBuilder::Build( | 75 scoped_ptr<net::UploadDataStream> UploadDataStreamBuilder::Build( |
76 ResourceRequestBody* body, | 76 ResourceRequestBody* body, |
77 storage::BlobStorageContext* blob_context, | 77 storage::BlobStorageContext* blob_context, |
78 storage::FileSystemContext* file_system_context, | 78 storage::FileSystemContext* file_system_context, |
79 base::SingleThreadTaskRunner* file_task_runner) { | 79 base::SingleThreadTaskRunner* file_task_runner) { |
80 ScopedVector<net::UploadElementReader> element_readers; | 80 std::vector<scoped_ptr<net::UploadElementReader>> element_readers; |
81 for (const auto& element : *body->elements()) { | 81 for (const auto& element : *body->elements()) { |
82 switch (element.type()) { | 82 switch (element.type()) { |
83 case ResourceRequestBody::Element::TYPE_BYTES: | 83 case ResourceRequestBody::Element::TYPE_BYTES: |
84 element_readers.push_back(new BytesElementReader(body, element)); | 84 element_readers.push_back( |
| 85 make_scoped_ptr(new BytesElementReader(body, element))); |
85 break; | 86 break; |
86 case ResourceRequestBody::Element::TYPE_FILE: | 87 case ResourceRequestBody::Element::TYPE_FILE: |
87 element_readers.push_back( | 88 element_readers.push_back(make_scoped_ptr( |
88 new FileElementReader(body, file_task_runner, element)); | 89 new FileElementReader(body, file_task_runner, element))); |
89 break; | 90 break; |
90 case ResourceRequestBody::Element::TYPE_FILE_FILESYSTEM: | 91 case ResourceRequestBody::Element::TYPE_FILE_FILESYSTEM: |
91 // If |body| contains any filesystem URLs, the caller should have | 92 // If |body| contains any filesystem URLs, the caller should have |
92 // supplied a FileSystemContext. | 93 // supplied a FileSystemContext. |
93 DCHECK(file_system_context); | 94 DCHECK(file_system_context); |
94 element_readers.push_back( | 95 element_readers.push_back( |
95 new content::UploadFileSystemFileElementReader( | 96 make_scoped_ptr(new content::UploadFileSystemFileElementReader( |
96 file_system_context, | 97 file_system_context, element.filesystem_url(), element.offset(), |
97 element.filesystem_url(), | 98 element.length(), element.expected_modification_time()))); |
98 element.offset(), | |
99 element.length(), | |
100 element.expected_modification_time())); | |
101 break; | 99 break; |
102 case ResourceRequestBody::Element::TYPE_BLOB: { | 100 case ResourceRequestBody::Element::TYPE_BLOB: { |
103 DCHECK_EQ(std::numeric_limits<uint64_t>::max(), element.length()); | 101 DCHECK_EQ(std::numeric_limits<uint64_t>::max(), element.length()); |
104 DCHECK_EQ(0ul, element.offset()); | 102 DCHECK_EQ(0ul, element.offset()); |
105 scoped_ptr<storage::BlobDataHandle> handle = | 103 scoped_ptr<storage::BlobDataHandle> handle = |
106 blob_context->GetBlobDataFromUUID(element.blob_uuid()); | 104 blob_context->GetBlobDataFromUUID(element.blob_uuid()); |
107 storage::BlobDataHandle* handle_ptr = handle.get(); | 105 storage::BlobDataHandle* handle_ptr = handle.get(); |
108 element_readers.push_back(new storage::UploadBlobElementReader( | 106 element_readers.push_back( |
109 handle_ptr->CreateReader(file_system_context, file_task_runner), | 107 make_scoped_ptr(new storage::UploadBlobElementReader( |
110 handle.Pass())); | 108 handle_ptr->CreateReader(file_system_context, file_task_runner), |
| 109 std::move(handle)))); |
111 break; | 110 break; |
112 } | 111 } |
113 case ResourceRequestBody::Element::TYPE_DISK_CACHE_ENTRY: | 112 case ResourceRequestBody::Element::TYPE_DISK_CACHE_ENTRY: |
114 case ResourceRequestBody::Element::TYPE_BYTES_DESCRIPTION: | 113 case ResourceRequestBody::Element::TYPE_BYTES_DESCRIPTION: |
115 case ResourceRequestBody::Element::TYPE_UNKNOWN: | 114 case ResourceRequestBody::Element::TYPE_UNKNOWN: |
116 NOTREACHED(); | 115 NOTREACHED(); |
117 break; | 116 break; |
118 } | 117 } |
119 } | 118 } |
120 | 119 |
121 return make_scoped_ptr( | 120 return make_scoped_ptr(new net::ElementsUploadDataStream( |
122 new net::ElementsUploadDataStream(element_readers.Pass(), | 121 std::move(element_readers), body->identifier())); |
123 body->identifier())); | |
124 } | 122 } |
125 | 123 |
126 } // namespace content | 124 } // namespace content |
OLD | NEW |