| 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 |