diff options
author | shalev@chromium.org <shalev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-11 15:45:59 +0000 |
---|---|---|
committer | shalev@chromium.org <shalev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-11 15:45:59 +0000 |
commit | b9cf48b7c73d3ebeae320c939cba089955fbcad0 (patch) | |
tree | b54413542256623e1a97f3b26653ddf98e849de9 /net/url_request/url_request_ftp_job.cc | |
parent | 0f2e45ec2650ebd32037ca109f1876ed85ce1fd5 (diff) | |
download | chromium_src-b9cf48b7c73d3ebeae320c939cba089955fbcad0.zip chromium_src-b9cf48b7c73d3ebeae320c939cba089955fbcad0.tar.gz chromium_src-b9cf48b7c73d3ebeae320c939cba089955fbcad0.tar.bz2 |
Replaced static URLRequestFtpJob factory with non-static protocol handler for FTP jobs.
Note: all tests for FTP are currently disabled. The tests have been run locally and a new mock-based test will be added before committing.
Note: this depends on
http://codereview.chromium.org/10704021/
BUG=None
TEST=net_unittests --gtest_filter=URLRequestTestFTP.* --gtest_also_run_disabled_tests
Review URL: https://chromiumcodereview.appspot.com/10537056
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146125 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request/url_request_ftp_job.cc')
-rw-r--r-- | net/url_request/url_request_ftp_job.cc | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc index aca1b48..b0a3b43 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(); } |