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

Side by Side Diff: content/common/net/url_fetcher_core.cc

Issue 10412050: Change most content::URLFetcher references to net::URLFetcher (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix ChromeOS, address comments Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/common/net/url_fetcher_core.h ('k') | content/common/net/url_fetcher_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/net/url_fetcher_core.h" 5 #include "content/common/net/url_fetcher_core.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_util_proxy.h" 8 #include "base/file_util_proxy.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop_proxy.h" 10 #include "base/message_loop_proxy.h"
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 base::FileUtilProxy::Delete( 235 base::FileUtilProxy::Delete(
236 file_message_loop_proxy_, file_path_, 236 file_message_loop_proxy_, file_path_,
237 false, // No need to recurse, as the path is to a file. 237 false, // No need to recurse, as the path is to a file.
238 base::FileUtilProxy::StatusCallback()); // No callback: Ignore errors. 238 base::FileUtilProxy::StatusCallback()); // No callback: Ignore errors.
239 DisownFile(); 239 DisownFile();
240 } 240 }
241 } 241 }
242 242
243 static bool g_interception_enabled = false; 243 static bool g_interception_enabled = false;
244 244
245 URLFetcherCore::URLFetcherCore(URLFetcher* fetcher, 245 URLFetcherCore::URLFetcherCore(net::URLFetcher* fetcher,
246 const GURL& original_url, 246 const GURL& original_url,
247 URLFetcher::RequestType request_type, 247 net::URLFetcher::RequestType request_type,
248 net::URLFetcherDelegate* d) 248 net::URLFetcherDelegate* d)
249 : fetcher_(fetcher), 249 : fetcher_(fetcher),
250 original_url_(original_url), 250 original_url_(original_url),
251 request_type_(request_type), 251 request_type_(request_type),
252 delegate_(d), 252 delegate_(d),
253 delegate_loop_proxy_( 253 delegate_loop_proxy_(
254 base::MessageLoopProxy::current()), 254 base::MessageLoopProxy::current()),
255 request_(NULL), 255 request_(NULL),
256 load_flags_(net::LOAD_NORMAL), 256 load_flags_(net::LOAD_NORMAL),
257 response_code_(URLFetcher::RESPONSE_CODE_INVALID), 257 response_code_(net::URLFetcher::RESPONSE_CODE_INVALID),
258 buffer_(new net::IOBuffer(kBufferSize)), 258 buffer_(new net::IOBuffer(kBufferSize)),
259 url_request_data_key_(NULL), 259 url_request_data_key_(NULL),
260 was_fetched_via_proxy_(false), 260 was_fetched_via_proxy_(false),
261 is_chunked_upload_(false), 261 is_chunked_upload_(false),
262 num_retries_(0), 262 num_retries_(0),
263 was_cancelled_(false), 263 was_cancelled_(false),
264 response_destination_(STRING), 264 response_destination_(STRING),
265 automatically_retry_on_5xx_(true), 265 automatically_retry_on_5xx_(true),
266 max_retries_(0), 266 max_retries_(0),
267 current_upload_bytes_(-1), 267 current_upload_bytes_(-1),
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 } 400 }
401 401
402 void URLFetcherCore::SetFirstPartyForCookies( 402 void URLFetcherCore::SetFirstPartyForCookies(
403 const GURL& first_party_for_cookies) { 403 const GURL& first_party_for_cookies) {
404 DCHECK(first_party_for_cookies_.is_empty()); 404 DCHECK(first_party_for_cookies_.is_empty());
405 first_party_for_cookies_ = first_party_for_cookies; 405 first_party_for_cookies_ = first_party_for_cookies;
406 } 406 }
407 407
408 void URLFetcherCore::SetURLRequestUserData( 408 void URLFetcherCore::SetURLRequestUserData(
409 const void* key, 409 const void* key,
410 const URLFetcher::CreateDataCallback& create_data_callback) { 410 const net::URLFetcher::CreateDataCallback& create_data_callback) {
411 DCHECK(key); 411 DCHECK(key);
412 DCHECK(!create_data_callback.is_null()); 412 DCHECK(!create_data_callback.is_null());
413 url_request_data_key_ = key; 413 url_request_data_key_ = key;
414 url_request_create_data_callback_ = create_data_callback; 414 url_request_create_data_callback_ = create_data_callback;
415 } 415 }
416 416
417 void URLFetcherCore::SetAutomaticallyRetryOn5xx(bool retry) { 417 void URLFetcherCore::SetAutomaticallyRetryOn5xx(bool retry) {
418 automatically_retry_on_5xx_ = retry; 418 automatically_retry_on_5xx_ = retry;
419 } 419 }
420 420
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 } 631 }
632 } while (request_->Read(buffer_, kBufferSize, &bytes_read)); 632 } while (request_->Read(buffer_, kBufferSize, &bytes_read));
633 633
634 const net::URLRequestStatus status = request_->status(); 634 const net::URLRequestStatus status = request_->status();
635 635
636 if (status.is_success()) 636 if (status.is_success())
637 request_->GetResponseCookies(&cookies_); 637 request_->GetResponseCookies(&cookies_);
638 638
639 // See comments re: HEAD requests in ReadResponse(). 639 // See comments re: HEAD requests in ReadResponse().
640 if ((!status.is_io_pending() && !waiting_on_write) || 640 if ((!status.is_io_pending() && !waiting_on_write) ||
641 (request_type_ == URLFetcher::HEAD)) { 641 (request_type_ == net::URLFetcher::HEAD)) {
642 status_ = status; 642 status_ = status;
643 ReleaseRequest(); 643 ReleaseRequest();
644 644
645 // If a file is open, close it. 645 // If a file is open, close it.
646 if (file_writer_.get()) { 646 if (file_writer_.get()) {
647 // If the file is open, close it. After closing the file, 647 // If the file is open, close it. After closing the file,
648 // RetryOrCompleteUrlFetch() will be called. 648 // RetryOrCompleteUrlFetch() will be called.
649 file_writer_->CloseFileAndCompleteRequest(); 649 file_writer_->CloseFileAndCompleteRequest();
650 } else { 650 } else {
651 // Otherwise, complete or retry the URL request directly. 651 // Otherwise, complete or retry the URL request directly.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 // should be gone too. 694 // should be gone too.
695 DCHECK(posted || !delegate_); 695 DCHECK(posted || !delegate_);
696 } 696 }
697 697
698 void URLFetcherCore::ReadResponse() { 698 void URLFetcherCore::ReadResponse() {
699 // Some servers may treat HEAD requests as GET requests. To free up the 699 // Some servers may treat HEAD requests as GET requests. To free up the
700 // network connection as soon as possible, signal that the request has 700 // network connection as soon as possible, signal that the request has
701 // completed immediately, without trying to read any data back (all we care 701 // completed immediately, without trying to read any data back (all we care
702 // about is the response code and headers, which we already have). 702 // about is the response code and headers, which we already have).
703 int bytes_read = 0; 703 int bytes_read = 0;
704 if (request_->status().is_success() && (request_type_ != URLFetcher::HEAD)) 704 if (request_->status().is_success() &&
705 (request_type_ != net::URLFetcher::HEAD))
705 request_->Read(buffer_, kBufferSize, &bytes_read); 706 request_->Read(buffer_, kBufferSize, &bytes_read);
706 OnReadCompleted(request_.get(), bytes_read); 707 OnReadCompleted(request_.get(), bytes_read);
707 } 708 }
708 709
709 void URLFetcherCore::DisownFile() { 710 void URLFetcherCore::DisownFile() {
710 file_writer_->DisownFile(); 711 file_writer_->DisownFile();
711 } 712 }
712 713
713 void URLFetcherCore::StartURLRequest() { 714 void URLFetcherCore::StartURLRequest() {
714 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); 715 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
(...skipping 21 matching lines...) Expand all
736 request_->set_context(request_context_getter_->GetURLRequestContext()); 737 request_->set_context(request_context_getter_->GetURLRequestContext());
737 request_->set_referrer(referrer_); 738 request_->set_referrer(referrer_);
738 request_->set_first_party_for_cookies(first_party_for_cookies_.is_empty() ? 739 request_->set_first_party_for_cookies(first_party_for_cookies_.is_empty() ?
739 original_url_ : first_party_for_cookies_); 740 original_url_ : first_party_for_cookies_);
740 if (url_request_data_key_ && !url_request_create_data_callback_.is_null()) { 741 if (url_request_data_key_ && !url_request_create_data_callback_.is_null()) {
741 request_->SetUserData(url_request_data_key_, 742 request_->SetUserData(url_request_data_key_,
742 url_request_create_data_callback_.Run()); 743 url_request_create_data_callback_.Run());
743 } 744 }
744 745
745 switch (request_type_) { 746 switch (request_type_) {
746 case URLFetcher::GET: 747 case net::URLFetcher::GET:
747 break; 748 break;
748 749
749 case URLFetcher::POST: 750 case net::URLFetcher::POST:
750 case URLFetcher::PUT: 751 case net::URLFetcher::PUT:
751 DCHECK(!upload_content_.empty() || is_chunked_upload_); 752 DCHECK(!upload_content_.empty() || is_chunked_upload_);
752 DCHECK(!upload_content_type_.empty()); 753 DCHECK(!upload_content_type_.empty());
753 754
754 request_->set_method(request_type_ == URLFetcher::POST ? "POST" : "PUT"); 755 request_->set_method(
756 request_type_ == net::URLFetcher::POST ? "POST" : "PUT");
755 extra_request_headers_.SetHeader(net::HttpRequestHeaders::kContentType, 757 extra_request_headers_.SetHeader(net::HttpRequestHeaders::kContentType,
756 upload_content_type_); 758 upload_content_type_);
757 if (!upload_content_.empty()) { 759 if (!upload_content_.empty()) {
758 request_->AppendBytesToUpload( 760 request_->AppendBytesToUpload(
759 upload_content_.data(), static_cast<int>(upload_content_.length())); 761 upload_content_.data(), static_cast<int>(upload_content_.length()));
760 } 762 }
761 763
762 current_upload_bytes_ = -1; 764 current_upload_bytes_ = -1;
763 // TODO(kinaba): http://crbug.com/118103. Implement upload callback in the 765 // TODO(kinaba): http://crbug.com/118103. Implement upload callback in the
764 // net:: layer and avoid using timer here. 766 // net:: layer and avoid using timer here.
765 upload_progress_checker_timer_.reset( 767 upload_progress_checker_timer_.reset(
766 new base::RepeatingTimer<URLFetcherCore>()); 768 new base::RepeatingTimer<URLFetcherCore>());
767 upload_progress_checker_timer_->Start( 769 upload_progress_checker_timer_->Start(
768 FROM_HERE, 770 FROM_HERE,
769 base::TimeDelta::FromMilliseconds(kUploadProgressTimerInterval), 771 base::TimeDelta::FromMilliseconds(kUploadProgressTimerInterval),
770 this, 772 this,
771 &URLFetcherCore::InformDelegateUploadProgress); 773 &URLFetcherCore::InformDelegateUploadProgress);
772 break; 774 break;
773 775
774 case URLFetcher::HEAD: 776 case net::URLFetcher::HEAD:
775 request_->set_method("HEAD"); 777 request_->set_method("HEAD");
776 break; 778 break;
777 779
778 case URLFetcher::DELETE_REQUEST: 780 case net::URLFetcher::DELETE_REQUEST:
779 request_->set_method("DELETE"); 781 request_->set_method("DELETE");
780 break; 782 break;
781 783
782 default: 784 default:
783 NOTREACHED(); 785 NOTREACHED();
784 } 786 }
785 787
786 if (!extra_request_headers_.IsEmpty()) 788 if (!extra_request_headers_.IsEmpty())
787 request_->SetExtraRequestHeaders(extra_request_headers_); 789 request_->SetExtraRequestHeaders(extra_request_headers_);
788 790
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 void URLFetcherCore::InformDelegateFetchIsComplete() { 923 void URLFetcherCore::InformDelegateFetchIsComplete() {
922 DCHECK(delegate_loop_proxy_->BelongsToCurrentThread()); 924 DCHECK(delegate_loop_proxy_->BelongsToCurrentThread());
923 if (delegate_) 925 if (delegate_)
924 delegate_->OnURLFetchComplete(fetcher_); 926 delegate_->OnURLFetchComplete(fetcher_);
925 } 927 }
926 928
927 void URLFetcherCore::NotifyMalformedContent() { 929 void URLFetcherCore::NotifyMalformedContent() {
928 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); 930 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
929 if (url_throttler_entry_ != NULL) { 931 if (url_throttler_entry_ != NULL) {
930 int status_code = response_code_; 932 int status_code = response_code_;
931 if (status_code == URLFetcher::RESPONSE_CODE_INVALID) { 933 if (status_code == net::URLFetcher::RESPONSE_CODE_INVALID) {
932 // The status code will generally be known by the time clients 934 // The status code will generally be known by the time clients
933 // call the |ReceivedContentWasMalformed()| function (which ends up 935 // call the |ReceivedContentWasMalformed()| function (which ends up
934 // calling the current function) but if it's not, we need to assume 936 // calling the current function) but if it's not, we need to assume
935 // the response was successful so that the total failure count 937 // the response was successful so that the total failure count
936 // used to calculate exponential back-off goes up. 938 // used to calculate exponential back-off goes up.
937 status_code = 200; 939 status_code = 200;
938 } 940 }
939 url_throttler_entry_->ReceivedContentWasMalformed(status_code); 941 url_throttler_entry_->ReceivedContentWasMalformed(status_code);
940 } 942 }
941 } 943 }
(...skipping 18 matching lines...) Expand all
960 } 962 }
961 963
962 return original_url_backoff > destination_url_backoff ? 964 return original_url_backoff > destination_url_backoff ?
963 original_url_backoff : destination_url_backoff; 965 original_url_backoff : destination_url_backoff;
964 } else { 966 } else {
965 return base::TimeTicks(); 967 return base::TimeTicks();
966 } 968 }
967 } 969 }
968 970
969 } // namespace content 971 } // namespace content
OLDNEW
« no previous file with comments | « content/common/net/url_fetcher_core.h ('k') | content/common/net/url_fetcher_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698