OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/policy_util.h" | 5 #include "chromeos/network/policy_util.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "chromeos/network/network_profile.h" | 8 #include "chromeos/network/network_profile.h" |
9 #include "chromeos/network/network_ui_data.h" | 9 #include "chromeos/network/network_ui_data.h" |
10 #include "chromeos/network/onc/onc_constants.h" | 10 #include "chromeos/network/onc/onc_constants.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
65 } | 65 } |
66 // Otherwise, the value is set and modified by the UI, thus we keep that | 66 // Otherwise, the value is set and modified by the UI, thus we keep that |
67 // value to overwrite whatever is stored in Shill. | 67 // value to overwrite whatever is stored in Shill. |
68 } | 68 } |
69 } | 69 } |
70 } | 70 } |
71 | 71 |
72 // Returns true if |policy| matches |actual_network|, which must be part of a | 72 // Returns true if |policy| matches |actual_network|, which must be part of a |
73 // ONC NetworkConfiguration. This should be the only such matching function | 73 // ONC NetworkConfiguration. This should be the only such matching function |
74 // within Chrome. Shill does such matching in several functions for network | 74 // within Chrome. Shill does such matching in several functions for network |
75 // identification. For compatibility, we currently should stick to Shill's | 75 // identification. For compatibility, we currently should stick to Shill's |
bartfab (slow)
2013/09/17 08:45:54
Just to make sure nothing is overlooked: I presume
pneubeck (no reviews)
2013/09/17 12:48:36
This function isn't directly Shill related because
| |
76 // matching behavior. | 76 // matching behavior. |
77 bool IsPolicyMatching(const base::DictionaryValue& policy, | 77 bool IsPolicyMatching(const base::DictionaryValue& policy, |
78 const base::DictionaryValue& actual_network) { | 78 const base::DictionaryValue& actual_network) { |
79 std::string policy_type; | 79 std::string policy_type; |
80 policy.GetStringWithoutPathExpansion(onc::network_config::kType, | 80 policy.GetStringWithoutPathExpansion(onc::network_config::kType, |
81 &policy_type); | 81 &policy_type); |
82 std::string network_type; | 82 std::string actual_network_type; |
83 actual_network.GetStringWithoutPathExpansion(onc::network_config::kType, | 83 actual_network.GetStringWithoutPathExpansion(onc::network_config::kType, |
84 &network_type); | 84 &actual_network_type); |
85 if (policy_type != network_type) | 85 if (policy_type != actual_network_type) |
86 return false; | 86 return false; |
87 | 87 |
88 if (network_type != onc::network_type::kWiFi) | 88 if (actual_network_type == onc::network_type::kEthernet) { |
89 return false; | 89 const base::DictionaryValue* policy_ethernet = NULL; |
bartfab (slow)
2013/09/17 08:45:54
Nit: #include "base/values.h"
pneubeck (no reviews)
2013/09/17 12:48:36
Done.
| |
90 policy.GetDictionaryWithoutPathExpansion(onc::network_config::kEthernet, | |
91 &policy_ethernet); | |
92 const base::DictionaryValue* actual_ethernet = NULL; | |
93 actual_network.GetDictionaryWithoutPathExpansion( | |
94 onc::network_config::kEthernet, &actual_ethernet); | |
95 if (!policy_ethernet || !actual_ethernet) | |
96 return false; | |
90 | 97 |
91 const base::DictionaryValue* policy_wifi = NULL; | 98 std::string policy_auth; |
92 policy.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, | 99 policy_ethernet->GetStringWithoutPathExpansion( |
93 &policy_wifi); | 100 onc::ethernet::kAuthentication, &policy_auth); |
94 const base::DictionaryValue* actual_wifi = NULL; | 101 std::string actual_auth; |
95 actual_network.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, | 102 actual_ethernet->GetStringWithoutPathExpansion( |
96 &actual_wifi); | 103 onc::ethernet::kAuthentication, &actual_auth); |
97 if (!policy_wifi || !actual_wifi) | 104 return (policy_auth == actual_auth); |
bartfab (slow)
2013/09/17 08:45:54
Nit: No need for brackets here.
pneubeck (no reviews)
2013/09/17 12:48:36
Done.
| |
98 return false; | 105 } else if (actual_network_type == onc::network_type::kWiFi) { |
106 const base::DictionaryValue* policy_wifi = NULL; | |
107 policy.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, | |
108 &policy_wifi); | |
109 const base::DictionaryValue* actual_wifi = NULL; | |
110 actual_network.GetDictionaryWithoutPathExpansion(onc::network_config::kWiFi, | |
111 &actual_wifi); | |
112 if (!policy_wifi || !actual_wifi) | |
113 return false; | |
99 | 114 |
100 std::string policy_ssid; | 115 std::string policy_ssid; |
101 policy_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &policy_ssid); | 116 policy_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &policy_ssid); |
102 std::string actual_ssid; | 117 std::string actual_ssid; |
103 actual_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &actual_ssid); | 118 actual_wifi->GetStringWithoutPathExpansion(onc::wifi::kSSID, &actual_ssid); |
104 return (policy_ssid == actual_ssid); | 119 return (policy_ssid == actual_ssid); |
120 } | |
121 return false; | |
105 } | 122 } |
106 | 123 |
107 } // namespace | 124 } // namespace |
108 | 125 |
109 scoped_ptr<base::DictionaryValue> CreateShillConfiguration( | 126 scoped_ptr<base::DictionaryValue> CreateShillConfiguration( |
110 const NetworkProfile& profile, | 127 const NetworkProfile& profile, |
111 const std::string& guid, | 128 const std::string& guid, |
112 const base::DictionaryValue* policy, | 129 const base::DictionaryValue* policy, |
113 const base::DictionaryValue* settings) { | 130 const base::DictionaryValue* settings) { |
114 scoped_ptr<base::DictionaryValue> effective; | 131 scoped_ptr<base::DictionaryValue> effective; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
192 it != policies.end(); ++it) { | 209 it != policies.end(); ++it) { |
193 if (IsPolicyMatching(*it->second, actual_network)) | 210 if (IsPolicyMatching(*it->second, actual_network)) |
194 return it->second; | 211 return it->second; |
195 } | 212 } |
196 return NULL; | 213 return NULL; |
197 } | 214 } |
198 | 215 |
199 } // namespace policy_util | 216 } // namespace policy_util |
200 | 217 |
201 } // namespace chromeos | 218 } // namespace chromeos |
OLD | NEW |