1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/chromeos/net/shill_error.h" 6 7 #include "base/strings/string_util.h" 8 #include "base/strings/utf_string_conversions.h" 9 #include "chrome/grit/generated_resources.h" 10 #include "chromeos/network/network_state.h" 11 #include "chromeos/network/network_state_handler.h" 12 #include "third_party/cros_system_api/dbus/service_constants.h" 13 #include "ui/base/l10n/l10n_util.h" 14 15 namespace chromeos { 16 17 namespace { 18 GetNetworkState(const std::string & network_id)19const NetworkState* GetNetworkState(const std::string& network_id) { 20 return NetworkHandler::Get() 21 ->network_state_handler() 22 ->GetNetworkStateFromGuid(network_id); 23 } 24 25 } // namespace 26 27 namespace shill_error { 28 GetShillErrorString(const std::string & error,const std::string & network_id)29base::string16 GetShillErrorString(const std::string& error, 30 const std::string& network_id) { 31 if (error.empty()) 32 return base::string16(); 33 if (error == shill::kErrorOutOfRange) 34 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_OUT_OF_RANGE); 35 if (error == shill::kErrorPinMissing) 36 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_PIN_MISSING); 37 if (error == shill::kErrorDhcpFailed) 38 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_DHCP_FAILED); 39 if (error == shill::kErrorConnectFailed) 40 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_CONNECT_FAILED); 41 if (error == shill::kErrorBadPassphrase || 42 error == shill::kErrorResultInvalidPassphrase) { 43 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_BAD_PASSPHRASE); 44 } 45 if (error == shill::kErrorBadWEPKey) 46 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_BAD_WEPKEY); 47 if (error == shill::kErrorActivationFailed) { 48 return l10n_util::GetStringUTF16( 49 IDS_CHROMEOS_NETWORK_ERROR_ACTIVATION_FAILED); 50 } 51 if (error == shill::kErrorNeedEvdo) 52 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_NEED_EVDO); 53 if (error == shill::kErrorNeedHomeNetwork) { 54 return l10n_util::GetStringUTF16( 55 IDS_CHROMEOS_NETWORK_ERROR_NEED_HOME_NETWORK); 56 } 57 if (error == shill::kErrorOtaspFailed) 58 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_OTASP_FAILED); 59 if (error == shill::kErrorAaaFailed) 60 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_AAA_FAILED); 61 if (error == shill::kErrorInternal) 62 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_INTERNAL); 63 if (error == shill::kErrorDNSLookupFailed) { 64 return l10n_util::GetStringUTF16( 65 IDS_CHROMEOS_NETWORK_ERROR_DNS_LOOKUP_FAILED); 66 } 67 if (error == shill::kErrorHTTPGetFailed) { 68 return l10n_util::GetStringUTF16( 69 IDS_CHROMEOS_NETWORK_ERROR_HTTP_GET_FAILED); 70 } 71 if (error == shill::kErrorIpsecPskAuthFailed) { 72 return l10n_util::GetStringUTF16( 73 IDS_CHROMEOS_NETWORK_ERROR_IPSEC_PSK_AUTH_FAILED); 74 } 75 if (error == shill::kErrorIpsecCertAuthFailed) { 76 return l10n_util::GetStringUTF16( 77 IDS_CHROMEOS_NETWORK_ERROR_CERT_AUTH_FAILED); 78 } 79 if (error == shill::kErrorEapAuthenticationFailed) { 80 const NetworkState* network = 81 network_id.empty() ? nullptr : GetNetworkState(network_id); 82 // TLS always requires a client certificate, so show a cert auth 83 // failed message for TLS. Other EAP methods do not generally require 84 // a client certicate. 85 if (network && network->eap_method() == shill::kEapMethodTLS) { 86 return l10n_util::GetStringUTF16( 87 IDS_CHROMEOS_NETWORK_ERROR_CERT_AUTH_FAILED); 88 } else { 89 return l10n_util::GetStringUTF16( 90 IDS_CHROMEOS_NETWORK_ERROR_EAP_AUTH_FAILED); 91 } 92 } 93 if (error == shill::kErrorEapLocalTlsFailed) { 94 return l10n_util::GetStringUTF16( 95 IDS_CHROMEOS_NETWORK_ERROR_EAP_LOCAL_TLS_FAILED); 96 } 97 if (error == shill::kErrorEapRemoteTlsFailed) { 98 return l10n_util::GetStringUTF16( 99 IDS_CHROMEOS_NETWORK_ERROR_EAP_REMOTE_TLS_FAILED); 100 } 101 if (error == shill::kErrorPppAuthFailed) { 102 return l10n_util::GetStringUTF16( 103 IDS_CHROMEOS_NETWORK_ERROR_PPP_AUTH_FAILED); 104 } 105 106 if (base::ToLowerASCII(error) == base::ToLowerASCII(shill::kUnknownString)) { 107 return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_UNKNOWN); 108 } 109 return l10n_util::GetStringFUTF16(IDS_NETWORK_UNRECOGNIZED_ERROR, 110 base::UTF8ToUTF16(error)); 111 } 112 IsConfigurationError(const std::string & error)113bool IsConfigurationError(const std::string& error) { 114 if (error.empty()) 115 return false; 116 return error == shill::kErrorPinMissing || 117 error == shill::kErrorBadPassphrase || 118 error == shill::kErrorResultInvalidPassphrase || 119 error == shill::kErrorBadWEPKey; 120 } 121 122 } // namespace shill_error 123 124 } // namespace chromeos 125