Index: chromeos/network/policy_util.cc |
diff --git a/chromeos/network/policy_util.cc b/chromeos/network/policy_util.cc |
index 086a83adbaff2ea54ddd75eec8940ab777066f96..b8043a66e52236454043f71c44a2fe718796e62e 100644 |
--- a/chromeos/network/policy_util.cc |
+++ b/chromeos/network/policy_util.cc |
@@ -5,6 +5,7 @@ |
#include "chromeos/network/policy_util.h" |
#include "base/logging.h" |
+#include "base/values.h" |
#include "chromeos/network/network_profile.h" |
#include "chromeos/network/network_ui_data.h" |
#include "chromeos/network/onc/onc_constants.h" |
@@ -79,29 +80,46 @@ bool IsPolicyMatching(const base::DictionaryValue& policy, |
std::string policy_type; |
policy.GetStringWithoutPathExpansion(onc::network_config::kType, |
&policy_type); |
- std::string network_type; |
+ std::string actual_network_type; |
actual_network.GetStringWithoutPathExpansion(onc::network_config::kType, |
- &network_type); |
- if (policy_type != network_type) |
+ &actual_network_type); |
+ if (policy_type != actual_network_type) |
return false; |
- if (network_type != onc::network_type::kWiFi) |
- return false; |
- |
- const base::DictionaryValue* policy_wifi = NULL; |
- policy.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, |
- &policy_wifi); |
- const base::DictionaryValue* actual_wifi = NULL; |
- actual_network.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, |
- &actual_wifi); |
- if (!policy_wifi || !actual_wifi) |
- return false; |
- |
- std::string policy_ssid; |
- policy_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &policy_ssid); |
- std::string actual_ssid; |
- actual_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &actual_ssid); |
- return (policy_ssid == actual_ssid); |
+ if (actual_network_type == onc::network_type::kEthernet) { |
+ const base::DictionaryValue* policy_ethernet = NULL; |
+ policy.GetDictionaryWithoutPathExpansion(onc::network_config::kEthernet, |
+ &policy_ethernet); |
+ const base::DictionaryValue* actual_ethernet = NULL; |
+ actual_network.GetDictionaryWithoutPathExpansion( |
+ onc::network_config::kEthernet, &actual_ethernet); |
+ if (!policy_ethernet || !actual_ethernet) |
+ return false; |
+ |
+ std::string policy_auth; |
+ policy_ethernet->GetStringWithoutPathExpansion( |
+ onc::ethernet::kAuthentication, &policy_auth); |
+ std::string actual_auth; |
+ actual_ethernet->GetStringWithoutPathExpansion( |
+ onc::ethernet::kAuthentication, &actual_auth); |
+ return policy_auth == actual_auth; |
+ } else if (actual_network_type == onc::network_type::kWiFi) { |
+ const base::DictionaryValue* policy_wifi = NULL; |
+ policy.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, |
+ &policy_wifi); |
+ const base::DictionaryValue* actual_wifi = NULL; |
+ actual_network.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, |
+ &actual_wifi); |
+ if (!policy_wifi || !actual_wifi) |
+ return false; |
+ |
+ std::string policy_ssid; |
+ policy_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &policy_ssid); |
+ std::string actual_ssid; |
+ actual_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &actual_ssid); |
+ return (policy_ssid == actual_ssid); |
+ } |
+ return false; |
} |
} // namespace |