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/strings/string_number_conversions.h" | 7 #include "base/strings/string_number_conversions.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "chromeos/device_event_log.h" | 9 #include "chromeos/device_event_log.h" |
10 #include "chromeos/network/network_profile_handler.h" | 10 #include "chromeos/network/network_profile_handler.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 std::vector<std::string>* result) { | 22 std::vector<std::string>* result) { |
23 for (size_t i = 0; i < string_list.GetSize(); ++i) { | 23 for (size_t i = 0; i < string_list.GetSize(); ++i) { |
24 std::string str; | 24 std::string str; |
25 if (!string_list.GetString(i, &str)) | 25 if (!string_list.GetString(i, &str)) |
26 return false; | 26 return false; |
27 result->push_back(str); | 27 result->push_back(str); |
28 } | 28 } |
29 return true; | 29 return true; |
30 } | 30 } |
31 | 31 |
32 bool IsCaCertNssSet(const base::DictionaryValue& properties) { | |
33 std::string ca_cert_nss; | |
34 if (properties.GetStringWithoutPathExpansion(shill::kEapCaCertNssProperty, | |
35 &ca_cert_nss) && | |
36 !ca_cert_nss.empty()) { | |
37 return true; | |
38 } | |
39 | |
40 const base::DictionaryValue* provider = NULL; | |
41 properties.GetDictionaryWithoutPathExpansion(shill::kProviderProperty, | |
42 &provider); | |
43 if (!provider) | |
44 return false; | |
45 if (provider->GetStringWithoutPathExpansion( | |
46 shill::kL2tpIpsecCaCertNssProperty, &ca_cert_nss) && | |
47 !ca_cert_nss.empty()) { | |
48 return true; | |
49 } | |
50 if (provider->GetStringWithoutPathExpansion( | |
51 shill::kOpenVPNCaCertNSSProperty, &ca_cert_nss) && | |
52 !ca_cert_nss.empty()) { | |
53 return true; | |
54 } | |
55 | |
56 return false; | |
57 } | |
58 | |
59 } // namespace | 32 } // namespace |
60 | 33 |
61 namespace chromeos { | 34 namespace chromeos { |
62 | 35 |
63 NetworkState::NetworkState(const std::string& path) | 36 NetworkState::NetworkState(const std::string& path) |
64 : ManagedState(MANAGED_TYPE_NETWORK, path), | 37 : ManagedState(MANAGED_TYPE_NETWORK, path), |
65 visible_(false), | 38 visible_(false), |
66 connectable_(false), | 39 connectable_(false), |
67 prefix_length_(0), | 40 prefix_length_(0), |
68 signal_strength_(0), | 41 signal_strength_(0), |
69 cellular_out_of_credits_(false), | 42 cellular_out_of_credits_(false) { |
70 has_ca_cert_nss_(false) { | |
71 } | 43 } |
72 | 44 |
73 NetworkState::~NetworkState() { | 45 NetworkState::~NetworkState() { |
74 } | 46 } |
75 | 47 |
76 bool NetworkState::PropertyChanged(const std::string& key, | 48 bool NetworkState::PropertyChanged(const std::string& key, |
77 const base::Value& value) { | 49 const base::Value& value) { |
78 // Keep care that these properties are the same as in |GetProperties|. | 50 // Keep care that these properties are the same as in |GetProperties|. |
79 if (ManagedStatePropertyChanged(key, value)) | 51 if (ManagedStatePropertyChanged(key, value)) |
80 return true; | 52 return true; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 } | 123 } |
152 return true; | 124 return true; |
153 } | 125 } |
154 return false; | 126 return false; |
155 } | 127 } |
156 | 128 |
157 bool NetworkState::InitialPropertiesReceived( | 129 bool NetworkState::InitialPropertiesReceived( |
158 const base::DictionaryValue& properties) { | 130 const base::DictionaryValue& properties) { |
159 NET_LOG(EVENT) << "InitialPropertiesReceived: " << path() << ": " << name() | 131 NET_LOG(EVENT) << "InitialPropertiesReceived: " << path() << ": " << name() |
160 << " State: " << connection_state_ << " Visible: " << visible_; | 132 << " State: " << connection_state_ << " Visible: " << visible_; |
161 bool changed = false; | |
162 if (!properties.HasKey(shill::kTypeProperty)) { | 133 if (!properties.HasKey(shill::kTypeProperty)) { |
163 NET_LOG(ERROR) << "NetworkState has no type: " | 134 NET_LOG(ERROR) << "NetworkState has no type: " |
164 << shill_property_util::GetNetworkIdFromProperties( | 135 << shill_property_util::GetNetworkIdFromProperties( |
165 properties); | 136 properties); |
166 return false; | 137 return false; |
167 } | 138 } |
168 // Ensure that the network has a valid name. | |
169 changed |= UpdateName(properties); | |
170 | |
171 // Set the has_ca_cert_nss_ property. | |
172 bool had_ca_cert_nss = has_ca_cert_nss_; | |
173 has_ca_cert_nss_ = IsCaCertNssSet(properties); | |
174 changed |= had_ca_cert_nss != has_ca_cert_nss_; | |
175 | 139 |
176 // By convention, all visible WiFi and WiMAX networks have a | 140 // By convention, all visible WiFi and WiMAX networks have a |
177 // SignalStrength > 0. | 141 // SignalStrength > 0. |
178 if ((type() == shill::kTypeWifi || type() == shill::kTypeWimax) && | 142 if ((type() == shill::kTypeWifi || type() == shill::kTypeWimax) && |
179 visible() && signal_strength_ <= 0) { | 143 visible() && signal_strength_ <= 0) { |
180 signal_strength_ = 1; | 144 signal_strength_ = 1; |
181 } | 145 } |
182 | 146 |
183 return changed; | 147 // Ensure that the network has a valid name. |
| 148 return UpdateName(properties); |
184 } | 149 } |
185 | 150 |
186 void NetworkState::GetStateProperties(base::DictionaryValue* dictionary) const { | 151 void NetworkState::GetStateProperties(base::DictionaryValue* dictionary) const { |
187 ManagedState::GetStateProperties(dictionary); | 152 ManagedState::GetStateProperties(dictionary); |
188 | 153 |
189 // Properties shared by all types. | 154 // Properties shared by all types. |
190 dictionary->SetStringWithoutPathExpansion(shill::kGuidProperty, guid()); | 155 dictionary->SetStringWithoutPathExpansion(shill::kGuidProperty, guid()); |
191 dictionary->SetStringWithoutPathExpansion(shill::kSecurityProperty, | 156 dictionary->SetStringWithoutPathExpansion(shill::kSecurityProperty, |
192 security()); | 157 security()); |
193 | 158 |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 connection_state == shill::kStateCarrier); | 319 connection_state == shill::kStateCarrier); |
355 } | 320 } |
356 | 321 |
357 // static | 322 // static |
358 bool NetworkState::ErrorIsValid(const std::string& error) { | 323 bool NetworkState::ErrorIsValid(const std::string& error) { |
359 // Shill uses "Unknown" to indicate an unset or cleared error state. | 324 // Shill uses "Unknown" to indicate an unset or cleared error state. |
360 return !error.empty() && error != kErrorUnknown; | 325 return !error.empty() && error != kErrorUnknown; |
361 } | 326 } |
362 | 327 |
363 } // namespace chromeos | 328 } // namespace chromeos |
OLD | NEW |