| Index: content/common/net/url_fetcher_impl.cc
|
| diff --git a/content/common/net/url_fetcher_impl.cc b/content/common/net/url_fetcher_impl.cc
|
| index be442898bdd0e5ee55900bcb1948c63207ad150f..f17d88776e971861948c0a6a0a60eb43008a22ea 100644
|
| --- a/content/common/net/url_fetcher_impl.cc
|
| +++ b/content/common/net/url_fetcher_impl.cc
|
| @@ -20,6 +20,7 @@
|
| #include "base/string_util.h"
|
| #include "base/threading/thread.h"
|
| #include "base/timer.h"
|
| +#include "content/common/net/url_request_user_data.h"
|
| #include "content/public/common/url_fetcher_delegate.h"
|
| #include "content/public/common/url_fetcher_factory.h"
|
| #include "googleurl/src/gurl.h"
|
| @@ -243,6 +244,9 @@ class URLFetcherImpl::Core
|
| // 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
|
| net::ResponseCookies cookies_; // Response cookies
|
| net::HttpRequestHeaders extra_request_headers_;
|
| scoped_refptr<net::HttpResponseHeaders> response_headers_;
|
| @@ -543,6 +547,8 @@ URLFetcherImpl::Core::Core(URLFetcherImpl* fetcher,
|
| load_flags_(net::LOAD_NORMAL),
|
| response_code_(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),
|
| @@ -757,6 +763,9 @@ void URLFetcherImpl::Core::RetryOrCompleteUrlFetch() {
|
| backoff_delay = base::TimeDelta();
|
| }
|
| request_context_getter_ = NULL;
|
| + render_process_id_ = -1;
|
| + render_view_id_ = -1;
|
| + first_party_for_cookies_ = GURL();
|
| bool posted = delegate_loop_proxy_->PostTask(
|
| FROM_HERE, base::Bind(&Core::OnCompletedURLRequest, this, backoff_delay));
|
|
|
| @@ -804,6 +813,13 @@ void URLFetcherImpl::Core::StartURLRequest() {
|
| request_->set_load_flags(flags);
|
| request_->set_context(request_context_getter_->GetURLRequestContext());
|
| 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_));
|
| + }
|
|
|
| switch (request_type_) {
|
| case GET:
|
| @@ -883,6 +899,9 @@ void URLFetcherImpl::Core::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();
|
| was_cancelled_ = true;
|
| file_writer_.reset();
|
| }
|
| @@ -1015,6 +1034,20 @@ void URLFetcherImpl::SetRequestContext(
|
| core_->request_context_getter_ = request_context_getter;
|
| }
|
|
|
| +void URLFetcherImpl::AssociateWithRenderView(
|
| + const GURL& first_party_for_cookies,
|
| + int render_process_id,
|
| + int render_view_id) {
|
| + DCHECK(core_->first_party_for_cookies_.is_empty());
|
| + DCHECK_EQ(core_->render_process_id_, -1);
|
| + DCHECK_EQ(core_->render_view_id_, -1);
|
| + DCHECK_GE(render_process_id, 0);
|
| + DCHECK_GE(render_view_id, 0);
|
| + core_->first_party_for_cookies_ = first_party_for_cookies;
|
| + core_->render_process_id_ = render_process_id;
|
| + core_->render_view_id_ = render_view_id;
|
| +}
|
| +
|
| void URLFetcherImpl::SetAutomaticallyRetryOn5xx(bool retry) {
|
| core_->automatically_retry_on_5xx_ = retry;
|
| }
|
| @@ -1066,12 +1099,6 @@ void URLFetcherImpl::Start() {
|
| core_->Start();
|
| }
|
|
|
| -void URLFetcherImpl::StartWithRequestContextGetter(
|
| - net::URLRequestContextGetter* request_context_getter) {
|
| - SetRequestContext(request_context_getter);
|
| - core_->Start();
|
| -}
|
| -
|
| const GURL& URLFetcherImpl::GetOriginalURL() const {
|
| return core_->original_url_;
|
| }
|
|
|