shill_error.cc 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. #include "ui/chromeos/shill_error.h"
  5. #include "base/strings/string_util.h"
  6. #include "base/strings/utf_string_conversions.h"
  7. #include "chromeos/ash/components/network/network_state.h"
  8. #include "chromeos/ash/components/network/network_state_handler.h"
  9. #include "third_party/cros_system_api/dbus/service_constants.h"
  10. #include "ui/base/l10n/l10n_util.h"
  11. #include "ui/chromeos/strings/grit/ui_chromeos_strings.h"
  12. namespace ui {
  13. namespace {
  14. const ash::NetworkState* GetNetworkState(const std::string& network_id) {
  15. return ash::NetworkHandler::Get()
  16. ->network_state_handler()
  17. ->GetNetworkStateFromGuid(network_id);
  18. }
  19. } // namespace
  20. namespace shill_error {
  21. std::u16string GetShillErrorString(const std::string& error,
  22. const std::string& network_id) {
  23. if (error.empty())
  24. return std::u16string();
  25. if (error == shill::kErrorOutOfRange)
  26. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_OUT_OF_RANGE);
  27. if (error == shill::kErrorPinMissing)
  28. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_PIN_MISSING);
  29. if (error == shill::kErrorDhcpFailed)
  30. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_DHCP_FAILED);
  31. if (error == shill::kErrorConnectFailed)
  32. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_CONNECT_FAILED);
  33. if (error == shill::kErrorBadPassphrase ||
  34. error == shill::kErrorResultInvalidPassphrase) {
  35. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_BAD_PASSPHRASE);
  36. }
  37. if (error == shill::kErrorBadWEPKey)
  38. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_BAD_WEPKEY);
  39. if (error == shill::kErrorActivationFailed) {
  40. return l10n_util::GetStringUTF16(
  41. IDS_CHROMEOS_NETWORK_ERROR_ACTIVATION_FAILED);
  42. }
  43. if (error == shill::kErrorNeedEvdo)
  44. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_NEED_EVDO);
  45. if (error == shill::kErrorNeedHomeNetwork) {
  46. return l10n_util::GetStringUTF16(
  47. IDS_CHROMEOS_NETWORK_ERROR_NEED_HOME_NETWORK);
  48. }
  49. if (error == shill::kErrorOtaspFailed)
  50. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_OTASP_FAILED);
  51. if (error == shill::kErrorAaaFailed)
  52. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_AAA_FAILED);
  53. if (error == shill::kErrorInternal)
  54. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_INTERNAL);
  55. if (error == shill::kErrorDNSLookupFailed) {
  56. return l10n_util::GetStringUTF16(
  57. IDS_CHROMEOS_NETWORK_ERROR_DNS_LOOKUP_FAILED);
  58. }
  59. if (error == shill::kErrorHTTPGetFailed) {
  60. return l10n_util::GetStringUTF16(
  61. IDS_CHROMEOS_NETWORK_ERROR_HTTP_GET_FAILED);
  62. }
  63. if (error == shill::kErrorIpsecPskAuthFailed) {
  64. return l10n_util::GetStringUTF16(
  65. IDS_CHROMEOS_NETWORK_ERROR_IPSEC_PSK_AUTH_FAILED);
  66. }
  67. if (error == shill::kErrorIpsecCertAuthFailed) {
  68. return l10n_util::GetStringUTF16(
  69. IDS_CHROMEOS_NETWORK_ERROR_CERT_AUTH_FAILED);
  70. }
  71. if (error == shill::kErrorEapAuthenticationFailed) {
  72. const ash::NetworkState* network =
  73. network_id.empty() ? nullptr : GetNetworkState(network_id);
  74. // TLS always requires a client certificate, so show a cert auth
  75. // failed message for TLS. Other EAP methods do not generally require
  76. // a client certicate.
  77. if (network && network->eap_method() == shill::kEapMethodTLS) {
  78. return l10n_util::GetStringUTF16(
  79. IDS_CHROMEOS_NETWORK_ERROR_CERT_AUTH_FAILED);
  80. } else {
  81. return l10n_util::GetStringUTF16(
  82. IDS_CHROMEOS_NETWORK_ERROR_EAP_AUTH_FAILED);
  83. }
  84. }
  85. if (error == shill::kErrorEapLocalTlsFailed) {
  86. return l10n_util::GetStringUTF16(
  87. IDS_CHROMEOS_NETWORK_ERROR_EAP_LOCAL_TLS_FAILED);
  88. }
  89. if (error == shill::kErrorEapRemoteTlsFailed) {
  90. return l10n_util::GetStringUTF16(
  91. IDS_CHROMEOS_NETWORK_ERROR_EAP_REMOTE_TLS_FAILED);
  92. }
  93. if (error == shill::kErrorPppAuthFailed) {
  94. return l10n_util::GetStringUTF16(
  95. IDS_CHROMEOS_NETWORK_ERROR_PPP_AUTH_FAILED);
  96. }
  97. if (error == shill::kErrorResultNotOnHomeNetwork) {
  98. return l10n_util::GetStringUTF16(
  99. IDS_CHROMEOS_NETWORK_ERROR_NOT_ON_HOME_NETWORK);
  100. }
  101. if (error == shill::kErrorNotAuthenticated) {
  102. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_BAD_PASSPHRASE);
  103. }
  104. if (error == shill::kErrorSimLocked) {
  105. return l10n_util::GetStringUTF16(IDS_NETWORK_LIST_SIM_CARD_LOCKED);
  106. }
  107. if (error == shill::kErrorNotRegistered) {
  108. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_NOT_REGISTERED);
  109. }
  110. if (error == shill::kErrorResultWrongState) {
  111. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_WRONG_STATE);
  112. }
  113. if (base::ToLowerASCII(error) == base::ToLowerASCII(shill::kUnknownString)) {
  114. return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_UNKNOWN);
  115. }
  116. return l10n_util::GetStringFUTF16(IDS_NETWORK_UNRECOGNIZED_ERROR,
  117. base::UTF8ToUTF16(error));
  118. }
  119. } // namespace shill_error
  120. } // namespace ui