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

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

Issue 8340026: Use AuthCredentials throughout the network stack instead of username/password. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Reduce password zapping Created 9 years, 1 month 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/bind.h" 7 #include "base/bind.h"
8 #include "base/base_switches.h" 8 #include "base/base_switches.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 275
276 // The HTTP transaction may be restarted several times for the purposes 276 // The HTTP transaction may be restarted several times for the purposes
277 // of sending authorization information. Each time it restarts, we get 277 // of sending authorization information. Each time it restarts, we get
278 // notified of the headers completion so that we can update the cookie store. 278 // notified of the headers completion so that we can update the cookie store.
279 if (transaction_->IsReadyToRestartForAuth()) { 279 if (transaction_->IsReadyToRestartForAuth()) {
280 DCHECK(!response_info_->auth_challenge.get()); 280 DCHECK(!response_info_->auth_challenge.get());
281 // TODO(battre): This breaks the webrequest API for 281 // TODO(battre): This breaks the webrequest API for
282 // URLRequestTestHTTP.BasicAuthWithCookies 282 // URLRequestTestHTTP.BasicAuthWithCookies
283 // where OnBeforeSendHeaders -> OnSendHeaders -> OnBeforeSendHeaders 283 // where OnBeforeSendHeaders -> OnSendHeaders -> OnBeforeSendHeaders
284 // occurs. 284 // occurs.
285 RestartTransactionWithAuth(string16(), string16()); 285 RestartTransactionWithAuth(AuthCredentials());
286 return; 286 return;
287 } 287 }
288 288
289 URLRequestJob::NotifyHeadersComplete(); 289 URLRequestJob::NotifyHeadersComplete();
290 } 290 }
291 291
292 void URLRequestHttpJob::NotifyDone(const URLRequestStatus& status) { 292 void URLRequestHttpJob::NotifyDone(const URLRequestStatus& status) {
293 DoneWithRequest(FINISHED); 293 DoneWithRequest(FINISHED);
294 URLRequestJob::NotifyDone(status); 294 URLRequestJob::NotifyDone(status);
295 } 295 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 request_->net_log().AddEvent(NetLog::TYPE_CANCELLED, 327 request_->net_log().AddEvent(NetLog::TYPE_CANCELLED,
328 make_scoped_refptr(new NetLogStringParameter("source", "delegate"))); 328 make_scoped_refptr(new NetLogStringParameter("source", "delegate")));
329 NotifyCanceled(); 329 NotifyCanceled();
330 } 330 }
331 } 331 }
332 332
333 void URLRequestHttpJob::StartTransactionInternal() { 333 void URLRequestHttpJob::StartTransactionInternal() {
334 // NOTE: This method assumes that request_info_ is already setup properly. 334 // NOTE: This method assumes that request_info_ is already setup properly.
335 335
336 // If we already have a transaction, then we should restart the transaction 336 // If we already have a transaction, then we should restart the transaction
337 // with auth provided by username_ and password_. 337 // with auth provided by auth_credentials_.
338 338
339 int rv; 339 int rv;
340 340
341 if (request_->context() && request_->context()->network_delegate()) { 341 if (request_->context() && request_->context()->network_delegate()) {
342 request_->context()->network_delegate()->NotifySendHeaders( 342 request_->context()->network_delegate()->NotifySendHeaders(
343 request_, request_info_.extra_headers); 343 request_, request_info_.extra_headers);
344 } 344 }
345 345
346 if (transaction_.get()) { 346 if (transaction_.get()) {
347 rv = transaction_->RestartWithAuth(username_, password_, &start_callback_); 347 rv = transaction_->RestartWithAuth(auth_credentials_, &start_callback_);
348 username_.clear(); 348 auth_credentials_ = AuthCredentials();
349 password_.clear();
350 } else { 349 } else {
351 DCHECK(request_->context()); 350 DCHECK(request_->context());
352 DCHECK(request_->context()->http_transaction_factory()); 351 DCHECK(request_->context()->http_transaction_factory());
353 352
354 rv = request_->context()->http_transaction_factory()->CreateTransaction( 353 rv = request_->context()->http_transaction_factory()->CreateTransaction(
355 &transaction_); 354 &transaction_);
356 if (rv == OK) { 355 if (rv == OK) {
357 if (!URLRequestThrottlerManager::GetInstance()->enforce_throttling() || 356 if (!URLRequestThrottlerManager::GetInstance()->enforce_throttling() ||
358 !throttling_entry_->ShouldRejectRequest(request_info_.load_flags)) { 357 !throttling_entry_->ShouldRejectRequest(request_info_.load_flags)) {
359 rv = transaction_->Start( 358 rv = transaction_->Start(
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result)); 757 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result));
759 } else { 758 } else {
760 // Clear the IO_PENDING status 759 // Clear the IO_PENDING status
761 SetStatus(URLRequestStatus()); 760 SetStatus(URLRequestStatus());
762 } 761 }
763 762
764 NotifyReadComplete(result); 763 NotifyReadComplete(result);
765 } 764 }
766 765
767 void URLRequestHttpJob::RestartTransactionWithAuth( 766 void URLRequestHttpJob::RestartTransactionWithAuth(
768 const string16& username, 767 const AuthCredentials& credentials) {
769 const string16& password) { 768 auth_credentials_ = credentials;
770 username_ = username;
771 password_ = password;
772 769
773 // These will be reset in OnStartCompleted. 770 // These will be reset in OnStartCompleted.
774 response_info_ = NULL; 771 response_info_ = NULL;
775 response_cookies_.clear(); 772 response_cookies_.clear();
776 773
777 ResetTimer(); 774 ResetTimer();
778 775
779 // Update the cookies, since the cookie store may have been updated from the 776 // Update the cookies, since the cookie store may have been updated from the
780 // headers in the 401/407. Since cookies were already appended to 777 // headers in the 401/407. Since cookies were already appended to
781 // extra_headers, we need to strip them out before adding them again. 778 // extra_headers, we need to strip them out before adding them again.
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 987
991 // sanity checks: 988 // sanity checks:
992 DCHECK(proxy_auth_state_ == AUTH_STATE_NEED_AUTH || 989 DCHECK(proxy_auth_state_ == AUTH_STATE_NEED_AUTH ||
993 server_auth_state_ == AUTH_STATE_NEED_AUTH); 990 server_auth_state_ == AUTH_STATE_NEED_AUTH);
994 DCHECK(GetResponseHeaders()->response_code() == 401 || 991 DCHECK(GetResponseHeaders()->response_code() == 401 ||
995 GetResponseHeaders()->response_code() == 407); 992 GetResponseHeaders()->response_code() == 407);
996 993
997 *result = response_info_->auth_challenge; 994 *result = response_info_->auth_challenge;
998 } 995 }
999 996
1000 void URLRequestHttpJob::SetAuth(const string16& username, 997 void URLRequestHttpJob::SetAuth(const AuthCredentials& credentials) {
1001 const string16& password) {
1002 DCHECK(transaction_.get()); 998 DCHECK(transaction_.get());
1003 999
1004 // Proxy gets set first, then WWW. 1000 // Proxy gets set first, then WWW.
1005 if (proxy_auth_state_ == AUTH_STATE_NEED_AUTH) { 1001 if (proxy_auth_state_ == AUTH_STATE_NEED_AUTH) {
1006 proxy_auth_state_ = AUTH_STATE_HAVE_AUTH; 1002 proxy_auth_state_ = AUTH_STATE_HAVE_AUTH;
1007 } else { 1003 } else {
1008 DCHECK_EQ(server_auth_state_, AUTH_STATE_NEED_AUTH); 1004 DCHECK_EQ(server_auth_state_, AUTH_STATE_NEED_AUTH);
1009 server_auth_state_ = AUTH_STATE_HAVE_AUTH; 1005 server_auth_state_ = AUTH_STATE_HAVE_AUTH;
1010 } 1006 }
1011 1007
1012 RestartTransactionWithAuth(username, password); 1008 RestartTransactionWithAuth(credentials);
1013 } 1009 }
1014 1010
1015 void URLRequestHttpJob::CancelAuth() { 1011 void URLRequestHttpJob::CancelAuth() {
1016 // Proxy gets set first, then WWW. 1012 // Proxy gets set first, then WWW.
1017 if (proxy_auth_state_ == AUTH_STATE_NEED_AUTH) { 1013 if (proxy_auth_state_ == AUTH_STATE_NEED_AUTH) {
1018 proxy_auth_state_ = AUTH_STATE_CANCELED; 1014 proxy_auth_state_ = AUTH_STATE_CANCELED;
1019 } else { 1015 } else {
1020 DCHECK_EQ(server_auth_state_, AUTH_STATE_NEED_AUTH); 1016 DCHECK_EQ(server_auth_state_, AUTH_STATE_NEED_AUTH);
1021 server_auth_state_ = AUTH_STATE_CANCELED; 1017 server_auth_state_ = AUTH_STATE_CANCELED;
1022 } 1018 }
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1427 return override_response_headers_.get() ? 1423 return override_response_headers_.get() ?
1428 override_response_headers_ : 1424 override_response_headers_ :
1429 transaction_->GetResponseInfo()->headers; 1425 transaction_->GetResponseInfo()->headers;
1430 } 1426 }
1431 1427
1432 void URLRequestHttpJob::NotifyURLRequestDestroyed() { 1428 void URLRequestHttpJob::NotifyURLRequestDestroyed() {
1433 awaiting_callback_ = false; 1429 awaiting_callback_ = false;
1434 } 1430 }
1435 1431
1436 } // namespace net 1432 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698