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

Unified Diff: net/base/upload_data.h

Issue 10834289: Split net::UploadData into two: for IPC and for upload handling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 8 years, 4 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: net/base/upload_data.h
diff --git a/net/base/upload_data.h b/net/base/upload_data.h
index ab6186b78a9194a24d3a85785ecf1a1903c08d8b..571bb0c7147e2cd1e6a782699c5c46d762294ebf 100644
--- a/net/base/upload_data.h
+++ b/net/base/upload_data.h
@@ -14,7 +14,6 @@
#include "base/memory/ref_counted.h"
#include "base/supports_user_data.h"
#include "base/time.h"
-#include "googleurl/src/gurl.h"
#include "net/base/net_export.h"
namespace net {
@@ -46,7 +45,6 @@ class NET_EXPORT UploadData
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.
@@ -65,7 +63,8 @@ class NET_EXPORT UploadData
type_ = type;
}
- const std::vector<char>& bytes() const { return bytes_; }
+ const char* bytes() const { return bytes_start_ ? bytes_start_ : &buf_[0]; }
darin (slow to review) 2012/08/15 17:49:55 maybe you should just ensure that bytes_start_ is
kinuko 2012/08/16 08:14:59 To do so we need to allocate memory by ourselves a
+ 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_; }
@@ -73,11 +72,16 @@ class NET_EXPORT UploadData
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);
+ }
+
+ void SetToSharedBytes(const char* bytes, int bytes_len) {
darin (slow to review) 2012/08/15 17:49:55 You should probably add a warning here about memor
kinuko 2012/08/16 08:14:59 Done.
+ type_ = TYPE_BYTES;
+ bytes_start_ = bytes;
+ bytes_length_ = bytes_len;
}
void SetToFilePath(const FilePath& path) {
@@ -97,13 +101,6 @@ class NET_EXPORT UploadData
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.
@@ -152,12 +149,13 @@ class NET_EXPORT UploadData
}
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_;
@@ -187,8 +185,6 @@ class NET_EXPORT UploadData
uint64 offset, uint64 length,
const base::Time& expected_modification_time);
- void AppendBlob(const GURL& blob_url);
-
// Adds the given chunk of bytes to be sent immediately with chunked transfer
// encoding.
void AppendChunk(const char* bytes, int bytes_len, bool is_last_chunk);
@@ -259,31 +255,6 @@ class NET_EXPORT UploadData
DISALLOW_COPY_AND_ASSIGN(UploadData);
};
-#if defined(UNIT_TEST)
-inline bool operator==(const UploadData::Element& a,
- const UploadData::Element& b) {
- if (a.type() != b.type())
- return false;
- if (a.type() == UploadData::TYPE_BYTES)
- return a.bytes() == b.bytes();
- if (a.type() == UploadData::TYPE_FILE) {
- return a.file_path() == b.file_path() &&
- a.file_range_offset() == b.file_range_offset() &&
- a.file_range_length() == b.file_range_length() &&
- a.expected_file_modification_time() ==
- b.expected_file_modification_time();
- }
- if (a.type() == UploadData::TYPE_BLOB)
- return a.blob_url() == b.blob_url();
- return false;
-}
-
-inline bool operator!=(const UploadData::Element& a,
- const UploadData::Element& b) {
- return !(a == b);
-}
-#endif // defined(UNIT_TEST)
-
} // namespace net
#endif // NET_BASE_UPLOAD_DATA_H_

Powered by Google App Engine
This is Rietveld 408576698