| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "webkit/glue/ftp_directory_listing_response_delegate.h" | 5 #include "webkit/glue/ftp_directory_listing_response_delegate.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 if (!CodepageToUTF16(raw_filename, encoding.c_str(), | 56 if (!CodepageToUTF16(raw_filename, encoding.c_str(), |
| 57 OnStringUtilConversionError::SUBSTITUTE, &filename)) | 57 OnStringUtilConversionError::SUBSTITUTE, &filename)) |
| 58 filename = WideToUTF16Hack(base::SysNativeMBToWide(raw_filename)); | 58 filename = WideToUTF16Hack(base::SysNativeMBToWide(raw_filename)); |
| 59 return filename; | 59 return filename; |
| 60 } | 60 } |
| 61 | 61 |
| 62 void ExtractFullLinesFromBuffer(std::string* buffer, | 62 void ExtractFullLinesFromBuffer(std::string* buffer, |
| 63 std::vector<std::string>* lines) { | 63 std::vector<std::string>* lines) { |
| 64 int cut_pos = 0; | 64 int cut_pos = 0; |
| 65 for (size_t i = 0; i < buffer->length(); i++) { | 65 for (size_t i = 0; i < buffer->length(); i++) { |
| 66 if (i >= 1 && (*buffer)[i - 1] == '\r' && (*buffer)[i] == '\n') { | 66 if ((*buffer)[i] != '\n') |
| 67 lines->push_back(buffer->substr(cut_pos, i - cut_pos - 1)); | 67 continue; |
| 68 cut_pos = i + 1; | 68 size_t line_length = i - cut_pos; |
| 69 } | 69 if (line_length > 0 && (*buffer)[i - 1] == '\r') |
| 70 line_length--; |
| 71 lines->push_back(buffer->substr(cut_pos, line_length)); |
| 72 cut_pos = i + 1; |
| 70 } | 73 } |
| 71 buffer->erase(0, cut_pos); | 74 buffer->erase(0, cut_pos); |
| 72 } | 75 } |
| 73 | 76 |
| 74 void LogFtpServerType(char server_type) { | 77 void LogFtpServerType(char server_type) { |
| 75 switch (server_type) { | 78 switch (server_type) { |
| 76 case 'E': | 79 case 'E': |
| 77 net::UpdateFtpServerTypeHistograms(net::SERVER_EPLF); | 80 net::UpdateFtpServerTypeHistograms(net::SERVER_EPLF); |
| 78 break; | 81 break; |
| 79 case 'V': | 82 case 'V': |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 | 247 |
| 245 void FtpDirectoryListingResponseDelegate::SendResponseBufferToClient() { | 248 void FtpDirectoryListingResponseDelegate::SendResponseBufferToClient() { |
| 246 if (!response_buffer_.empty()) { | 249 if (!response_buffer_.empty()) { |
| 247 client_->didReceiveData(loader_, response_buffer_.data(), | 250 client_->didReceiveData(loader_, response_buffer_.data(), |
| 248 response_buffer_.length(), -1); | 251 response_buffer_.length(), -1); |
| 249 response_buffer_.clear(); | 252 response_buffer_.clear(); |
| 250 } | 253 } |
| 251 } | 254 } |
| 252 | 255 |
| 253 } // namespace webkit_glue | 256 } // namespace webkit_glue |
| OLD | NEW |