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

Side by Side Diff: net/url_request/url_request_ftp_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: Fix comments 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
« no previous file with comments | « net/url_request/url_request_ftp_job.h ('k') | net/url_request/url_request_http_job.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) 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_ftp_job.h" 5 #include "net/url_request/url_request_ftp_job.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "net/base/auth.h" 10 #include "net/base/auth.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 // the content size information manually. 100 // the content size information manually.
101 set_expected_content_size( 101 set_expected_content_size(
102 transaction_->GetResponseInfo()->expected_content_size); 102 transaction_->GetResponseInfo()->expected_content_size);
103 103
104 if (result == OK) { 104 if (result == OK) {
105 NotifyHeadersComplete(); 105 NotifyHeadersComplete();
106 } else if (transaction_->GetResponseInfo()->needs_auth) { 106 } else if (transaction_->GetResponseInfo()->needs_auth) {
107 GURL origin = request_->url().GetOrigin(); 107 GURL origin = request_->url().GetOrigin();
108 if (server_auth_ && server_auth_->state == AUTH_STATE_HAVE_AUTH) { 108 if (server_auth_ && server_auth_->state == AUTH_STATE_HAVE_AUTH) {
109 request_->context()->ftp_auth_cache()->Remove( 109 request_->context()->ftp_auth_cache()->Remove(
110 origin, 110 origin, server_auth_->credentials);
111 server_auth_->credentials.username,
112 server_auth_->credentials.password);
113 } else if (!server_auth_) { 111 } else if (!server_auth_) {
114 server_auth_ = new AuthData(); 112 server_auth_ = new AuthData();
115 } 113 }
116 server_auth_->state = AUTH_STATE_NEED_AUTH; 114 server_auth_->state = AUTH_STATE_NEED_AUTH;
117 115
118 FtpAuthCache::Entry* cached_auth = 116 FtpAuthCache::Entry* cached_auth =
119 request_->context()->ftp_auth_cache()->Lookup(origin); 117 request_->context()->ftp_auth_cache()->Lookup(origin);
120 118
121 if (cached_auth) { 119 if (cached_auth) {
122 // Retry using cached auth data. 120 // Retry using cached auth data.
123 SetAuth(cached_auth->username, 121 SetAuth(cached_auth->credentials);
124 cached_auth->password);
125 } else { 122 } else {
126 // Prompt for a username/password. 123 // Prompt for a username/password.
127 NotifyHeadersComplete(); 124 NotifyHeadersComplete();
128 } 125 }
129 } else { 126 } else {
130 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result)); 127 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result));
131 } 128 }
132 } 129 }
133 130
134 void URLRequestFtpJob::OnReadCompleted(int result) { 131 void URLRequestFtpJob::OnReadCompleted(int result) {
135 read_in_progress_ = false; 132 read_in_progress_ = false;
136 if (result == 0) { 133 if (result == 0) {
137 NotifyDone(URLRequestStatus()); 134 NotifyDone(URLRequestStatus());
138 } else if (result < 0) { 135 } else if (result < 0) {
139 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result)); 136 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result));
140 } else { 137 } else {
141 // Clear the IO_PENDING status 138 // Clear the IO_PENDING status
142 SetStatus(URLRequestStatus()); 139 SetStatus(URLRequestStatus());
143 } 140 }
144 NotifyReadComplete(result); 141 NotifyReadComplete(result);
145 } 142 }
146 143
147 void URLRequestFtpJob::RestartTransactionWithAuth() { 144 void URLRequestFtpJob::RestartTransactionWithAuth() {
148 DCHECK(server_auth_ && server_auth_->state == AUTH_STATE_HAVE_AUTH); 145 DCHECK(server_auth_ && server_auth_->state == AUTH_STATE_HAVE_AUTH);
149 146
150 // No matter what, we want to report our status as IO pending since we will 147 // No matter what, we want to report our status as IO pending since we will
151 // be notifying our consumer asynchronously via OnStartCompleted. 148 // be notifying our consumer asynchronously via OnStartCompleted.
152 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0)); 149 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
153 150
154 int rv = transaction_->RestartWithAuth(server_auth_->credentials.username, 151 int rv = transaction_->RestartWithAuth(server_auth_->credentials,
155 server_auth_->credentials.password,
156 &start_callback_); 152 &start_callback_);
157 if (rv == ERR_IO_PENDING) 153 if (rv == ERR_IO_PENDING)
158 return; 154 return;
159 155
160 MessageLoop::current()->PostTask( 156 MessageLoop::current()->PostTask(
161 FROM_HERE, 157 FROM_HERE,
162 method_factory_.NewRunnableMethod( 158 method_factory_.NewRunnableMethod(
163 &URLRequestFtpJob::OnStartCompleted, rv)); 159 &URLRequestFtpJob::OnStartCompleted, rv));
164 } 160 }
165 161
(...skipping 30 matching lines...) Expand all
196 (server_auth_->state == AUTH_STATE_NEED_AUTH)); 192 (server_auth_->state == AUTH_STATE_NEED_AUTH));
197 scoped_refptr<AuthChallengeInfo> auth_info(new AuthChallengeInfo); 193 scoped_refptr<AuthChallengeInfo> auth_info(new AuthChallengeInfo);
198 auth_info->is_proxy = false; 194 auth_info->is_proxy = false;
199 auth_info->challenger = HostPortPair::FromURL(request_->url()); 195 auth_info->challenger = HostPortPair::FromURL(request_->url());
200 // scheme and realm are kept empty. 196 // scheme and realm are kept empty.
201 DCHECK(auth_info->scheme.empty()); 197 DCHECK(auth_info->scheme.empty());
202 DCHECK(auth_info->realm.empty()); 198 DCHECK(auth_info->realm.empty());
203 result->swap(auth_info); 199 result->swap(auth_info);
204 } 200 }
205 201
206 void URLRequestFtpJob::SetAuth(const string16& username, 202 void URLRequestFtpJob::SetAuth(const AuthCredentials& credentials) {
207 const string16& password) {
208 DCHECK(NeedsAuth()); 203 DCHECK(NeedsAuth());
209 server_auth_->state = AUTH_STATE_HAVE_AUTH; 204 server_auth_->state = AUTH_STATE_HAVE_AUTH;
210 server_auth_->credentials.username = username; 205 server_auth_->credentials = credentials;
211 server_auth_->credentials.password = password;
212 206
213 request_->context()->ftp_auth_cache()->Add(request_->url().GetOrigin(), 207 request_->context()->ftp_auth_cache()->Add(request_->url().GetOrigin(),
214 username, password); 208 server_auth_->credentials);
215 209
216 RestartTransactionWithAuth(); 210 RestartTransactionWithAuth();
217 } 211 }
218 212
219 void URLRequestFtpJob::CancelAuth() { 213 void URLRequestFtpJob::CancelAuth() {
220 DCHECK(NeedsAuth()); 214 DCHECK(NeedsAuth());
221 server_auth_->state = AUTH_STATE_CANCELED; 215 server_auth_->state = AUTH_STATE_CANCELED;
222 216
223 // Once the auth is cancelled, we proceed with the request as though 217 // Once the auth is cancelled, we proceed with the request as though
224 // there were no auth. Schedule this for later so that we don't cause 218 // there were no auth. Schedule this for later so that we don't cause
(...skipping 24 matching lines...) Expand all
249 if (rv == ERR_IO_PENDING) { 243 if (rv == ERR_IO_PENDING) {
250 read_in_progress_ = true; 244 read_in_progress_ = true;
251 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0)); 245 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
252 } else { 246 } else {
253 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, rv)); 247 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, rv));
254 } 248 }
255 return false; 249 return false;
256 } 250 }
257 251
258 } // namespace net 252 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request_ftp_job.h ('k') | net/url_request/url_request_http_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698