| Index: net/base/upload_element.h
|
| diff --git a/net/base/upload_element.h b/net/base/upload_element.h
|
| index 65e77011f9227f4fb73d31999de9f365d5affdf0..90444d69036a344cea1086c4fdc8a7cfe551d36d 100644
|
| --- a/net/base/upload_element.h
|
| +++ b/net/base/upload_element.h
|
| @@ -24,7 +24,6 @@ class NET_EXPORT UploadElement {
|
| enum Type {
|
| TYPE_BYTES,
|
| TYPE_FILE,
|
| - TYPE_BLOB,
|
|
|
| // A block of bytes to be sent in chunked encoding immediately, without
|
| // waiting for rest of the data.
|
| @@ -41,7 +40,8 @@ class NET_EXPORT UploadElement {
|
| type_ = type;
|
| }
|
|
|
| - const std::vector<char>& bytes() const { return bytes_; }
|
| + const char* bytes() const { return bytes_start_ ? bytes_start_ : &buf_[0]; }
|
| + uint64 bytes_length() const { return buf_.size() + bytes_length_; }
|
| const FilePath& file_path() const { return file_path_; }
|
| uint64 file_range_offset() const { return file_range_offset_; }
|
| uint64 file_range_length() const { return file_range_length_; }
|
| @@ -49,11 +49,19 @@ class NET_EXPORT UploadElement {
|
| const base::Time& expected_file_modification_time() const {
|
| return expected_file_modification_time_;
|
| }
|
| - const GURL& blob_url() const { return blob_url_; }
|
|
|
| void SetToBytes(const char* bytes, int bytes_len) {
|
| type_ = TYPE_BYTES;
|
| - bytes_.assign(bytes, bytes + bytes_len);
|
| + buf_.assign(bytes, bytes + bytes_len);
|
| + }
|
| +
|
| + // This does not copy the given data and the caller should make sure
|
| + // the data is secured somewhere else (e.g. by attaching the data
|
| + // using SetUserData).
|
| + void SetToSharedBytes(const char* bytes, int bytes_len) {
|
| + type_ = TYPE_BYTES;
|
| + bytes_start_ = bytes;
|
| + bytes_length_ = bytes_len;
|
| }
|
|
|
| void SetToFilePath(const FilePath& path) {
|
| @@ -73,13 +81,6 @@ class NET_EXPORT UploadElement {
|
| expected_file_modification_time_ = expected_modification_time;
|
| }
|
|
|
| - // TODO(jianli): UploadData should not contain any blob reference. We need
|
| - // to define another structure to represent WebKit::WebHTTPBody.
|
| - void SetToBlobUrl(const GURL& blob_url) {
|
| - type_ = TYPE_BLOB;
|
| - blob_url_ = blob_url;
|
| - }
|
| -
|
| // Though similar to bytes, a chunk indicates that the element is sent via
|
| // chunked transfer encoding and not buffered until the full upload data
|
| // is available.
|
| @@ -128,12 +129,13 @@ class NET_EXPORT UploadElement {
|
| }
|
|
|
| Type type_;
|
| - std::vector<char> bytes_;
|
| + std::vector<char> buf_;
|
| + const char* bytes_start_;
|
| + uint64 bytes_length_;
|
| FilePath file_path_;
|
| uint64 file_range_offset_;
|
| uint64 file_range_length_;
|
| base::Time expected_file_modification_time_;
|
| - GURL blob_url_;
|
| bool is_last_chunk_;
|
| bool override_content_length_;
|
| bool content_length_computed_;
|
| @@ -161,7 +163,8 @@ inline bool operator==(const UploadElement& a,
|
| if (a.type() != b.type())
|
| return false;
|
| if (a.type() == UploadElement::TYPE_BYTES)
|
| - return a.bytes() == b.bytes();
|
| + return a.bytes_length() == b.bytes_length() &&
|
| + memcmp(a.bytes(), b.bytes(), b.bytes_length()) == 0;
|
| if (a.type() == UploadElement::TYPE_FILE) {
|
| return a.file_path() == b.file_path() &&
|
| a.file_range_offset() == b.file_range_offset() &&
|
| @@ -169,8 +172,6 @@ inline bool operator==(const UploadElement& a,
|
| a.expected_file_modification_time() ==
|
| b.expected_file_modification_time();
|
| }
|
| - if (a.type() == UploadElement::TYPE_BLOB)
|
| - return a.blob_url() == b.blob_url();
|
| return false;
|
| }
|
|
|
|
|