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

Unified Diff: net/base/upload_data.h

Issue 9321003: net: Make UploadData::GetContentLength() asynchronous. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 11 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 31c1958a6966c9e321f554754819b54f0c98726e..134081c0dd24ad044df4615a52c9bb70657f9c8f 100644
--- a/net/base/upload_data.h
+++ b/net/base/upload_data.h
@@ -9,6 +9,7 @@
#include <vector>
#include "base/basictypes.h"
+#include "base/callback_forward.h"
#include "base/file_path.h"
#include "base/gtest_prod_util.h"
#include "base/memory/ref_counted.h"
@@ -163,8 +164,22 @@ class NET_EXPORT UploadData : public base::RefCounted<UploadData> {
void set_is_chunked(bool set) { is_chunked_ = set; }
bool is_chunked() const { return is_chunked_; }
+ // Gets the total size in bytes of the data to upload. Computing the
+ // content length can result in performing file IO hence the operation is
+ // done asynchronously. Runs the callback with the content length once the
+ // computation is done.
+ typedef base::Callback<void(uint64 content_length)> ContentLengthCallback;
+ void GetContentLength(const ContentLengthCallback& callback);
robertshield 2012/02/04 05:39:04 This only hits the IO thread when there are elemen
satorux1 2012/02/04 07:18:32 Sounds reasonable. I originally thought it'd be si
+
// Returns the total size in bytes of the data to upload.
- uint64 GetContentLength();
+ // This version may perform file IO on the current thread.
+ // TODO(satorux): Remove this once clients are gone.
robertshield 2012/02/04 05:39:04 Are you planning on attempting to convert the Urlm
satorux1 2012/02/04 07:18:32 No. I don't plan to make a major change to chrome_
robertshield 2012/02/04 21:10:56 Thanks! That looks good to me.
+ uint64 GetContentLengthSyncHack();
+
+ // Returns the total size in bytes of the data to upload, for testing.
+ // This version may perform file IO on the current thread.
+ // Should only be used in tests where file IO is allowed.
+ uint64 GetContentLengthSyncForTesting();
// Returns true if the upload data is entirely in memory (i.e. the
// upload data is not chunked, and all elemnts are of TYPE_BYTES).
@@ -187,6 +202,9 @@ class NET_EXPORT UploadData : public base::RefCounted<UploadData> {
int64 identifier() const { return identifier_; }
private:
+ // Helper function for GetContentLength().
+ void DoGetContentLength(uint64* content_length);
+
friend class base::RefCounted<UploadData>;
~UploadData();

Powered by Google App Engine
This is Rietveld 408576698