Index: chromeos/network/network_state.cc |
diff --git a/chromeos/network/network_state.cc b/chromeos/network/network_state.cc |
index ca0b7b65591bceaf393ecb405de3864c16c05c83..f0da62d64c1978945a6bb80d385d55838746b739 100644 |
--- a/chromeos/network/network_state.cc |
+++ b/chromeos/network/network_state.cc |
@@ -68,6 +68,33 @@ chromeos::NetworkUIData* CreateUIDataFromValue( |
return new chromeos::NetworkUIData(*ui_data_dict); |
} |
+bool IsCaCertNssSet(const base::DictionaryValue& properties) { |
+ std::string ca_cert_nss; |
+ if (properties.GetStringWithoutPathExpansion(flimflam::kEapCaCertNssProperty, |
+ &ca_cert_nss) && |
+ !ca_cert_nss.empty()) { |
+ return true; |
+ } |
+ |
+ const base::DictionaryValue* provider = NULL; |
+ properties.GetDictionaryWithoutPathExpansion(flimflam::kProviderProperty, |
+ &provider); |
+ if (!provider) |
+ return false; |
+ if (provider->GetStringWithoutPathExpansion( |
+ flimflam::kL2tpIpsecCaCertNssProperty, &ca_cert_nss) && |
+ !ca_cert_nss.empty()) { |
+ return true; |
+ } |
+ if (provider->GetStringWithoutPathExpansion( |
+ flimflam::kOpenVPNCaCertNSSProperty, &ca_cert_nss) && |
+ !ca_cert_nss.empty()) { |
+ return true; |
+ } |
+ |
+ return false; |
+} |
+ |
} // namespace |
namespace chromeos { |
@@ -82,7 +109,8 @@ NetworkState::NetworkState(const std::string& path) |
signal_strength_(0), |
connectable_(false), |
activate_over_non_cellular_networks_(false), |
- cellular_out_of_credits_(false) { |
+ cellular_out_of_credits_(false), |
+ has_ca_cert_nss_(false) { |
} |
NetworkState::~NetworkState() { |
@@ -191,6 +219,9 @@ bool NetworkState::PropertyChanged(const std::string& key, |
bool NetworkState::InitialPropertiesReceived( |
const base::DictionaryValue& properties) { |
bool changed = UpdateName(properties); |
+ bool had_ca_cert_nss = has_ca_cert_nss_; |
+ has_ca_cert_nss_ = IsCaCertNssSet(properties); |
+ changed |= had_ca_cert_nss != has_ca_cert_nss_; |
return changed; |
} |