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

Side by Side Diff: net/url_request/url_request_ftp_job.h

Issue 40138: Use FilterContext to allow filters to access URLRequestJob data... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #ifndef NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_ 5 #ifndef NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_
6 #define NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_ 6 #define NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_
7 7
8 #include <string>
9
8 #include "net/url_request/url_request_inet_job.h" 10 #include "net/url_request/url_request_inet_job.h"
9 11
10 // A basic FTP job that handles download files and showing directory listings. 12 // A basic FTP job that handles download files and showing directory listings.
11 class URLRequestFtpJob : public URLRequestInetJob { 13 class URLRequestFtpJob : public URLRequestInetJob {
12 public: 14 public:
13 static URLRequestJob* Factory(URLRequest* request, const std::string& scheme); 15 static URLRequestJob* Factory(URLRequest* request, const std::string& scheme);
14 16
15 virtual ~URLRequestFtpJob(); 17 virtual ~URLRequestFtpJob();
16 18
17 // URLRequestJob methods: 19 // URLRequestJob methods:
18 virtual void Start(); 20 virtual void Start();
19 virtual bool GetMimeType(std::string* mime_type); 21 virtual bool GetMimeType(std::string* mime_type) const;
20 22
21 // URLRequestInetJob methods: 23 // URLRequestInetJob methods:
22 virtual void OnIOComplete(const AsyncResult& result); 24 virtual void OnIOComplete(const AsyncResult& result);
23 25
24 protected: 26 protected:
25 URLRequestFtpJob(URLRequest* request); 27 explicit URLRequestFtpJob(URLRequest* request);
26 28
27 // Starts the WinInet request. 29 // Starts the WinInet request.
28 virtual void SendRequest(); 30 virtual void SendRequest();
29 31
30 virtual int CallInternetRead(char* dest, int dest_size, int *bytes_read); 32 virtual int CallInternetRead(char* dest, int dest_size, int *bytes_read);
31 virtual bool GetReadBytes(const AsyncResult& result, int* bytes_read); 33 virtual bool GetReadBytes(const AsyncResult& result, int* bytes_read);
32 virtual void OnCancelAuth(); 34 virtual void OnCancelAuth();
33 virtual void OnSetAuth(); 35 virtual void OnSetAuth();
34 virtual bool NeedsAuth(); 36 virtual bool NeedsAuth();
35 virtual void GetAuthChallengeInfo(scoped_refptr<net::AuthChallengeInfo>*); 37 virtual void GetAuthChallengeInfo(scoped_refptr<net::AuthChallengeInfo>*);
(...skipping 22 matching lines...) Expand all
58 void OnFinishDirectoryTraversal(); 60 void OnFinishDirectoryTraversal();
59 61
60 // If given data, writes it to the directory listing html. If 62 // If given data, writes it to the directory listing html. If
61 // call_io_complete is true, will also notify the parent class that we wrote 63 // call_io_complete is true, will also notify the parent class that we wrote
62 // data in the given buffer. 64 // data in the given buffer.
63 int WriteData(const std::string* data, bool call_io_complete); 65 int WriteData(const std::string* data, bool call_io_complete);
64 66
65 // Continuation function for calling OnIOComplete through the message loop. 67 // Continuation function for calling OnIOComplete through the message loop.
66 virtual void ContinueIOComplete(int bytes_written); 68 virtual void ContinueIOComplete(int bytes_written);
67 69
68 // Continuation function for calling NotifyHeadersComplete through 70 // Continuation function for calling NotifyHeadersComplete through the message
69 //the message loop 71 // loop.
70 virtual void ContinueNotifyHeadersComplete(); 72 virtual void ContinueNotifyHeadersComplete();
71 73
72 typedef enum { 74 typedef enum {
73 START = 0x200, // initial state of the ftp job 75 START = 0x200, // initial state of the ftp job
74 CONNECTING, // opening the url 76 CONNECTING, // opening the url
75 SETTING_CUR_DIRECTORY, // attempting to change current dir to match request 77 SETTING_CUR_DIRECTORY, // attempting to change current dir to match request
76 FINDING_FIRST_FILE, // retrieving first file information in cur dir (by FtpFindFirstFile) 78 FINDING_FIRST_FILE, // retrieving first file information in cur dir (by
79 // FtpFindFirstFile)
77 GETTING_DIRECTORY, // retrieving the directory listing (if directory) 80 GETTING_DIRECTORY, // retrieving the directory listing (if directory)
78 GETTING_FILE_HANDLE, // initiate access to file by call to FtpOpenFile (i f file) 81 GETTING_FILE_HANDLE, // initiate access to file by call to FtpOpenFile
82 // (if file).
79 GETTING_FILE, // retrieving the file (if file) 83 GETTING_FILE, // retrieving the file (if file)
80 DONE // URLRequestInetJob is reading the response now 84 DONE // URLRequestInetJob is reading the response now
81 } FtpJobState; 85 } FtpJobState;
82 86
83 // The FtpJob has several asynchronous operations which happen 87 // The FtpJob has several asynchronous operations which happen
84 // in sequence. The state keeps track of which asynchronous IO 88 // in sequence. The state keeps track of which asynchronous IO
85 // is pending at any given point in time. 89 // is pending at any given point in time.
86 FtpJobState state_; 90 FtpJobState state_;
87 91
88 // In IE 4 and before, this pointer passed to asynchronous InternetReadFile 92 // In IE 4 and before, this pointer passed to asynchronous InternetReadFile
89 // calls is where the number of read bytes is written to. 93 // calls is where the number of read bytes is written to.
90 DWORD bytes_read_; 94 DWORD bytes_read_;
91 95
92 bool is_directory_; // does the url point to a file or directory 96 bool is_directory_; // does the url point to a file or directory
93 WIN32_FIND_DATAA find_data_; 97 WIN32_FIND_DATAA find_data_;
94 std::string directory_html_; // if url is directory holds html 98 std::string directory_html_; // if url is directory holds html
95 99
96 // When building a directory listing, we need to temporarily hold on to the 100 // When building a directory listing, we need to temporarily hold on to the
97 // buffer in between the time a Read() call comes in and we get the file 101 // buffer in between the time a Read() call comes in and we get the file
98 // entry from WinInet. 102 // entry from WinInet.
99 char* dest_; 103 char* dest_;
100 int dest_size_; 104 int dest_size_;
101 105
102 106
103 DISALLOW_EVIL_CONSTRUCTORS(URLRequestFtpJob); 107 DISALLOW_EVIL_CONSTRUCTORS(URLRequestFtpJob);
104 }; 108 };
105 109
106 #endif // NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_ 110 #endif // NET_URL_REQUEST_URL_REQUEST_FTP_JOB_H_
107 111
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698