summaryrefslogtreecommitdiffstats
path: root/net/url_request/url_request_ftp_job.cc
diff options
context:
space:
mode:
authorshalev@chromium.org <shalev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-11 15:45:59 +0000
committershalev@chromium.org <shalev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-11 15:45:59 +0000
commitb9cf48b7c73d3ebeae320c939cba089955fbcad0 (patch)
treeb54413542256623e1a97f3b26653ddf98e849de9 /net/url_request/url_request_ftp_job.cc
parent0f2e45ec2650ebd32037ca109f1876ed85ce1fd5 (diff)
downloadchromium_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.cc39
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();
}