Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: chromeos/network/network_configuration_handler.cc

Issue 21046008: Convert all connect code to use NetworkHandler instead of NetworkLibrary (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add NetworkConfigurationHandler::SetNetworkProfile Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_configuration_handler.h" 5 #include "chromeos/network/network_configuration_handler.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/format_macros.h" 11 #include "base/format_macros.h"
12 #include "base/json/json_writer.h"
12 #include "base/logging.h" 13 #include "base/logging.h"
13 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
14 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
15 #include "base/stl_util.h" 16 #include "base/stl_util.h"
16 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
17 #include "base/values.h" 18 #include "base/values.h"
18 #include "chromeos/dbus/dbus_thread_manager.h" 19 #include "chromeos/dbus/dbus_thread_manager.h"
19 #include "chromeos/dbus/shill_manager_client.h" 20 #include "chromeos/dbus/shill_manager_client.h"
20 #include "chromeos/dbus/shill_profile_client.h" 21 #include "chromeos/dbus/shill_profile_client.h"
21 #include "chromeos/dbus/shill_service_client.h" 22 #include "chromeos/dbus/shill_service_client.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 std::string name = NetworkState::GetNameFromProperties(properties); 60 std::string name = NetworkState::GetNameFromProperties(properties);
60 if (!name.empty()) { 61 if (!name.empty()) {
61 properties_copy->SetStringWithoutPathExpansion( 62 properties_copy->SetStringWithoutPathExpansion(
62 flimflam::kNameProperty, name); 63 flimflam::kNameProperty, name);
63 } 64 }
64 network_handler::GetPropertiesCallback( 65 network_handler::GetPropertiesCallback(
65 callback, error_callback, service_path, call_status, 66 callback, error_callback, service_path, call_status,
66 *properties_copy.get()); 67 *properties_copy.get());
67 } 68 }
68 69
70 void SetNetworkProfileErrorCallback(
71 const std::string& service_path,
72 const std::string& profile_path,
73 const network_handler::ErrorCallback& error_callback,
74 const std::string& dbus_error_name,
75 const std::string& dbus_error_message) {
76 network_handler::ShillErrorCallbackFunction(
77 "Config.SetNetworkProfile Failed: " + profile_path,
78 service_path, error_callback,
79 dbus_error_name, dbus_error_message);
80 }
81
82 bool IsPassphrase(const std::string& key) {
83 return key == flimflam::kEapPrivateKeyPasswordProperty ||
84 key == flimflam::kEapPasswordProperty ||
85 key == flimflam::kL2tpIpsecPasswordProperty ||
86 key == flimflam::kOpenVPNPasswordProperty ||
87 key == flimflam::kPassphraseProperty ||
88 key == flimflam::kOpenVPNOTPProperty ||
89 key == flimflam::kEapPrivateKeyProperty ||
90 key == flimflam::kEapPrivateKeyPasswordProperty ||
91 key == flimflam::kEapPinProperty ||
92 key == flimflam::kApnPasswordProperty;
93 }
94
69 } // namespace 95 } // namespace
70 96
71 // Helper class to request from Shill the profile entries associated with a 97 // Helper class to request from Shill the profile entries associated with a
72 // Service and delete the service from each profile. Triggers either 98 // Service and delete the service from each profile. Triggers either
73 // |callback| on success or |error_callback| on failure, and calls 99 // |callback| on success or |error_callback| on failure, and calls
74 // |handler|->ProfileEntryDeleterCompleted() on completion to delete itself. 100 // |handler|->ProfileEntryDeleterCompleted() on completion to delete itself.
75 class NetworkConfigurationHandler::ProfileEntryDeleter 101 class NetworkConfigurationHandler::ProfileEntryDeleter
76 : public base::SupportsWeakPtr<ProfileEntryDeleter> { 102 : public base::SupportsWeakPtr<ProfileEntryDeleter> {
77 public: 103 public:
78 ProfileEntryDeleter(NetworkConfigurationHandler* handler, 104 ProfileEntryDeleter(NetworkConfigurationHandler* handler,
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 dbus::ObjectPath(service_path), 207 dbus::ObjectPath(service_path),
182 base::Bind(&GetPropertiesCallback, 208 base::Bind(&GetPropertiesCallback,
183 callback, error_callback, service_path)); 209 callback, error_callback, service_path));
184 } 210 }
185 211
186 void NetworkConfigurationHandler::SetProperties( 212 void NetworkConfigurationHandler::SetProperties(
187 const std::string& service_path, 213 const std::string& service_path,
188 const base::DictionaryValue& properties, 214 const base::DictionaryValue& properties,
189 const base::Closure& callback, 215 const base::Closure& callback,
190 const network_handler::ErrorCallback& error_callback) { 216 const network_handler::ErrorCallback& error_callback) {
217 if (properties.empty()) {
218 if (!callback.is_null())
219 callback.Run();
220 return;
221 }
191 NET_LOG_USER("SetProperties", service_path); 222 NET_LOG_USER("SetProperties", service_path);
223 for (base::DictionaryValue::Iterator iter(properties);
pneubeck (no reviews) 2013/08/08 11:10:00 uff.. isn't this a bit too much logging? Shill ca
stevenjb 2013/08/08 19:00:56 Nobody runs Debug builds in practice. For M30 the
224 !iter.IsAtEnd(); iter.Advance()) {
225 std::string v = "******";
226 if (!IsPassphrase(iter.key()))
pneubeck (no reviews) 2013/08/08 11:10:00 I don't like this blacklisting at all. Yet another
stevenjb 2013/08/08 19:00:56 I'm not sure I agree. As you mentioned, we already
227 base::JSONWriter::Write(&iter.value(), &v);
228 NET_LOG_DEBUG("SetProperty", service_path + "." + iter.key() + "=" + v);
pneubeck (no reviews) 2013/08/08 11:10:00 you might even consider making NET_LOG_DEBUG (not
stevenjb 2013/08/08 19:00:56 Again, I don't think that is useful. The point of
229 }
192 DBusThreadManager::Get()->GetShillServiceClient()->SetProperties( 230 DBusThreadManager::Get()->GetShillServiceClient()->SetProperties(
193 dbus::ObjectPath(service_path), 231 dbus::ObjectPath(service_path),
194 properties, 232 properties,
195 base::Bind(&NetworkConfigurationHandler::SetPropertiesSuccessCallback, 233 base::Bind(&NetworkConfigurationHandler::SetPropertiesSuccessCallback,
196 AsWeakPtr(), service_path, callback), 234 AsWeakPtr(), service_path, callback),
197 base::Bind(&NetworkConfigurationHandler::SetPropertiesErrorCallback, 235 base::Bind(&NetworkConfigurationHandler::SetPropertiesErrorCallback,
198 AsWeakPtr(), service_path, error_callback)); 236 AsWeakPtr(), service_path, error_callback));
199 } 237 }
200 238
201 void NetworkConfigurationHandler::ClearProperties( 239 void NetworkConfigurationHandler::ClearProperties(
202 const std::string& service_path, 240 const std::string& service_path,
203 const std::vector<std::string>& names, 241 const std::vector<std::string>& names,
204 const base::Closure& callback, 242 const base::Closure& callback,
205 const network_handler::ErrorCallback& error_callback) { 243 const network_handler::ErrorCallback& error_callback) {
244 if (names.empty()) {
245 if (!callback.is_null())
246 callback.Run();
247 return;
248 }
206 NET_LOG_USER("ClearProperties", service_path); 249 NET_LOG_USER("ClearProperties", service_path);
250 for (std::vector<std::string>::const_iterator iter = names.begin();
251 iter != names.end(); ++iter) {
252 NET_LOG_DEBUG("ClearProperty", service_path + "." + *iter);
253 }
207 DBusThreadManager::Get()->GetShillServiceClient()->ClearProperties( 254 DBusThreadManager::Get()->GetShillServiceClient()->ClearProperties(
208 dbus::ObjectPath(service_path), 255 dbus::ObjectPath(service_path),
209 names, 256 names,
210 base::Bind(&NetworkConfigurationHandler::ClearPropertiesSuccessCallback, 257 base::Bind(&NetworkConfigurationHandler::ClearPropertiesSuccessCallback,
211 AsWeakPtr(), service_path, names, callback, error_callback), 258 AsWeakPtr(), service_path, names, callback, error_callback),
212 base::Bind(&NetworkConfigurationHandler::ClearPropertiesErrorCallback, 259 base::Bind(&NetworkConfigurationHandler::ClearPropertiesErrorCallback,
213 AsWeakPtr(), service_path, error_callback)); 260 AsWeakPtr(), service_path, error_callback));
214 } 261 }
215 262
216 void NetworkConfigurationHandler::CreateConfiguration( 263 void NetworkConfigurationHandler::CreateConfiguration(
217 const base::DictionaryValue& properties, 264 const base::DictionaryValue& properties,
218 const network_handler::StringResultCallback& callback, 265 const network_handler::StringResultCallback& callback,
219 const network_handler::ErrorCallback& error_callback) { 266 const network_handler::ErrorCallback& error_callback) {
220 ShillManagerClient* manager = 267 ShillManagerClient* manager =
221 DBusThreadManager::Get()->GetShillManagerClient(); 268 DBusThreadManager::Get()->GetShillManagerClient();
222
223 std::string type; 269 std::string type;
224 properties.GetStringWithoutPathExpansion(flimflam::kTypeProperty, &type); 270 properties.GetStringWithoutPathExpansion(flimflam::kTypeProperty, &type);
271
272 NET_LOG_USER("CreateConfiguration", type);
273 for (base::DictionaryValue::Iterator iter(properties);
pneubeck (no reviews) 2013/08/08 11:10:00 if _really_ necessary (as said above, I think it's
stevenjb 2013/08/08 19:00:56 Done.
274 !iter.IsAtEnd(); iter.Advance()) {
275 std::string v = "******";
276 if (!IsPassphrase(iter.key()))
277 base::JSONWriter::Write(&iter.value(), &v);
278 NET_LOG_DEBUG("Configure", type + "." + iter.key() + "=" + v);
279 }
280
225 // Shill supports ConfigureServiceForProfile only for network type WiFi. In 281 // Shill supports ConfigureServiceForProfile only for network type WiFi. In
226 // all other cases, we have to rely on GetService for now. This is 282 // all other cases, we have to rely on GetService for now. This is
227 // unproblematic for VPN (user profile only), but will lead to inconsistencies 283 // unproblematic for VPN (user profile only), but will lead to inconsistencies
228 // with WiMax, for example. 284 // with WiMax, for example.
229 if (type == flimflam::kTypeWifi) { 285 if (type == flimflam::kTypeWifi) {
230 std::string profile; 286 std::string profile;
231 properties.GetStringWithoutPathExpansion(flimflam::kProfileProperty, 287 properties.GetStringWithoutPathExpansion(flimflam::kProfileProperty,
232 &profile); 288 &profile);
233 manager->ConfigureServiceForProfile( 289 manager->ConfigureServiceForProfile(
234 dbus::ObjectPath(profile), 290 dbus::ObjectPath(profile),
(...skipping 23 matching lines...) Expand all
258 "RemoveConfiguration In-Progress", service_path, error_callback); 314 "RemoveConfiguration In-Progress", service_path, error_callback);
259 return; 315 return;
260 } 316 }
261 NET_LOG_USER("Remove Configuration", service_path); 317 NET_LOG_USER("Remove Configuration", service_path);
262 ProfileEntryDeleter* deleter = 318 ProfileEntryDeleter* deleter =
263 new ProfileEntryDeleter(this, service_path, callback, error_callback); 319 new ProfileEntryDeleter(this, service_path, callback, error_callback);
264 profile_entry_deleters_[service_path] = deleter; 320 profile_entry_deleters_[service_path] = deleter;
265 deleter->Run(); 321 deleter->Run();
266 } 322 }
267 323
324 void NetworkConfigurationHandler::SetNetworkProfile(
325 const std::string& service_path,
326 const std::string& profile_path,
327 const base::Closure& callback,
328 const network_handler::ErrorCallback& error_callback) {
329 NET_LOG_USER("SetNetworkProfile", service_path + ": " + profile_path);
330 base::StringValue profile_path_value(profile_path);
331 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty(
332 dbus::ObjectPath(service_path),
333 flimflam::kProfileProperty,
334 profile_path_value,
335 callback,
336 base::Bind(&SetNetworkProfileErrorCallback,
337 service_path, profile_path, error_callback));
338 }
339
268 // NetworkConfigurationHandler Private methods 340 // NetworkConfigurationHandler Private methods
269 341
270 NetworkConfigurationHandler::NetworkConfigurationHandler() 342 NetworkConfigurationHandler::NetworkConfigurationHandler()
271 : network_state_handler_(NULL) { 343 : network_state_handler_(NULL) {
272 } 344 }
273 345
274 NetworkConfigurationHandler::~NetworkConfigurationHandler() { 346 NetworkConfigurationHandler::~NetworkConfigurationHandler() {
275 STLDeleteContainerPairSecondPointers( 347 STLDeleteContainerPairSecondPointers(
276 profile_entry_deleters_.begin(), profile_entry_deleters_.end()); 348 profile_entry_deleters_.begin(), profile_entry_deleters_.end());
277 } 349 }
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 448
377 // static 449 // static
378 NetworkConfigurationHandler* NetworkConfigurationHandler::InitializeForTest( 450 NetworkConfigurationHandler* NetworkConfigurationHandler::InitializeForTest(
379 NetworkStateHandler* network_state_handler) { 451 NetworkStateHandler* network_state_handler) {
380 NetworkConfigurationHandler* handler = new NetworkConfigurationHandler(); 452 NetworkConfigurationHandler* handler = new NetworkConfigurationHandler();
381 handler->Init(network_state_handler); 453 handler->Init(network_state_handler);
382 return handler; 454 return handler;
383 } 455 }
384 456
385 } // namespace chromeos 457 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698