diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-19 22:45:58 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-19 22:45:58 +0000 |
commit | 389c3515d5eadbfc84cfba172e7bd479aa788393 (patch) | |
tree | 493714fe63cc7928c2ac1f2c521c10fed3d39d84 /content/common | |
parent | 6664b2d8bca10b2b15f7af5fdb1462ec71564c76 (diff) | |
download | chromium_src-389c3515d5eadbfc84cfba172e7bd479aa788393.zip chromium_src-389c3515d5eadbfc84cfba172e7bd479aa788393.tar.gz chromium_src-389c3515d5eadbfc84cfba172e7bd479aa788393.tar.bz2 |
Remove references to renderer from URLFetcherCore
Replace AssociateWithRenderView() with SetFirstPartyForCookies() and
SetPersistentURLRequestUserData().
This will make it possible to move URLFetcherCore to net/.
BUG=118220
TEST=
Review URL: http://codereview.chromium.org/10025032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133076 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/common')
-rw-r--r-- | content/common/net/url_fetcher_core.cc | 38 | ||||
-rw-r--r-- | content/common/net/url_fetcher_core.h | 22 | ||||
-rw-r--r-- | content/common/net/url_fetcher_impl.cc | 19 |
3 files changed, 49 insertions, 30 deletions
diff --git a/content/common/net/url_fetcher_core.cc b/content/common/net/url_fetcher_core.cc index b062fb3..1e8ac77 100644 --- a/content/common/net/url_fetcher_core.cc +++ b/content/common/net/url_fetcher_core.cc @@ -11,7 +11,6 @@ #include "base/metrics/histogram.h" #include "base/stl_util.h" #include "base/tracked_objects.h" -#include "content/common/net/url_request_user_data.h" #include "content/public/common/url_fetcher_delegate.h" #include "net/base/io_buffer.h" #include "net/base/load_flags.h" @@ -256,8 +255,6 @@ URLFetcherCore::URLFetcherCore(URLFetcher* fetcher, load_flags_(net::LOAD_NORMAL), response_code_(URLFetcher::RESPONSE_CODE_INVALID), buffer_(new net::IOBuffer(kBufferSize)), - render_process_id_(-1), - render_view_id_(-1), was_fetched_via_proxy_(false), is_chunked_upload_(false), num_retries_(0), @@ -400,18 +397,18 @@ void URLFetcherCore::SetRequestContext( request_context_getter_ = request_context_getter; } -void URLFetcherCore::AssociateWithRenderView( - const GURL& first_party_for_cookies, - int render_process_id, - int render_view_id) { +void URLFetcherCore::SetFirstPartyForCookies( + const GURL& first_party_for_cookies) { DCHECK(first_party_for_cookies_.is_empty()); - DCHECK_EQ(render_process_id_, -1); - DCHECK_EQ(render_view_id_, -1); - DCHECK_GE(render_process_id, 0); - DCHECK_GE(render_view_id, 0); first_party_for_cookies_ = first_party_for_cookies; - render_process_id_ = render_process_id; - render_view_id_ = render_view_id; +} + +void URLFetcherCore::SetURLRequestUserData( + const void* key, const CreateDataCallback& create_data_callback) { + DCHECK(key); + DCHECK(!create_data_callback.is_null()); + url_request_data_key_ = key; + url_request_create_data_callback_ = create_data_callback; } void URLFetcherCore::SetAutomaticallyRetryOn5xx(bool retry) { @@ -672,9 +669,9 @@ void URLFetcherCore::RetryOrCompleteUrlFetch() { backoff_delay = base::TimeDelta(); } request_context_getter_ = NULL; - render_process_id_ = -1; - render_view_id_ = -1; first_party_for_cookies_ = GURL(); + url_request_data_key_ = NULL; + url_request_create_data_callback_.Reset(); bool posted = delegate_loop_proxy_->PostTask( FROM_HERE, base::Bind(&URLFetcherCore::OnCompletedURLRequest, this, backoff_delay)); @@ -725,10 +722,9 @@ void URLFetcherCore::StartURLRequest() { request_->set_referrer(referrer_); request_->set_first_party_for_cookies(first_party_for_cookies_.is_empty() ? original_url_ : first_party_for_cookies_); - if (render_process_id_ != -1 && render_view_id_ != -1) { - request_->SetUserData( - URLRequestUserData::kUserDataKey, - new URLRequestUserData(render_process_id_, render_view_id_)); + if (url_request_data_key_ && !url_request_create_data_callback_.is_null()) { + request_->SetUserData(url_request_data_key_, + url_request_create_data_callback_.Run()); } switch (request_type_) { @@ -820,9 +816,9 @@ void URLFetcherCore::CancelURLRequest() { // delete the object, but we cannot delay the destruction of the request // context. request_context_getter_ = NULL; - render_process_id_ = -1; - render_view_id_ = -1; first_party_for_cookies_ = GURL(); + url_request_data_key_ = NULL; + url_request_create_data_callback_.Reset(); was_cancelled_ = true; file_writer_.reset(); } diff --git a/content/common/net/url_fetcher_core.h b/content/common/net/url_fetcher_core.h index 8fe0116..d0e67ff 100644 --- a/content/common/net/url_fetcher_core.h +++ b/content/common/net/url_fetcher_core.h @@ -10,6 +10,7 @@ #include <string> #include "base/basictypes.h" +#include "base/callback_forward.h" #include "base/compiler_specific.h" #include "base/file_path.h" #include "base/lazy_instance.h" @@ -17,6 +18,7 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/platform_file.h" +#include "base/supports_user_data.h" #include "base/timer.h" #include "content/public/common/url_fetcher.h" #include "googleurl/src/gurl.h" @@ -44,6 +46,10 @@ class URLFetcherCore : public base::RefCountedThreadSafe<URLFetcherCore>, public net::URLRequest::Delegate { public: + // Used by SetURLRequestUserData. The callback should make a fresh + // Data* object every time it's called. + typedef base::Callback<base::SupportsUserData::Data*()> CreateDataCallback; + URLFetcherCore(URLFetcher* fetcher, const GURL& original_url, URLFetcher::RequestType request_type, @@ -80,11 +86,12 @@ class URLFetcherCore void AddExtraRequestHeader(const std::string& header_line); void GetExtraRequestHeaders(net::HttpRequestHeaders* headers) const; void SetRequestContext(net::URLRequestContextGetter* request_context_getter); - // TODO(akalin): When we move this class to net/, this has to stay - // in content/ somehow. - void AssociateWithRenderView(const GURL& first_party_for_cookies, - int render_process_id, - int render_view_id); + void SetFirstPartyForCookies(const GURL& first_party_for_cookies); + // Whenever a URLRequest object is created, SetUserData() will be + // called on it with the given key and the result of the given + // callback. + void SetURLRequestUserData( + const void* key, const CreateDataCallback& create_data_callback); void SetAutomaticallyRetryOn5xx(bool retry); void SetMaxRetries(int max_retries); int GetMaxRetries() const; @@ -311,9 +318,10 @@ class URLFetcherCore // Read buffer scoped_refptr<net::URLRequestContextGetter> request_context_getter_; // Cookie/cache info for the request - int render_process_id_; // The RenderView associated with the - int render_view_id_; // request GURL first_party_for_cookies_; // The first party URL for the request + // The user data to add to each newly-created URLRequest. + const void* url_request_data_key_; + CreateDataCallback url_request_create_data_callback_; net::ResponseCookies cookies_; // Response cookies net::HttpRequestHeaders extra_request_headers_; scoped_refptr<net::HttpResponseHeaders> response_headers_; diff --git a/content/common/net/url_fetcher_impl.cc b/content/common/net/url_fetcher_impl.cc index a441435d..35f7c5a 100644 --- a/content/common/net/url_fetcher_impl.cc +++ b/content/common/net/url_fetcher_impl.cc @@ -4,8 +4,10 @@ #include "content/common/net/url_fetcher_impl.h" +#include "base/bind.h" #include "base/message_loop_proxy.h" #include "content/common/net/url_fetcher_core.h" +#include "content/common/net/url_request_user_data.h" #include "content/public/common/url_fetcher_factory.h" static content::URLFetcherFactory* g_factory = NULL; @@ -96,12 +98,25 @@ void URLFetcherImpl::SetRequestContext( core_->SetRequestContext(request_context_getter); } +namespace { + +base::SupportsUserData::Data* CreateURLRequestUserData( + int render_process_id, + int render_view_id) { + return new URLRequestUserData(render_process_id, render_view_id); +} + +} // namespace + void URLFetcherImpl::AssociateWithRenderView( const GURL& first_party_for_cookies, int render_process_id, int render_view_id) { - core_->AssociateWithRenderView( - first_party_for_cookies, render_process_id, render_view_id); + core_->SetFirstPartyForCookies(first_party_for_cookies); + core_->SetURLRequestUserData( + URLRequestUserData::kUserDataKey, + base::Bind(&CreateURLRequestUserData, + render_process_id, render_view_id)); } void URLFetcherImpl::SetAutomaticallyRetryOn5xx(bool retry) { |