OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // A delegate class of WebURLLoaderImpl that handles text/vnd.chromium.ftp-dir | 5 // A delegate class of WebURLLoaderImpl that handles text/vnd.chromium.ftp-dir |
6 // data. | 6 // data. |
7 | 7 |
8 #ifndef WEBKIT_GLUE_FTP_DIRECTORY_LISTING_RESPONSE_DELEGATE_H_ | 8 #ifndef WEBKIT_GLUE_FTP_DIRECTORY_LISTING_RESPONSE_DELEGATE_H_ |
9 #define WEBKIT_GLUE_FTP_DIRECTORY_LISTING_RESPONSE_DELEGATE_H_ | 9 #define WEBKIT_GLUE_FTP_DIRECTORY_LISTING_RESPONSE_DELEGATE_H_ |
10 | 10 |
11 #include <string> | 11 #include <string> |
12 | 12 |
13 #include "net/ftp/ftp_directory_listing_buffer.h" | 13 #include "base/basictypes.h" |
14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h" | 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h" |
15 | 15 |
16 namespace WebKit { | 16 namespace WebKit { |
17 class WebURLLoader; | 17 class WebURLLoader; |
18 class WebURLLoaderClient; | 18 class WebURLLoaderClient; |
19 } | 19 } |
20 | 20 |
| 21 class GURL; |
| 22 |
21 namespace webkit_glue { | 23 namespace webkit_glue { |
22 | 24 |
23 class FtpDirectoryListingResponseDelegate { | 25 class FtpDirectoryListingResponseDelegate { |
24 public: | 26 public: |
25 FtpDirectoryListingResponseDelegate(WebKit::WebURLLoaderClient* client, | 27 FtpDirectoryListingResponseDelegate(WebKit::WebURLLoaderClient* client, |
26 WebKit::WebURLLoader* loader, | 28 WebKit::WebURLLoader* loader, |
27 const WebKit::WebURLResponse& response); | 29 const WebKit::WebURLResponse& response); |
28 | 30 |
29 // Passed through from ResourceHandleInternal | 31 // Passed through from ResourceHandleInternal |
30 void OnReceivedData(const char* data, int data_len); | 32 void OnReceivedData(const char* data, int data_len); |
31 void OnCompletedRequest(); | 33 void OnCompletedRequest(); |
32 | 34 |
33 private: | 35 private: |
34 void Init(); | 36 void Init(const GURL& response_url); |
35 | |
36 // Converts |filename| to detected server encoding and puts the result | |
37 // in |raw_bytes| (if no conversion is necessary, an empty string is used). | |
38 // Returns true on success. | |
39 bool ConvertToServerEncoding(const string16& filename, | |
40 std::string* raw_bytes) const; | |
41 | |
42 // Fetches the listing entries from the buffer and sends them to the client. | |
43 void ProcessReceivedEntries(); | |
44 | 37 |
45 void SendDataToClient(const std::string& data); | 38 void SendDataToClient(const std::string& data); |
46 | 39 |
47 // Pointers to the client and associated loader so we can make callbacks as | 40 // Pointers to the client and associated loader so we can make callbacks as |
48 // we parse pieces of data. | 41 // we parse pieces of data. |
49 WebKit::WebURLLoaderClient* client_; | 42 WebKit::WebURLLoaderClient* client_; |
50 WebKit::WebURLLoader* loader_; | 43 WebKit::WebURLLoader* loader_; |
51 | 44 |
52 // The original resource response for this request. We use this as a | 45 // Buffer for data received from the network. |
53 // starting point for each parts response. | 46 std::string buffer_; |
54 WebKit::WebURLResponse original_response_; | |
55 | |
56 // Data buffer also responsible for parsing the listing data. | |
57 net::FtpDirectoryListingBuffer buffer_; | |
58 | |
59 // True if we updated histogram data (we only want to do it once). | |
60 bool updated_histograms_; | |
61 | |
62 // True if we got an error when parsing the response. | |
63 bool had_parsing_error_; | |
64 | 47 |
65 DISALLOW_COPY_AND_ASSIGN(FtpDirectoryListingResponseDelegate); | 48 DISALLOW_COPY_AND_ASSIGN(FtpDirectoryListingResponseDelegate); |
66 }; | 49 }; |
67 | 50 |
68 } // namespace webkit_glue | 51 } // namespace webkit_glue |
69 | 52 |
70 #endif // WEBKIT_GLUE_FTP_DIRECTORY_LISTING_RESPONSE_DELEGATE_H_ | 53 #endif // WEBKIT_GLUE_FTP_DIRECTORY_LISTING_RESPONSE_DELEGATE_H_ |
OLD | NEW |