| Index: net/url_request/url_request_ftp_job.cc
|
| diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc
|
| index aca1b484d93cd7a914019d9d4d3a53310f463f55..b0a3b43c4245f1cf033a430b3b9266ec1fe22cc5 100644
|
| --- a/net/url_request/url_request_ftp_job.cc
|
| +++ b/net/url_request/url_request_ftp_job.cc
|
| @@ -19,10 +19,18 @@
|
|
|
| namespace net {
|
|
|
| -URLRequestFtpJob::URLRequestFtpJob(URLRequest* request)
|
| - : URLRequestJob(request, request->context()->network_delegate()),
|
| +URLRequestFtpJob::URLRequestFtpJob(
|
| + URLRequest* request,
|
| + NetworkDelegate* network_delegate,
|
| + FtpTransactionFactory* ftp_transaction_factory,
|
| + FtpAuthCache* ftp_auth_cache)
|
| + : URLRequestJob(request, network_delegate),
|
| read_in_progress_(false),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
|
| + ftp_transaction_factory_(ftp_transaction_factory),
|
| + ftp_auth_cache_(ftp_auth_cache) {
|
| + DCHECK(ftp_transaction_factory);
|
| + DCHECK(ftp_auth_cache);
|
| }
|
|
|
| // static
|
| @@ -32,12 +40,14 @@ URLRequestJob* URLRequestFtpJob::Factory(URLRequest* request,
|
|
|
| int port = request->url().IntPort();
|
| if (request->url().has_port() &&
|
| - !IsPortAllowedByFtp(port) && !IsPortAllowedByOverride(port))
|
| + !IsPortAllowedByFtp(port) && !IsPortAllowedByOverride(port)) {
|
| return new URLRequestErrorJob(request, ERR_UNSAFE_PORT);
|
| + }
|
|
|
| - DCHECK(request->context());
|
| - DCHECK(request->context()->ftp_transaction_factory());
|
| - return new URLRequestFtpJob(request);
|
| + return new URLRequestFtpJob(request,
|
| + request->context()->network_delegate(),
|
| + request->context()->ftp_transaction_factory(),
|
| + request->context()->ftp_auth_cache());
|
| }
|
|
|
| bool URLRequestFtpJob::GetMimeType(std::string* mime_type) const {
|
| @@ -61,11 +71,8 @@ URLRequestFtpJob::~URLRequestFtpJob() {
|
| void URLRequestFtpJob::StartTransaction() {
|
| // Create a transaction.
|
| DCHECK(!transaction_.get());
|
| - DCHECK(request_->context());
|
| - DCHECK(request_->context()->ftp_transaction_factory());
|
|
|
| - transaction_.reset(
|
| - request_->context()->ftp_transaction_factory()->CreateTransaction());
|
| + transaction_.reset(ftp_transaction_factory_->CreateTransaction());
|
|
|
| // No matter what, we want to report our status as IO pending since we will
|
| // be notifying our consumer asynchronously via OnStartCompleted.
|
| @@ -104,16 +111,13 @@ void URLRequestFtpJob::OnStartCompleted(int result) {
|
| } else if (transaction_->GetResponseInfo()->needs_auth) {
|
| GURL origin = request_->url().GetOrigin();
|
| if (server_auth_ && server_auth_->state == AUTH_STATE_HAVE_AUTH) {
|
| - request_->context()->ftp_auth_cache()->Remove(
|
| - origin, server_auth_->credentials);
|
| + ftp_auth_cache_->Remove(origin, server_auth_->credentials);
|
| } else if (!server_auth_) {
|
| server_auth_ = new AuthData();
|
| }
|
| server_auth_->state = AUTH_STATE_NEED_AUTH;
|
|
|
| - FtpAuthCache::Entry* cached_auth =
|
| - request_->context()->ftp_auth_cache()->Lookup(origin);
|
| -
|
| + FtpAuthCache::Entry* cached_auth = ftp_auth_cache_->Lookup(origin);
|
| if (cached_auth) {
|
| // Retry using cached auth data.
|
| SetAuth(cached_auth->credentials);
|
| @@ -204,8 +208,7 @@ void URLRequestFtpJob::SetAuth(const AuthCredentials& credentials) {
|
| server_auth_->state = AUTH_STATE_HAVE_AUTH;
|
| server_auth_->credentials = credentials;
|
|
|
| - request_->context()->ftp_auth_cache()->Add(request_->url().GetOrigin(),
|
| - server_auth_->credentials);
|
| + ftp_auth_cache_->Add(request_->url().GetOrigin(), server_auth_->credentials);
|
|
|
| RestartTransactionWithAuth();
|
| }
|
|
|