| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "webkit/glue/resource_request_body.h" | 5 #include "webkit/glue/resource_request_body.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "net/base/upload_data.h" | 8 #include "net/base/upload_data.h" |
| 9 #include "webkit/blob/blob_storage_controller.h" | 9 #include "webkit/blob/blob_storage_controller.h" |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 elements_.push_back(Element()); | 29 elements_.push_back(Element()); |
| 30 elements_.back().SetToFilePathRange(file_path, offset, length, | 30 elements_.back().SetToFilePathRange(file_path, offset, length, |
| 31 expected_modification_time); | 31 expected_modification_time); |
| 32 } | 32 } |
| 33 | 33 |
| 34 void ResourceRequestBody::AppendBlob(const GURL& blob_url) { | 34 void ResourceRequestBody::AppendBlob(const GURL& blob_url) { |
| 35 elements_.push_back(Element()); | 35 elements_.push_back(Element()); |
| 36 elements_.back().SetToBlobUrl(blob_url); | 36 elements_.back().SetToBlobUrl(blob_url); |
| 37 } | 37 } |
| 38 | 38 |
| 39 void ResourceRequestBody::AppendFileSystemFileRange( |
| 40 const GURL& url, uint64 offset, uint64 length, |
| 41 const base::Time& expected_modification_time) { |
| 42 elements_.push_back(Element()); |
| 43 elements_.back().SetToFileSystemUrlRange(url, offset, length, |
| 44 expected_modification_time); |
| 45 } |
| 46 |
| 39 net::UploadData* ResourceRequestBody::ResolveElementsAndCreateUploadData( | 47 net::UploadData* ResourceRequestBody::ResolveElementsAndCreateUploadData( |
| 40 BlobStorageController* blob_controller) { | 48 BlobStorageController* blob_controller) { |
| 41 net::UploadData* upload_data = new net::UploadData; | 49 net::UploadData* upload_data = new net::UploadData; |
| 42 // We attach 'this' to UploadData so that we do not need to copy | 50 // We attach 'this' to UploadData so that we do not need to copy |
| 43 // bytes for TYPE_BYTES. | 51 // bytes for TYPE_BYTES. |
| 44 upload_data->SetUserData( | 52 upload_data->SetUserData( |
| 45 this, new base::UserDataAdapter<ResourceRequestBody>(this)); | 53 this, new base::UserDataAdapter<ResourceRequestBody>(this)); |
| 46 std::vector<net::UploadElement>* elements = | 54 std::vector<net::UploadElement>* elements = |
| 47 upload_data->elements_mutable(); | 55 upload_data->elements_mutable(); |
| 48 for (size_t i = 0; i < elements_.size(); ++i) { | 56 for (size_t i = 0; i < elements_.size(); ++i) { |
| 49 const Element& element = elements_[i]; | 57 const Element& element = elements_[i]; |
| 50 switch (element.type()) { | 58 switch (element.type()) { |
| 51 case Element::TYPE_BYTES: | 59 case Element::TYPE_BYTES: |
| 52 elements->push_back(net::UploadElement()); | 60 elements->push_back(net::UploadElement()); |
| 53 elements->back().SetToSharedBytes(element.bytes(), element.length()); | 61 elements->back().SetToSharedBytes(element.bytes(), element.length()); |
| 54 break; | 62 break; |
| 55 case Element::TYPE_FILE: | 63 case Element::TYPE_FILE: |
| 56 elements->push_back(net::UploadElement()); | 64 elements->push_back(net::UploadElement()); |
| 57 elements->back().SetToFilePathRange( | 65 elements->back().SetToFilePathRange( |
| 58 element.path(), | 66 element.path(), |
| 59 element.offset(), | 67 element.offset(), |
| 60 element.length(), | 68 element.length(), |
| 61 element.expected_modification_time()); | 69 element.expected_modification_time()); |
| 62 break; | 70 break; |
| 71 case Element::TYPE_FILE_FILESYSTEM: |
| 72 // TODO(kinuko): Resolve FileSystemURL before creating UploadData. |
| 73 NOTREACHED(); |
| 74 break; |
| 63 case Element::TYPE_BLOB: | 75 case Element::TYPE_BLOB: |
| 64 ResolveBlobReference(blob_controller, element.url(), elements); | 76 ResolveBlobReference(blob_controller, element.url(), elements); |
| 65 break; | 77 break; |
| 66 case Element::TYPE_UNKNOWN: | 78 case Element::TYPE_UNKNOWN: |
| 67 NOTREACHED(); | 79 NOTREACHED(); |
| 68 break; | 80 break; |
| 69 } | 81 } |
| 70 } | 82 } |
| 71 upload_data->set_identifier(identifier_); | 83 upload_data->set_identifier(identifier_); |
| 72 return upload_data; | 84 return upload_data; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 102 item.bytes() + static_cast<int>(item.offset()), | 114 item.bytes() + static_cast<int>(item.offset()), |
| 103 static_cast<int>(item.length())); | 115 static_cast<int>(item.length())); |
| 104 break; | 116 break; |
| 105 case BlobData::Item::TYPE_FILE: | 117 case BlobData::Item::TYPE_FILE: |
| 106 element.SetToFilePathRange( | 118 element.SetToFilePathRange( |
| 107 item.path(), | 119 item.path(), |
| 108 item.offset(), | 120 item.offset(), |
| 109 item.length(), | 121 item.length(), |
| 110 item.expected_modification_time()); | 122 item.expected_modification_time()); |
| 111 break; | 123 break; |
| 124 case BlobData::Item::TYPE_FILE_FILESYSTEM: |
| 125 // TODO(kinuko): Resolve FileSystemURL before creating UploadData. |
| 126 NOTREACHED(); |
| 127 break; |
| 112 default: | 128 default: |
| 113 NOTREACHED(); | 129 NOTREACHED(); |
| 114 break; | 130 break; |
| 115 } | 131 } |
| 116 } | 132 } |
| 117 } | 133 } |
| 118 | 134 |
| 119 } // namespace webkit_glue | 135 } // namespace webkit_glue |
| OLD | NEW |