| 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/device_state.h" | 5 #include "chromeos/network/device_state.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| 11 #include "chromeos/network/network_event_log.h" |
| 11 #include "third_party/cros_system_api/dbus/service_constants.h" | 12 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 12 | 13 |
| 13 namespace chromeos { | 14 namespace chromeos { |
| 14 | 15 |
| 15 DeviceState::DeviceState(const std::string& path) | 16 DeviceState::DeviceState(const std::string& path) |
| 16 : ManagedState(MANAGED_TYPE_DEVICE, path), | 17 : ManagedState(MANAGED_TYPE_DEVICE, path), |
| 17 allow_roaming_(false), | 18 allow_roaming_(false), |
| 18 provider_requires_roaming_(false), | 19 provider_requires_roaming_(false), |
| 19 support_network_scan_(false), | 20 support_network_scan_(false), |
| 20 scanning_(false), | 21 scanning_(false), |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 } else if (key == shill::kImeiProperty) { | 115 } else if (key == shill::kImeiProperty) { |
| 115 return GetStringValue(key, value, &imei_); | 116 return GetStringValue(key, value, &imei_); |
| 116 } else if (key == shill::kIccidProperty) { | 117 } else if (key == shill::kIccidProperty) { |
| 117 return GetStringValue(key, value, &iccid_); | 118 return GetStringValue(key, value, &iccid_); |
| 118 } else if (key == shill::kMdnProperty) { | 119 } else if (key == shill::kMdnProperty) { |
| 119 return GetStringValue(key, value, &mdn_); | 120 return GetStringValue(key, value, &mdn_); |
| 120 } else if (key == shill::kSIMPresentProperty) { | 121 } else if (key == shill::kSIMPresentProperty) { |
| 121 return GetBooleanValue(key, value, &sim_present_); | 122 return GetBooleanValue(key, value, &sim_present_); |
| 122 } else if (key == shill::kEapAuthenticationCompletedProperty) { | 123 } else if (key == shill::kEapAuthenticationCompletedProperty) { |
| 123 return GetBooleanValue(key, value, &eap_authentication_completed_); | 124 return GetBooleanValue(key, value, &eap_authentication_completed_); |
| 125 } else if (key == shill::kIPConfigsProperty) { |
| 126 // If kIPConfigsProperty changes, clear any previous ip_configs_. |
| 127 // ShillPropertyhandler will request the IPConfig objects which will trigger |
| 128 // calls to IPConfigPropertiesChanged. |
| 129 ip_configs_.Clear(); |
| 130 return false; // No actual state change. |
| 124 } | 131 } |
| 125 return false; | 132 return false; |
| 126 } | 133 } |
| 127 | 134 |
| 128 bool DeviceState::InitialPropertiesReceived( | 135 bool DeviceState::InitialPropertiesReceived( |
| 129 const base::DictionaryValue& properties) { | 136 const base::DictionaryValue& properties) { |
| 130 // Update UMA stats. | 137 // Update UMA stats. |
| 131 if (sim_present_) { | 138 if (sim_present_) { |
| 132 bool locked = !sim_lock_type_.empty(); | 139 bool locked = !sim_lock_type_.empty(); |
| 133 UMA_HISTOGRAM_BOOLEAN("Cellular.SIMLocked", locked); | 140 UMA_HISTOGRAM_BOOLEAN("Cellular.SIMLocked", locked); |
| 134 } | 141 } |
| 135 return false; | 142 return false; |
| 136 } | 143 } |
| 137 | 144 |
| 145 void DeviceState::IPConfigPropertiesChanged( |
| 146 const std::string& ip_config_path, |
| 147 const base::DictionaryValue& properties) { |
| 148 base::DictionaryValue* ip_config = NULL; |
| 149 if (ip_configs_.GetDictionaryWithoutPathExpansion( |
| 150 ip_config_path, &ip_config)) { |
| 151 NET_LOG_EVENT("IPConfig Updated: " + ip_config_path, path()); |
| 152 ip_config->Clear(); |
| 153 } else { |
| 154 NET_LOG_EVENT("IPConfig Added: " + ip_config_path, path()); |
| 155 ip_config = new base::DictionaryValue; |
| 156 ip_configs_.SetWithoutPathExpansion(ip_config_path, ip_config); |
| 157 } |
| 158 ip_config->MergeDictionary(&properties); |
| 159 } |
| 160 |
| 138 std::string DeviceState::GetFormattedMacAddress() const { | 161 std::string DeviceState::GetFormattedMacAddress() const { |
| 139 if (mac_address_.size() % 2 != 0) | 162 if (mac_address_.size() % 2 != 0) |
| 140 return mac_address_; | 163 return mac_address_; |
| 141 std::string result; | 164 std::string result; |
| 142 for (size_t i = 0; i < mac_address_.size(); ++i) { | 165 for (size_t i = 0; i < mac_address_.size(); ++i) { |
| 143 if ((i != 0) && (i % 2 == 0)) | 166 if ((i != 0) && (i % 2 == 0)) |
| 144 result.push_back(':'); | 167 result.push_back(':'); |
| 145 result.push_back(mac_address_[i]); | 168 result.push_back(mac_address_[i]); |
| 146 } | 169 } |
| 147 return result; | 170 return result; |
| 148 } | 171 } |
| 149 | 172 |
| 150 bool DeviceState::IsSimAbsent() const { | 173 bool DeviceState::IsSimAbsent() const { |
| 151 return technology_family_ == shill::kTechnologyFamilyGsm && !sim_present_; | 174 return technology_family_ == shill::kTechnologyFamilyGsm && !sim_present_; |
| 152 } | 175 } |
| 153 | 176 |
| 154 } // namespace chromeos | 177 } // namespace chromeos |
| OLD | NEW |