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

Side by Side Diff: net/url_request/url_request_http_job.cc

Issue 1563633002: Make URLRequestJob::SetStatus private. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix stuff Created 4 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 unified diff | Download patch
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 "net/url_request/url_request_http_job.h" 5 #include "net/url_request/url_request_http_job.h"
6 6
7 #include "base/base_switches.h" 7 #include "base/base_switches.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 FROM_HERE_WITH_EXPLICIT_FUNCTION( 463 FROM_HERE_WITH_EXPLICIT_FUNCTION(
464 "456327 URLRequestHttpJob::MaybeStartTransactionInternal")); 464 "456327 URLRequestHttpJob::MaybeStartTransactionInternal"));
465 465
466 OnCallToDelegateComplete(); 466 OnCallToDelegateComplete();
467 if (result == OK) { 467 if (result == OK) {
468 StartTransactionInternal(); 468 StartTransactionInternal();
469 } else { 469 } else {
470 std::string source("delegate"); 470 std::string source("delegate");
471 request_->net_log().AddEvent(NetLog::TYPE_CANCELLED, 471 request_->net_log().AddEvent(NetLog::TYPE_CANCELLED,
472 NetLog::StringCallback("source", &source)); 472 NetLog::StringCallback("source", &source));
473 NotifyCanceled();
474 NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, result)); 473 NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, result));
475 } 474 }
476 } 475 }
477 476
478 void URLRequestHttpJob::StartTransactionInternal() { 477 void URLRequestHttpJob::StartTransactionInternal() {
479 // This should only be called while the request's status is IO_PENDING. 478 // This should only be called while the request's status is IO_PENDING.
480 DCHECK_EQ(URLRequestStatus::IO_PENDING, request_->status().status()); 479 DCHECK_EQ(URLRequestStatus::IO_PENDING, request_->status().status());
481 480
482 // NOTE: This method assumes that request_info_ is already setup properly. 481 // NOTE: This method assumes that request_info_ is already setup properly.
483 482
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 http_user_agent_settings_->GetAcceptLanguage(); 643 http_user_agent_settings_->GetAcceptLanguage();
645 if (!accept_language.empty()) { 644 if (!accept_language.empty()) {
646 request_info_.extra_headers.SetHeaderIfMissing( 645 request_info_.extra_headers.SetHeaderIfMissing(
647 HttpRequestHeaders::kAcceptLanguage, 646 HttpRequestHeaders::kAcceptLanguage,
648 accept_language); 647 accept_language);
649 } 648 }
650 } 649 }
651 } 650 }
652 651
653 void URLRequestHttpJob::AddCookieHeaderAndStart() { 652 void URLRequestHttpJob::AddCookieHeaderAndStart() {
654 // No matter what, we want to report our status as IO pending since we will
655 // be notifying our consumer asynchronously via OnStartCompleted.
656 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
657
658 // If the request was destroyed, then there is no more work to do. 653 // If the request was destroyed, then there is no more work to do.
659 if (!request_) 654 if (!request_)
660 return; 655 return;
661 656
662 CookieStore* cookie_store = request_->context()->cookie_store(); 657 CookieStore* cookie_store = request_->context()->cookie_store();
663 if (cookie_store && !(request_info_.load_flags & LOAD_DO_NOT_SEND_COOKIES)) { 658 if (cookie_store && !(request_info_.load_flags & LOAD_DO_NOT_SEND_COOKIES)) {
664 cookie_store->GetAllCookiesForURLAsync( 659 cookie_store->GetAllCookiesForURLAsync(
665 request_->url(), 660 request_->url(),
666 base::Bind(&URLRequestHttpJob::CheckCookiePolicyAndLoad, 661 base::Bind(&URLRequestHttpJob::CheckCookiePolicyAndLoad,
667 weak_factory_.GetWeakPtr())); 662 weak_factory_.GetWeakPtr()));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 SaveNextCookie(); 738 SaveNextCookie();
744 } 739 }
745 740
746 // If the save occurs synchronously, SaveNextCookie will loop and save the next 741 // If the save occurs synchronously, SaveNextCookie will loop and save the next
747 // cookie. If the save is deferred, the callback is responsible for continuing 742 // cookie. If the save is deferred, the callback is responsible for continuing
748 // to iterate through the cookies. 743 // to iterate through the cookies.
749 // TODO(erikwright): Modify the CookieStore API to indicate via return value 744 // TODO(erikwright): Modify the CookieStore API to indicate via return value
750 // whether it completed synchronously or asynchronously. 745 // whether it completed synchronously or asynchronously.
751 // See http://crbug.com/131066. 746 // See http://crbug.com/131066.
752 void URLRequestHttpJob::SaveNextCookie() { 747 void URLRequestHttpJob::SaveNextCookie() {
753 // No matter what, we want to report our status as IO pending since we will
754 // be notifying our consumer asynchronously via OnStartCompleted.
755 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
756
757 // Used to communicate with the callback. See the implementation of 748 // Used to communicate with the callback. See the implementation of
758 // OnCookieSaved. 749 // OnCookieSaved.
759 scoped_refptr<SharedBoolean> callback_pending = new SharedBoolean(false); 750 scoped_refptr<SharedBoolean> callback_pending = new SharedBoolean(false);
760 scoped_refptr<SharedBoolean> save_next_cookie_running = 751 scoped_refptr<SharedBoolean> save_next_cookie_running =
761 new SharedBoolean(true); 752 new SharedBoolean(true);
762 753
763 if (!(request_info_.load_flags & LOAD_DO_NOT_SAVE_COOKIES) && 754 if (!(request_info_.load_flags & LOAD_DO_NOT_SAVE_COOKIES) &&
764 request_->context()->cookie_store() && response_cookies_.size() > 0) { 755 request_->context()->cookie_store() && response_cookies_.size() > 0) {
765 CookieOptions options; 756 CookieOptions options;
766 options.set_include_httponly(); 757 options.set_include_httponly();
(...skipping 21 matching lines...) Expand all
788 } 779 }
789 ++response_cookies_save_index_; 780 ++response_cookies_save_index_;
790 } 781 }
791 } 782 }
792 783
793 save_next_cookie_running->data = false; 784 save_next_cookie_running->data = false;
794 785
795 if (!callback_pending->data) { 786 if (!callback_pending->data) {
796 response_cookies_.clear(); 787 response_cookies_.clear();
797 response_cookies_save_index_ = 0; 788 response_cookies_save_index_ = 0;
798 SetStatus(URLRequestStatus()); // Clear the IO_PENDING status
799 NotifyHeadersComplete(); 789 NotifyHeadersComplete();
800 return; 790 return;
801 } 791 }
802 } 792 }
803 793
804 // |save_next_cookie_running| is true when the callback is bound and set to 794 // |save_next_cookie_running| is true when the callback is bound and set to
805 // false when SaveNextCookie exits, allowing the callback to determine if the 795 // false when SaveNextCookie exits, allowing the callback to determine if the
806 // save occurred synchronously or asynchronously. 796 // save occurred synchronously or asynchronously.
807 // |callback_pending| is false when the callback is invoked and will be set to 797 // |callback_pending| is false when the callback is invoked and will be set to
808 // true by the callback, allowing SaveNextCookie to detect whether the save 798 // true by the callback, allowing SaveNextCookie to detect whether the save
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 if (!request_) 919 if (!request_)
930 return; 920 return;
931 921
932 // If the job is done (due to cancellation), can just ignore this 922 // If the job is done (due to cancellation), can just ignore this
933 // notification. 923 // notification.
934 if (done_) 924 if (done_)
935 return; 925 return;
936 926
937 receive_headers_end_ = base::TimeTicks::Now(); 927 receive_headers_end_ = base::TimeTicks::Now();
938 928
939 // Clear the IO_PENDING status
940 SetStatus(URLRequestStatus());
941
942 const URLRequestContext* context = request_->context(); 929 const URLRequestContext* context = request_->context();
943 930
944 if (result == OK) { 931 if (result == OK) {
945 if (transaction_ && transaction_->GetResponseInfo()) { 932 if (transaction_ && transaction_->GetResponseInfo()) {
946 SetProxyServer(transaction_->GetResponseInfo()->proxy_server); 933 SetProxyServer(transaction_->GetResponseInfo()->proxy_server);
947 } 934 }
948 scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders(); 935 scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders();
949 936
950 if (headers) { 937 if (headers) {
951 void* iter = NULL; 938 void* iter = NULL;
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
1298 void URLRequestHttpJob::ContinueWithCertificate( 1285 void URLRequestHttpJob::ContinueWithCertificate(
1299 X509Certificate* client_cert, 1286 X509Certificate* client_cert,
1300 SSLPrivateKey* client_private_key) { 1287 SSLPrivateKey* client_private_key) {
1301 DCHECK(transaction_.get()); 1288 DCHECK(transaction_.get());
1302 1289
1303 DCHECK(!response_info_) << "should not have a response yet"; 1290 DCHECK(!response_info_) << "should not have a response yet";
1304 receive_headers_end_ = base::TimeTicks(); 1291 receive_headers_end_ = base::TimeTicks();
1305 1292
1306 ResetTimer(); 1293 ResetTimer();
1307 1294
1308 // No matter what, we want to report our status as IO pending since we will
1309 // be notifying our consumer asynchronously via OnStartCompleted.
1310 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
1311
1312 int rv = transaction_->RestartWithCertificate(client_cert, client_private_key, 1295 int rv = transaction_->RestartWithCertificate(client_cert, client_private_key,
1313 start_callback_); 1296 start_callback_);
1314 if (rv == ERR_IO_PENDING) 1297 if (rv == ERR_IO_PENDING)
1315 return; 1298 return;
1316 1299
1317 // The transaction started synchronously, but we need to notify the 1300 // The transaction started synchronously, but we need to notify the
1318 // URLRequest delegate via the message loop. 1301 // URLRequest delegate via the message loop.
1319 base::ThreadTaskRunnerHandle::Get()->PostTask( 1302 base::ThreadTaskRunnerHandle::Get()->PostTask(
1320 FROM_HERE, base::Bind(&URLRequestHttpJob::OnStartCompleted, 1303 FROM_HERE, base::Bind(&URLRequestHttpJob::OnStartCompleted,
1321 weak_factory_.GetWeakPtr(), rv)); 1304 weak_factory_.GetWeakPtr(), rv));
1322 } 1305 }
1323 1306
1324 void URLRequestHttpJob::ContinueDespiteLastError() { 1307 void URLRequestHttpJob::ContinueDespiteLastError() {
1325 // If the transaction was destroyed, then the job was cancelled. 1308 // If the transaction was destroyed, then the job was cancelled.
1326 if (!transaction_.get()) 1309 if (!transaction_.get())
1327 return; 1310 return;
1328 1311
1329 DCHECK(!response_info_) << "should not have a response yet"; 1312 DCHECK(!response_info_) << "should not have a response yet";
1330 receive_headers_end_ = base::TimeTicks(); 1313 receive_headers_end_ = base::TimeTicks();
1331 1314
1332 ResetTimer(); 1315 ResetTimer();
1333 1316
1334 // No matter what, we want to report our status as IO pending since we will
1335 // be notifying our consumer asynchronously via OnStartCompleted.
1336 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
1337
1338 int rv = transaction_->RestartIgnoringLastError(start_callback_); 1317 int rv = transaction_->RestartIgnoringLastError(start_callback_);
1339 if (rv == ERR_IO_PENDING) 1318 if (rv == ERR_IO_PENDING)
1340 return; 1319 return;
1341 1320
1342 // The transaction started synchronously, but we need to notify the 1321 // The transaction started synchronously, but we need to notify the
1343 // URLRequest delegate via the message loop. 1322 // URLRequest delegate via the message loop.
1344 base::ThreadTaskRunnerHandle::Get()->PostTask( 1323 base::ThreadTaskRunnerHandle::Get()->PostTask(
1345 FROM_HERE, base::Bind(&URLRequestHttpJob::OnStartCompleted, 1324 FROM_HERE, base::Bind(&URLRequestHttpJob::OnStartCompleted,
1346 weak_factory_.GetWeakPtr(), rv)); 1325 weak_factory_.GetWeakPtr(), rv));
1347 } 1326 }
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
1610 return override_response_headers_.get() ? 1589 return override_response_headers_.get() ?
1611 override_response_headers_.get() : 1590 override_response_headers_.get() :
1612 transaction_->GetResponseInfo()->headers.get(); 1591 transaction_->GetResponseInfo()->headers.get();
1613 } 1592 }
1614 1593
1615 void URLRequestHttpJob::NotifyURLRequestDestroyed() { 1594 void URLRequestHttpJob::NotifyURLRequestDestroyed() {
1616 awaiting_callback_ = false; 1595 awaiting_callback_ = false;
1617 } 1596 }
1618 1597
1619 } // namespace net 1598 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698