| 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 "chromeos/network/network_state.h" | 5 #include "chromeos/network/network_state.h" |
| 6 | 6 |
| 7 #include "base/i18n/icu_encoding_detection.h" | 7 #include "base/i18n/icu_encoding_detection.h" |
| 8 #include "base/i18n/icu_string_conversions.h" | 8 #include "base/i18n/icu_string_conversions.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| 11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/strings/utf_string_conversion_utils.h" | 12 #include "base/strings/utf_string_conversion_utils.h" |
| 13 #include "base/values.h" | 13 #include "base/values.h" |
| 14 #include "chromeos/network/network_event_log.h" | 14 #include "chromeos/network/network_event_log.h" |
| 15 #include "third_party/cros_system_api/dbus/service_constants.h" | 15 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 16 | 16 |
| 17 namespace { | 17 namespace { |
| 18 | 18 |
| 19 const char kLogModule[] = "NetworkState"; | |
| 20 | |
| 21 bool ConvertListValueToStringVector(const base::ListValue& string_list, | 19 bool ConvertListValueToStringVector(const base::ListValue& string_list, |
| 22 std::vector<std::string>* result) { | 20 std::vector<std::string>* result) { |
| 23 for (size_t i = 0; i < string_list.GetSize(); ++i) { | 21 for (size_t i = 0; i < string_list.GetSize(); ++i) { |
| 24 std::string str; | 22 std::string str; |
| 25 if (!string_list.GetString(i, &str)) | 23 if (!string_list.GetString(i, &str)) |
| 26 return false; | 24 return false; |
| 27 result->push_back(str); | 25 result->push_back(str); |
| 28 } | 26 } |
| 29 return true; | 27 return true; |
| 30 } | 28 } |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 bool NetworkState::IsConnectingState() const { | 177 bool NetworkState::IsConnectingState() const { |
| 180 return StateIsConnecting(connection_state_); | 178 return StateIsConnecting(connection_state_); |
| 181 } | 179 } |
| 182 | 180 |
| 183 void NetworkState::UpdateName() { | 181 void NetworkState::UpdateName() { |
| 184 if (hex_ssid_.empty()) { | 182 if (hex_ssid_.empty()) { |
| 185 // Validate name for UTF8. | 183 // Validate name for UTF8. |
| 186 std::string valid_ssid = ValidateUTF8(name()); | 184 std::string valid_ssid = ValidateUTF8(name()); |
| 187 if (valid_ssid != name()) { | 185 if (valid_ssid != name()) { |
| 188 set_name(valid_ssid); | 186 set_name(valid_ssid); |
| 189 network_event_log::AddEntry( | 187 NET_LOG_DEBUG("UpdateName", base::StringPrintf( |
| 190 kLogModule, "UpdateName", | 188 "%s: UTF8: %s", path().c_str(), name().c_str())); |
| 191 base::StringPrintf("%s: UTF8: %s", path().c_str(), name().c_str())); | |
| 192 } | 189 } |
| 193 return; | 190 return; |
| 194 } | 191 } |
| 195 | 192 |
| 196 std::string ssid; | 193 std::string ssid; |
| 197 std::vector<uint8> raw_ssid_bytes; | 194 std::vector<uint8> raw_ssid_bytes; |
| 198 if (base::HexStringToBytes(hex_ssid_, &raw_ssid_bytes)) { | 195 if (base::HexStringToBytes(hex_ssid_, &raw_ssid_bytes)) { |
| 199 ssid = std::string(raw_ssid_bytes.begin(), raw_ssid_bytes.end()); | 196 ssid = std::string(raw_ssid_bytes.begin(), raw_ssid_bytes.end()); |
| 200 } else { | 197 } else { |
| 201 std::string desc = base::StringPrintf("%s: Error processing: %s", | 198 std::string desc = base::StringPrintf("%s: Error processing: %s", |
| 202 path().c_str(), hex_ssid_.c_str()); | 199 path().c_str(), hex_ssid_.c_str()); |
| 203 network_event_log::AddEntry(kLogModule, "UpdateName", desc); | 200 NET_LOG_DEBUG("UpdateName", desc); |
| 204 LOG(ERROR) << desc; | 201 LOG(ERROR) << desc; |
| 205 ssid = name(); | 202 ssid = name(); |
| 206 } | 203 } |
| 207 | 204 |
| 208 if (IsStringUTF8(ssid)) { | 205 if (IsStringUTF8(ssid)) { |
| 209 if (ssid != name()) { | 206 if (ssid != name()) { |
| 210 set_name(ssid); | 207 set_name(ssid); |
| 211 network_event_log::AddEntry( | 208 NET_LOG_DEBUG("UpdateName", base::StringPrintf( |
| 212 kLogModule, "UpdateName", | 209 "%s: UTF8: %s", path().c_str(), name().c_str())); |
| 213 base::StringPrintf("%s: UTF8: %s", path().c_str(), name().c_str())); | |
| 214 } | 210 } |
| 215 return; | 211 return; |
| 216 } | 212 } |
| 217 | 213 |
| 218 // Detect encoding and convert to UTF-8. | 214 // Detect encoding and convert to UTF-8. |
| 219 std::string encoding; | 215 std::string encoding; |
| 220 if (!base::DetectEncoding(ssid, &encoding)) { | 216 if (!base::DetectEncoding(ssid, &encoding)) { |
| 221 // TODO(stevenjb): Test this. See comment in PropertyChanged() under | 217 // TODO(stevenjb): Test this. See comment in PropertyChanged() under |
| 222 // flimflam::kCountryProperty. | 218 // flimflam::kCountryProperty. |
| 223 encoding = country_code_; | 219 encoding = country_code_; |
| 224 } | 220 } |
| 225 if (!encoding.empty()) { | 221 if (!encoding.empty()) { |
| 226 std::string utf8_ssid; | 222 std::string utf8_ssid; |
| 227 if (base::ConvertToUtf8AndNormalize(ssid, encoding, &utf8_ssid)) { | 223 if (base::ConvertToUtf8AndNormalize(ssid, encoding, &utf8_ssid)) { |
| 228 set_name(utf8_ssid); | 224 set_name(utf8_ssid); |
| 229 network_event_log::AddEntry( | 225 NET_LOG_DEBUG("UpdateName", base::StringPrintf( |
| 230 kLogModule, "UpdateName", | 226 "%s: Encoding=%s: %s", path().c_str(), |
| 231 base::StringPrintf("%s: Encoding=%s: %s", path().c_str(), | 227 encoding.c_str(), name().c_str())); |
| 232 encoding.c_str(), name().c_str())); | |
| 233 return; | 228 return; |
| 234 } | 229 } |
| 235 } | 230 } |
| 236 | 231 |
| 237 // Unrecognized encoding. Only use raw bytes if name_ is empty. | 232 // Unrecognized encoding. Only use raw bytes if name_ is empty. |
| 238 if (name().empty()) | 233 if (name().empty()) |
| 239 set_name(ssid); | 234 set_name(ssid); |
| 240 network_event_log::AddEntry( | 235 NET_LOG_DEBUG("UpdateName", base::StringPrintf( |
| 241 kLogModule, "UpdateName", | 236 "%s: Unrecognized Encoding=%s: %s", path().c_str(), |
| 242 base::StringPrintf("%s: Unrecognized Encoding=%s: %s", path().c_str(), | 237 encoding.c_str(), name().c_str())); |
| 243 encoding.c_str(), name().c_str())); | |
| 244 } | 238 } |
| 245 | 239 |
| 246 // static | 240 // static |
| 247 bool NetworkState::StateIsConnected(const std::string& connection_state) { | 241 bool NetworkState::StateIsConnected(const std::string& connection_state) { |
| 248 return (connection_state == flimflam::kStateReady || | 242 return (connection_state == flimflam::kStateReady || |
| 249 connection_state == flimflam::kStateOnline || | 243 connection_state == flimflam::kStateOnline || |
| 250 connection_state == flimflam::kStatePortal); | 244 connection_state == flimflam::kStatePortal); |
| 251 } | 245 } |
| 252 | 246 |
| 253 // static | 247 // static |
| 254 bool NetworkState::StateIsConnecting(const std::string& connection_state) { | 248 bool NetworkState::StateIsConnecting(const std::string& connection_state) { |
| 255 return (connection_state == flimflam::kStateAssociation || | 249 return (connection_state == flimflam::kStateAssociation || |
| 256 connection_state == flimflam::kStateConfiguration || | 250 connection_state == flimflam::kStateConfiguration || |
| 257 connection_state == flimflam::kStateCarrier); | 251 connection_state == flimflam::kStateCarrier); |
| 258 } | 252 } |
| 259 | 253 |
| 260 // static | 254 // static |
| 261 std::string NetworkState::IPConfigProperty(const char* key) { | 255 std::string NetworkState::IPConfigProperty(const char* key) { |
| 262 return base::StringPrintf("%s.%s", shill::kIPConfigProperty, key); | 256 return base::StringPrintf("%s.%s", shill::kIPConfigProperty, key); |
| 263 } | 257 } |
| 264 | 258 |
| 265 } // namespace chromeos | 259 } // namespace chromeos |
| OLD | NEW |