| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_network_transaction.h" | 5 #include "net/ftp/ftp_network_transaction.h" | 
| 6 | 6 | 
| 7 #include "base/bind.h" | 7 #include "base/bind.h" | 
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" | 
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" | 
| 10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" | 
| (...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 813   switch (GetErrorClass(response.status_code)) { | 813   switch (GetErrorClass(response.status_code)) { | 
| 814     case ERROR_CLASS_INITIATED: | 814     case ERROR_CLASS_INITIATED: | 
| 815       return Stop(ERR_INVALID_RESPONSE); | 815       return Stop(ERR_INVALID_RESPONSE); | 
| 816     case ERROR_CLASS_OK: { | 816     case ERROR_CLASS_OK: { | 
| 817       // All important info should be on the first line. | 817       // All important info should be on the first line. | 
| 818       std::string line = response.lines[0]; | 818       std::string line = response.lines[0]; | 
| 819       // The response should be ASCII, which allows us to do case-insensitive | 819       // The response should be ASCII, which allows us to do case-insensitive | 
| 820       // comparisons easily. If it is not ASCII, we leave the system type | 820       // comparisons easily. If it is not ASCII, we leave the system type | 
| 821       // as unknown. | 821       // as unknown. | 
| 822       if (base::IsStringASCII(line)) { | 822       if (base::IsStringASCII(line)) { | 
| 823         line = base::StringToLowerASCII(line); | 823         line = base::ToLowerASCII(line); | 
| 824 | 824 | 
| 825         // Remove all whitespace, to correctly handle cases like fancy "V M S" | 825         // Remove all whitespace, to correctly handle cases like fancy "V M S" | 
| 826         // response instead of "VMS". | 826         // response instead of "VMS". | 
| 827         base::RemoveChars(line, base::kWhitespaceASCII, &line); | 827         base::RemoveChars(line, base::kWhitespaceASCII, &line); | 
| 828 | 828 | 
| 829         // The "magic" strings we test for below have been gathered by an | 829         // The "magic" strings we test for below have been gathered by an | 
| 830         // empirical study. VMS needs to come first because some VMS systems | 830         // empirical study. VMS needs to come first because some VMS systems | 
| 831         // also respond with "UNIX emulation", which is not perfect. It is much | 831         // also respond with "UNIX emulation", which is not perfect. It is much | 
| 832         // more reliable to talk to these servers in their native language. | 832         // more reliable to talk to these servers in their native language. | 
| 833         if (line.find("vms") != std::string::npos) { | 833         if (line.find("vms") != std::string::npos) { | 
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1373   if (!had_error_type[type]) { | 1373   if (!had_error_type[type]) { | 
| 1374     had_error_type[type] = true; | 1374     had_error_type[type] = true; | 
| 1375     UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorHappened", | 1375     UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorHappened", | 
| 1376         type, NUM_OF_NET_ERROR_TYPES); | 1376         type, NUM_OF_NET_ERROR_TYPES); | 
| 1377   } | 1377   } | 
| 1378   UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorCount", | 1378   UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorCount", | 
| 1379       type, NUM_OF_NET_ERROR_TYPES); | 1379       type, NUM_OF_NET_ERROR_TYPES); | 
| 1380 } | 1380 } | 
| 1381 | 1381 | 
| 1382 }  // namespace net | 1382 }  // namespace net | 
| OLD | NEW | 
|---|