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

Side by Side Diff: net/ftp/ftp_directory_listing_parser.cc

Issue 885443002: Roll Chrome into Mojo. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Rebase to ToT mojo Created 5 years, 10 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
OLDNEW
1 // Copyright (c) 2011 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 #include "net/ftp/ftp_directory_listing_parser.h" 5 #include "net/ftp/ftp_directory_listing_parser.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/i18n/icu_encoding_detection.h" 9 #include "base/i18n/icu_encoding_detection.h"
10 #include "base/i18n/icu_string_conversions.h" 10 #include "base/i18n/icu_string_conversions.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 entries->clear(); 88 entries->clear();
89 return ERR_UNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT; 89 return ERR_UNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT;
90 } 90 }
91 91
92 // Detects encoding of |text| and parses it as an FTP directory listing. 92 // Detects encoding of |text| and parses it as an FTP directory listing.
93 // Fills in |entries| and |server_type| and returns network error code. 93 // Fills in |entries| and |server_type| and returns network error code.
94 int DecodeAndParse(const std::string& text, 94 int DecodeAndParse(const std::string& text,
95 const base::Time& current_time, 95 const base::Time& current_time,
96 std::vector<FtpDirectoryListingEntry>* entries, 96 std::vector<FtpDirectoryListingEntry>* entries,
97 FtpServerType* server_type) { 97 FtpServerType* server_type) {
98 const char* kNewlineSeparators[] = { "\n", "\r\n" }; 98 const char* const kNewlineSeparators[] = { "\n", "\r\n" };
99 99
100 std::vector<std::string> encodings; 100 std::vector<std::string> encodings;
101 if (!base::DetectAllEncodings(text, &encodings)) 101 if (!base::DetectAllEncodings(text, &encodings))
102 return ERR_ENCODING_DETECTION_FAILED; 102 return ERR_ENCODING_DETECTION_FAILED;
103 103
104 // Use first encoding that can be used to decode the text. 104 // Use first encoding that can be used to decode the text.
105 for (size_t i = 0; i < encodings.size(); i++) { 105 for (size_t i = 0; i < encodings.size(); i++) {
106 base::string16 converted_text; 106 base::string16 converted_text;
107 if (base::CodepageToUTF16(text, 107 if (base::CodepageToUTF16(text,
108 encodings[i].c_str(), 108 encodings[i].c_str(),
(...skipping 27 matching lines...) Expand all
136 int ParseFtpDirectoryListing(const std::string& text, 136 int ParseFtpDirectoryListing(const std::string& text,
137 const base::Time& current_time, 137 const base::Time& current_time,
138 std::vector<FtpDirectoryListingEntry>* entries) { 138 std::vector<FtpDirectoryListingEntry>* entries) {
139 FtpServerType server_type = SERVER_UNKNOWN; 139 FtpServerType server_type = SERVER_UNKNOWN;
140 int rv = DecodeAndParse(text, current_time, entries, &server_type); 140 int rv = DecodeAndParse(text, current_time, entries, &server_type);
141 UpdateFtpServerTypeHistograms(server_type); 141 UpdateFtpServerTypeHistograms(server_type);
142 return rv; 142 return rv;
143 } 143 }
144 144
145 } // namespace net 145 } // namespace net
OLDNEW
« no previous file with comments | « net/dns/dns_config_service_posix_unittest.cc ('k') | net/ftp/ftp_directory_listing_parser_ls_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698