summaryrefslogtreecommitdiff
path: root/chromium/net/url_request/url_request_ftp_job.h
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
commit679147eead574d186ebf3069647b4c23e8ccace6 (patch)
treefc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/net/url_request/url_request_ftp_job.h
downloadqtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz
Initial import.
Diffstat (limited to 'chromium/net/url_request/url_request_ftp_job.h')
-rw-r--r--chromium/net/url_request/url_request_ftp_job.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/chromium/net/url_request/url_request_ftp_job.h b/chromium/net/url_request/url_request_ftp_job.h
new file mode 100644
index 00000000000..4a064a01cba
--- /dev/null
+++ b/chromium/net/url_request/url_request_ftp_job.h
@@ -0,0 +1,107 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_
+#define NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_
+
+#include <string>
+
+#include "base/memory/weak_ptr.h"
+#include "net/base/auth.h"
+#include "net/base/net_export.h"
+#include "net/ftp/ftp_request_info.h"
+#include "net/ftp/ftp_transaction.h"
+#include "net/http/http_request_info.h"
+#include "net/http/http_transaction.h"
+#include "net/proxy/proxy_info.h"
+#include "net/proxy/proxy_service.h"
+#include "net/url_request/url_request_job.h"
+
+namespace net {
+
+class NetworkDelegate;
+class FtpTransactionFactory;
+class FtpAuthCache;
+
+// A URLRequestJob subclass that is built on top of FtpTransaction. It
+// provides an implementation for FTP.
+class NET_EXPORT_PRIVATE URLRequestFtpJob : public URLRequestJob {
+ public:
+ URLRequestFtpJob(URLRequest* request,
+ NetworkDelegate* network_delegate,
+ FtpTransactionFactory* ftp_transaction_factory,
+ FtpAuthCache* ftp_auth_cache);
+
+ protected:
+ virtual ~URLRequestFtpJob();
+
+ // Overridden from URLRequestJob:
+ virtual bool IsSafeRedirect(const GURL& location) OVERRIDE;
+ virtual bool GetMimeType(std::string* mime_type) const OVERRIDE;
+ virtual void GetResponseInfo(HttpResponseInfo* info) OVERRIDE;
+ virtual HostPortPair GetSocketAddress() const OVERRIDE;
+ virtual void SetPriority(RequestPriority priority) OVERRIDE;
+ virtual void Start() OVERRIDE;
+ virtual void Kill() OVERRIDE;
+
+ RequestPriority priority() const { return priority_; }
+
+ private:
+ void OnResolveProxyComplete(int result);
+
+ void StartFtpTransaction();
+ void StartHttpTransaction();
+
+ void OnStartCompleted(int result);
+ void OnStartCompletedAsync(int result);
+ void OnReadCompleted(int result);
+
+ void RestartTransactionWithAuth();
+
+ void LogFtpServerType(char server_type);
+
+ // Overridden from URLRequestJob:
+ virtual LoadState GetLoadState() const OVERRIDE;
+ virtual bool NeedsAuth() OVERRIDE;
+ virtual void GetAuthChallengeInfo(
+ scoped_refptr<AuthChallengeInfo>* auth_info) OVERRIDE;
+ virtual void SetAuth(const AuthCredentials& credentials) OVERRIDE;
+ virtual void CancelAuth() OVERRIDE;
+
+ // TODO(ibrar): Yet to give another look at this function.
+ virtual UploadProgress GetUploadProgress() const OVERRIDE;
+ virtual bool ReadRawData(IOBuffer* buf,
+ int buf_size,
+ int *bytes_read) OVERRIDE;
+
+ void HandleAuthNeededResponse();
+
+ RequestPriority priority_;
+
+ ProxyService* proxy_service_;
+ ProxyInfo proxy_info_;
+ ProxyService::PacRequest* pac_request_;
+
+ FtpRequestInfo ftp_request_info_;
+ scoped_ptr<FtpTransaction> ftp_transaction_;
+
+ HttpRequestInfo http_request_info_;
+ scoped_ptr<HttpTransaction> http_transaction_;
+ const HttpResponseInfo* http_response_info_;
+
+ bool read_in_progress_;
+
+ scoped_refptr<AuthData> auth_data_;
+
+ base::WeakPtrFactory<URLRequestFtpJob> weak_factory_;
+
+ FtpTransactionFactory* ftp_transaction_factory_;
+ FtpAuthCache* ftp_auth_cache_;
+
+ DISALLOW_COPY_AND_ASSIGN(URLRequestFtpJob);
+};
+
+} // namespace net
+
+#endif // NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_