| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/api/networking_private/networking_private_linux.h" | 5 #include "extensions/browser/api/networking_private/networking_private_linux.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 | 72 |
| 73 // Simplified helper to parse the SSID from the GUID. | 73 // Simplified helper to parse the SSID from the GUID. |
| 74 bool GuidToSsid(const std::string& guid, std::string* ssid) { | 74 bool GuidToSsid(const std::string& guid, std::string* ssid) { |
| 75 std::string unused_1; | 75 std::string unused_1; |
| 76 std::string unused_2; | 76 std::string unused_2; |
| 77 return ParseNetworkGuid(guid, &unused_1, &unused_2, ssid); | 77 return ParseNetworkGuid(guid, &unused_1, &unused_2, ssid); |
| 78 } | 78 } |
| 79 | 79 |
| 80 // Iterates over the map cloning the contained networks to a | 80 // Iterates over the map cloning the contained networks to a |
| 81 // list then returns the list. | 81 // list then returns the list. |
| 82 scoped_ptr<base::ListValue> CopyNetworkMapToList( | 82 std::unique_ptr<base::ListValue> CopyNetworkMapToList( |
| 83 const NetworkingPrivateLinux::NetworkMap& network_map) { | 83 const NetworkingPrivateLinux::NetworkMap& network_map) { |
| 84 scoped_ptr<base::ListValue> network_list(new base::ListValue); | 84 std::unique_ptr<base::ListValue> network_list(new base::ListValue); |
| 85 | 85 |
| 86 for (const auto& network : network_map) { | 86 for (const auto& network : network_map) { |
| 87 network_list->Append(network.second->DeepCopy()); | 87 network_list->Append(network.second->DeepCopy()); |
| 88 } | 88 } |
| 89 | 89 |
| 90 return network_list; | 90 return network_list; |
| 91 } | 91 } |
| 92 | 92 |
| 93 // Constructs a network guid from its constituent parts. | 93 // Constructs a network guid from its constituent parts. |
| 94 std::string ConstructNetworkGuid(const dbus::ObjectPath& device_path, | 94 std::string ConstructNetworkGuid(const dbus::ObjectPath& device_path, |
| 95 const dbus::ObjectPath& access_point_path, | 95 const dbus::ObjectPath& access_point_path, |
| 96 const std::string& ssid) { | 96 const std::string& ssid) { |
| 97 return device_path.value() + "|" + access_point_path.value() + "|" + ssid; | 97 return device_path.value() + "|" + access_point_path.value() + "|" + ssid; |
| 98 } | 98 } |
| 99 | 99 |
| 100 // Logs that the method is not implemented and reports |kErrorNotSupported| | 100 // Logs that the method is not implemented and reports |kErrorNotSupported| |
| 101 // to the failure callback. | 101 // to the failure callback. |
| 102 void ReportNotSupported( | 102 void ReportNotSupported( |
| 103 const std::string& method_name, | 103 const std::string& method_name, |
| 104 const NetworkingPrivateDelegate::FailureCallback& failure_callback) { | 104 const NetworkingPrivateDelegate::FailureCallback& failure_callback) { |
| 105 LOG(WARNING) << method_name << " is not supported"; | 105 LOG(WARNING) << method_name << " is not supported"; |
| 106 failure_callback.Run(extensions::networking_private::kErrorNotSupported); | 106 failure_callback.Run(extensions::networking_private::kErrorNotSupported); |
| 107 } | 107 } |
| 108 | 108 |
| 109 // Fires the appropriate callback when the network connect operation succeeds | 109 // Fires the appropriate callback when the network connect operation succeeds |
| 110 // or fails. | 110 // or fails. |
| 111 void OnNetworkConnectOperationCompleted( | 111 void OnNetworkConnectOperationCompleted( |
| 112 scoped_ptr<std::string> error, | 112 std::unique_ptr<std::string> error, |
| 113 const NetworkingPrivateDelegate::VoidCallback& success_callback, | 113 const NetworkingPrivateDelegate::VoidCallback& success_callback, |
| 114 const NetworkingPrivateDelegate::FailureCallback& failure_callback) { | 114 const NetworkingPrivateDelegate::FailureCallback& failure_callback) { |
| 115 if (!error->empty()) { | 115 if (!error->empty()) { |
| 116 failure_callback.Run(*error); | 116 failure_callback.Run(*error); |
| 117 return; | 117 return; |
| 118 } | 118 } |
| 119 success_callback.Run(); | 119 success_callback.Run(); |
| 120 } | 120 } |
| 121 | 121 |
| 122 // Fires the appropriate callback when the network properties are returned | 122 // Fires the appropriate callback when the network properties are returned |
| 123 // from the |dbus_thread_|. | 123 // from the |dbus_thread_|. |
| 124 void GetCachedNetworkPropertiesCallback( | 124 void GetCachedNetworkPropertiesCallback( |
| 125 scoped_ptr<std::string> error, | 125 std::unique_ptr<std::string> error, |
| 126 scoped_ptr<base::DictionaryValue> properties, | 126 std::unique_ptr<base::DictionaryValue> properties, |
| 127 const NetworkingPrivateDelegate::DictionaryCallback& success_callback, | 127 const NetworkingPrivateDelegate::DictionaryCallback& success_callback, |
| 128 const NetworkingPrivateDelegate::FailureCallback& failure_callback) { | 128 const NetworkingPrivateDelegate::FailureCallback& failure_callback) { |
| 129 if (!error->empty()) { | 129 if (!error->empty()) { |
| 130 failure_callback.Run(*error); | 130 failure_callback.Run(*error); |
| 131 return; | 131 return; |
| 132 } | 132 } |
| 133 success_callback.Run(std::move(properties)); | 133 success_callback.Run(std::move(properties)); |
| 134 } | 134 } |
| 135 | 135 |
| 136 } // namespace | 136 } // namespace |
| 137 | 137 |
| 138 NetworkingPrivateLinux::NetworkingPrivateLinux( | 138 NetworkingPrivateLinux::NetworkingPrivateLinux( |
| 139 content::BrowserContext* browser_context, | 139 content::BrowserContext* browser_context, |
| 140 scoped_ptr<VerifyDelegate> verify_delegate) | 140 std::unique_ptr<VerifyDelegate> verify_delegate) |
| 141 : NetworkingPrivateDelegate(std::move(verify_delegate)), | 141 : NetworkingPrivateDelegate(std::move(verify_delegate)), |
| 142 browser_context_(browser_context), | 142 browser_context_(browser_context), |
| 143 dbus_thread_("Networking Private DBus"), | 143 dbus_thread_("Networking Private DBus"), |
| 144 network_manager_proxy_(NULL) { | 144 network_manager_proxy_(NULL) { |
| 145 base::Thread::Options thread_options(base::MessageLoop::Type::TYPE_IO, 0); | 145 base::Thread::Options thread_options(base::MessageLoop::Type::TYPE_IO, 0); |
| 146 | 146 |
| 147 dbus_thread_.StartWithOptions(thread_options); | 147 dbus_thread_.StartWithOptions(thread_options); |
| 148 dbus_thread_.task_runner()->PostTask( | 148 dbus_thread_.task_runner()->PostTask( |
| 149 FROM_HERE, | 149 FROM_HERE, |
| 150 base::Bind(&NetworkingPrivateLinux::Initialize, base::Unretained(this))); | 150 base::Bind(&NetworkingPrivateLinux::Initialize, base::Unretained(this))); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 ReportNotSupported("GetManagedProperties", failure_callback); | 204 ReportNotSupported("GetManagedProperties", failure_callback); |
| 205 } | 205 } |
| 206 | 206 |
| 207 void NetworkingPrivateLinux::GetState( | 207 void NetworkingPrivateLinux::GetState( |
| 208 const std::string& guid, | 208 const std::string& guid, |
| 209 const DictionaryCallback& success_callback, | 209 const DictionaryCallback& success_callback, |
| 210 const FailureCallback& failure_callback) { | 210 const FailureCallback& failure_callback) { |
| 211 if (!CheckNetworkManagerSupported(failure_callback)) | 211 if (!CheckNetworkManagerSupported(failure_callback)) |
| 212 return; | 212 return; |
| 213 | 213 |
| 214 scoped_ptr<std::string> error(new std::string); | 214 std::unique_ptr<std::string> error(new std::string); |
| 215 scoped_ptr<base::DictionaryValue> network_properties( | 215 std::unique_ptr<base::DictionaryValue> network_properties( |
| 216 new base::DictionaryValue); | 216 new base::DictionaryValue); |
| 217 | 217 |
| 218 // Runs GetCachedNetworkProperties on |dbus_thread|. | 218 // Runs GetCachedNetworkProperties on |dbus_thread|. |
| 219 dbus_thread_.task_runner()->PostTaskAndReply( | 219 dbus_thread_.task_runner()->PostTaskAndReply( |
| 220 FROM_HERE, base::Bind(&NetworkingPrivateLinux::GetCachedNetworkProperties, | 220 FROM_HERE, base::Bind(&NetworkingPrivateLinux::GetCachedNetworkProperties, |
| 221 base::Unretained(this), guid, | 221 base::Unretained(this), guid, |
| 222 base::Unretained(network_properties.get()), | 222 base::Unretained(network_properties.get()), |
| 223 base::Unretained(error.get())), | 223 base::Unretained(error.get())), |
| 224 base::Bind(&GetCachedNetworkPropertiesCallback, base::Passed(&error), | 224 base::Bind(&GetCachedNetworkPropertiesCallback, base::Passed(&error), |
| 225 base::Passed(&network_properties), success_callback, | 225 base::Passed(&network_properties), success_callback, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 239 } | 239 } |
| 240 | 240 |
| 241 NetworkMap::const_iterator network_iter = | 241 NetworkMap::const_iterator network_iter = |
| 242 network_map_->find(base::UTF8ToUTF16(ssid)); | 242 network_map_->find(base::UTF8ToUTF16(ssid)); |
| 243 if (network_iter == network_map_->end()) { | 243 if (network_iter == network_map_->end()) { |
| 244 *error = "Unknown network GUID"; | 244 *error = "Unknown network GUID"; |
| 245 return; | 245 return; |
| 246 } | 246 } |
| 247 | 247 |
| 248 // Make a copy of the properties out of the cached map. | 248 // Make a copy of the properties out of the cached map. |
| 249 scoped_ptr<base::DictionaryValue> temp_properties( | 249 std::unique_ptr<base::DictionaryValue> temp_properties( |
| 250 network_iter->second->DeepCopy()); | 250 network_iter->second->DeepCopy()); |
| 251 | 251 |
| 252 // Swap the new copy into the dictionary that is shared with the reply. | 252 // Swap the new copy into the dictionary that is shared with the reply. |
| 253 properties->Swap(temp_properties.get()); | 253 properties->Swap(temp_properties.get()); |
| 254 } | 254 } |
| 255 | 255 |
| 256 void NetworkingPrivateLinux::SetProperties( | 256 void NetworkingPrivateLinux::SetProperties( |
| 257 const std::string& guid, | 257 const std::string& guid, |
| 258 scoped_ptr<base::DictionaryValue> properties, | 258 std::unique_ptr<base::DictionaryValue> properties, |
| 259 const VoidCallback& success_callback, | 259 const VoidCallback& success_callback, |
| 260 const FailureCallback& failure_callback) { | 260 const FailureCallback& failure_callback) { |
| 261 ReportNotSupported("SetProperties", failure_callback); | 261 ReportNotSupported("SetProperties", failure_callback); |
| 262 } | 262 } |
| 263 | 263 |
| 264 void NetworkingPrivateLinux::CreateNetwork( | 264 void NetworkingPrivateLinux::CreateNetwork( |
| 265 bool shared, | 265 bool shared, |
| 266 scoped_ptr<base::DictionaryValue> properties, | 266 std::unique_ptr<base::DictionaryValue> properties, |
| 267 const StringCallback& success_callback, | 267 const StringCallback& success_callback, |
| 268 const FailureCallback& failure_callback) { | 268 const FailureCallback& failure_callback) { |
| 269 ReportNotSupported("CreateNetwork", failure_callback); | 269 ReportNotSupported("CreateNetwork", failure_callback); |
| 270 } | 270 } |
| 271 | 271 |
| 272 void NetworkingPrivateLinux::ForgetNetwork( | 272 void NetworkingPrivateLinux::ForgetNetwork( |
| 273 const std::string& guid, | 273 const std::string& guid, |
| 274 const VoidCallback& success_callback, | 274 const VoidCallback& success_callback, |
| 275 const FailureCallback& failure_callback) { | 275 const FailureCallback& failure_callback) { |
| 276 // TODO(zentaro): Implement for Linux. | 276 // TODO(zentaro): Implement for Linux. |
| 277 ReportNotSupported("ForgetNetwork", failure_callback); | 277 ReportNotSupported("ForgetNetwork", failure_callback); |
| 278 } | 278 } |
| 279 | 279 |
| 280 void NetworkingPrivateLinux::GetNetworks( | 280 void NetworkingPrivateLinux::GetNetworks( |
| 281 const std::string& network_type, | 281 const std::string& network_type, |
| 282 bool configured_only, | 282 bool configured_only, |
| 283 bool visible_only, | 283 bool visible_only, |
| 284 int limit, | 284 int limit, |
| 285 const NetworkListCallback& success_callback, | 285 const NetworkListCallback& success_callback, |
| 286 const FailureCallback& failure_callback) { | 286 const FailureCallback& failure_callback) { |
| 287 if (!CheckNetworkManagerSupported(failure_callback)) { | 287 if (!CheckNetworkManagerSupported(failure_callback)) { |
| 288 return; | 288 return; |
| 289 } | 289 } |
| 290 | 290 |
| 291 scoped_ptr<NetworkMap> network_map(new NetworkMap); | 291 std::unique_ptr<NetworkMap> network_map(new NetworkMap); |
| 292 | 292 |
| 293 if (!(network_type == ::onc::network_type::kWiFi || | 293 if (!(network_type == ::onc::network_type::kWiFi || |
| 294 network_type == ::onc::network_type::kWireless || | 294 network_type == ::onc::network_type::kWireless || |
| 295 network_type == ::onc::network_type::kAllTypes)) { | 295 network_type == ::onc::network_type::kAllTypes)) { |
| 296 // Only enumerating WiFi networks is supported on linux. | 296 // Only enumerating WiFi networks is supported on linux. |
| 297 ReportNotSupported("GetNetworks with network_type=" + network_type, | 297 ReportNotSupported("GetNetworks with network_type=" + network_type, |
| 298 failure_callback); | 298 failure_callback); |
| 299 return; | 299 return; |
| 300 } | 300 } |
| 301 | 301 |
| 302 // Runs GetAllWiFiAccessPoints on the dbus_thread and returns the | 302 // Runs GetAllWiFiAccessPoints on the dbus_thread and returns the |
| 303 // results back to OnAccessPointsFound where the callback is fired. | 303 // results back to OnAccessPointsFound where the callback is fired. |
| 304 dbus_thread_.task_runner()->PostTaskAndReply( | 304 dbus_thread_.task_runner()->PostTaskAndReply( |
| 305 FROM_HERE, | 305 FROM_HERE, |
| 306 base::Bind(&NetworkingPrivateLinux::GetAllWiFiAccessPoints, | 306 base::Bind(&NetworkingPrivateLinux::GetAllWiFiAccessPoints, |
| 307 base::Unretained(this), configured_only, visible_only, limit, | 307 base::Unretained(this), configured_only, visible_only, limit, |
| 308 base::Unretained(network_map.get())), | 308 base::Unretained(network_map.get())), |
| 309 base::Bind(&NetworkingPrivateLinux::OnAccessPointsFound, | 309 base::Bind(&NetworkingPrivateLinux::OnAccessPointsFound, |
| 310 base::Unretained(this), base::Passed(&network_map), | 310 base::Unretained(this), base::Passed(&network_map), |
| 311 success_callback, failure_callback)); | 311 success_callback, failure_callback)); |
| 312 } | 312 } |
| 313 | 313 |
| 314 bool NetworkingPrivateLinux::GetNetworksForScanRequest() { | 314 bool NetworkingPrivateLinux::GetNetworksForScanRequest() { |
| 315 if (!network_manager_proxy_) { | 315 if (!network_manager_proxy_) { |
| 316 return false; | 316 return false; |
| 317 } | 317 } |
| 318 | 318 |
| 319 scoped_ptr<NetworkMap> network_map(new NetworkMap); | 319 std::unique_ptr<NetworkMap> network_map(new NetworkMap); |
| 320 | 320 |
| 321 // Runs GetAllWiFiAccessPoints on the dbus_thread and returns the | 321 // Runs GetAllWiFiAccessPoints on the dbus_thread and returns the |
| 322 // results back to SendNetworkListChangedEvent to fire the event. No | 322 // results back to SendNetworkListChangedEvent to fire the event. No |
| 323 // callbacks are used in this case. | 323 // callbacks are used in this case. |
| 324 dbus_thread_.task_runner()->PostTaskAndReply( | 324 dbus_thread_.task_runner()->PostTaskAndReply( |
| 325 FROM_HERE, base::Bind(&NetworkingPrivateLinux::GetAllWiFiAccessPoints, | 325 FROM_HERE, base::Bind(&NetworkingPrivateLinux::GetAllWiFiAccessPoints, |
| 326 base::Unretained(this), false /* configured_only */, | 326 base::Unretained(this), false /* configured_only */, |
| 327 false /* visible_only */, 0 /* limit */, | 327 false /* visible_only */, 0 /* limit */, |
| 328 base::Unretained(network_map.get())), | 328 base::Unretained(network_map.get())), |
| 329 base::Bind(&NetworkingPrivateLinux::OnAccessPointsFoundViaScan, | 329 base::Bind(&NetworkingPrivateLinux::OnAccessPointsFoundViaScan, |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 // Close all the arrays and dicts. | 395 // Close all the arrays and dicts. |
| 396 wifi_dict_writer.CloseContainer(&variant_writer); | 396 wifi_dict_writer.CloseContainer(&variant_writer); |
| 397 wifi_array.CloseContainer(&wifi_dict_writer); | 397 wifi_array.CloseContainer(&wifi_dict_writer); |
| 398 dict_writer.CloseContainer(&wifi_array); | 398 dict_writer.CloseContainer(&wifi_array); |
| 399 array_writer.CloseContainer(&dict_writer); | 399 array_writer.CloseContainer(&dict_writer); |
| 400 builder.CloseContainer(&array_writer); | 400 builder.CloseContainer(&array_writer); |
| 401 | 401 |
| 402 builder.AppendObjectPath(device_path); | 402 builder.AppendObjectPath(device_path); |
| 403 builder.AppendObjectPath(access_point_path); | 403 builder.AppendObjectPath(access_point_path); |
| 404 | 404 |
| 405 scoped_ptr<dbus::Response> response( | 405 std::unique_ptr<dbus::Response> response( |
| 406 network_manager_proxy_->CallMethodAndBlock( | 406 network_manager_proxy_->CallMethodAndBlock( |
| 407 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 407 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 408 if (!response) { | 408 if (!response) { |
| 409 LOG(ERROR) << "Failed to add a new connection"; | 409 LOG(ERROR) << "Failed to add a new connection"; |
| 410 *error = "Failed to connect."; | 410 *error = "Failed to connect."; |
| 411 | 411 |
| 412 // Set the connection state to NotConnected in the map. | 412 // Set the connection state to NotConnected in the map. |
| 413 SetConnectionStateAndPostEvent(guid, ssid, | 413 SetConnectionStateAndPostEvent(guid, ssid, |
| 414 ::onc::connection_state::kNotConnected); | 414 ::onc::connection_state::kNotConnected); |
| 415 return; | 415 return; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 std::string access_point_path_str; | 454 std::string access_point_path_str; |
| 455 std::string ssid; | 455 std::string ssid; |
| 456 DVLOG(1) << "Disconnecting from network GUID " << guid; | 456 DVLOG(1) << "Disconnecting from network GUID " << guid; |
| 457 | 457 |
| 458 if (!ParseNetworkGuid(guid, &device_path_str, &access_point_path_str, | 458 if (!ParseNetworkGuid(guid, &device_path_str, &access_point_path_str, |
| 459 &ssid)) { | 459 &ssid)) { |
| 460 *error = "Invalid Network GUID format"; | 460 *error = "Invalid Network GUID format"; |
| 461 return; | 461 return; |
| 462 } | 462 } |
| 463 | 463 |
| 464 scoped_ptr<NetworkMap> network_map(new NetworkMap); | 464 std::unique_ptr<NetworkMap> network_map(new NetworkMap); |
| 465 GetAllWiFiAccessPoints(false /* configured_only */, false /* visible_only */, | 465 GetAllWiFiAccessPoints(false /* configured_only */, false /* visible_only */, |
| 466 0 /* limit */, network_map.get()); | 466 0 /* limit */, network_map.get()); |
| 467 | 467 |
| 468 NetworkMap::const_iterator network_iter = | 468 NetworkMap::const_iterator network_iter = |
| 469 network_map->find(base::UTF8ToUTF16(ssid)); | 469 network_map->find(base::UTF8ToUTF16(ssid)); |
| 470 if (network_iter == network_map->end()) { | 470 if (network_iter == network_map->end()) { |
| 471 // This network doesn't exist so there's nothing to do. | 471 // This network doesn't exist so there's nothing to do. |
| 472 return; | 472 return; |
| 473 } | 473 } |
| 474 | 474 |
| 475 std::string connection_state; | 475 std::string connection_state; |
| 476 network_iter->second->GetString(kAccessPointInfoConnectionState, | 476 network_iter->second->GetString(kAccessPointInfoConnectionState, |
| 477 &connection_state); | 477 &connection_state); |
| 478 if (connection_state == ::onc::connection_state::kNotConnected) { | 478 if (connection_state == ::onc::connection_state::kNotConnected) { |
| 479 // Already disconnected so nothing to do. | 479 // Already disconnected so nothing to do. |
| 480 return; | 480 return; |
| 481 } | 481 } |
| 482 | 482 |
| 483 // It's not disconnected so disconnect it. | 483 // It's not disconnected so disconnect it. |
| 484 dbus::ObjectProxy* device_proxy = | 484 dbus::ObjectProxy* device_proxy = |
| 485 dbus_->GetObjectProxy(networking_private::kNetworkManagerNamespace, | 485 dbus_->GetObjectProxy(networking_private::kNetworkManagerNamespace, |
| 486 dbus::ObjectPath(device_path_str)); | 486 dbus::ObjectPath(device_path_str)); |
| 487 dbus::MethodCall method_call( | 487 dbus::MethodCall method_call( |
| 488 networking_private::kNetworkManagerDeviceNamespace, | 488 networking_private::kNetworkManagerDeviceNamespace, |
| 489 networking_private::kNetworkManagerDisconnectMethod); | 489 networking_private::kNetworkManagerDisconnectMethod); |
| 490 scoped_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( | 490 std::unique_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( |
| 491 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 491 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 492 | 492 |
| 493 if (!response) { | 493 if (!response) { |
| 494 LOG(WARNING) << "Failed to disconnect network on device " | 494 LOG(WARNING) << "Failed to disconnect network on device " |
| 495 << device_path_str; | 495 << device_path_str; |
| 496 *error = "Failed to disconnect network"; | 496 *error = "Failed to disconnect network"; |
| 497 } | 497 } |
| 498 } | 498 } |
| 499 | 499 |
| 500 void NetworkingPrivateLinux::StartConnect( | 500 void NetworkingPrivateLinux::StartConnect( |
| 501 const std::string& guid, | 501 const std::string& guid, |
| 502 const VoidCallback& success_callback, | 502 const VoidCallback& success_callback, |
| 503 const FailureCallback& failure_callback) { | 503 const FailureCallback& failure_callback) { |
| 504 if (!CheckNetworkManagerSupported(failure_callback)) | 504 if (!CheckNetworkManagerSupported(failure_callback)) |
| 505 return; | 505 return; |
| 506 | 506 |
| 507 scoped_ptr<std::string> error(new std::string); | 507 std::unique_ptr<std::string> error(new std::string); |
| 508 | 508 |
| 509 // Runs ConnectToNetwork on |dbus_thread|. | 509 // Runs ConnectToNetwork on |dbus_thread|. |
| 510 dbus_thread_.task_runner()->PostTaskAndReply( | 510 dbus_thread_.task_runner()->PostTaskAndReply( |
| 511 FROM_HERE, | 511 FROM_HERE, |
| 512 base::Bind(&NetworkingPrivateLinux::ConnectToNetwork, | 512 base::Bind(&NetworkingPrivateLinux::ConnectToNetwork, |
| 513 base::Unretained(this), guid, base::Unretained(error.get())), | 513 base::Unretained(this), guid, base::Unretained(error.get())), |
| 514 base::Bind(&OnNetworkConnectOperationCompleted, base::Passed(&error), | 514 base::Bind(&OnNetworkConnectOperationCompleted, base::Passed(&error), |
| 515 success_callback, failure_callback)); | 515 success_callback, failure_callback)); |
| 516 } | 516 } |
| 517 | 517 |
| 518 void NetworkingPrivateLinux::StartDisconnect( | 518 void NetworkingPrivateLinux::StartDisconnect( |
| 519 const std::string& guid, | 519 const std::string& guid, |
| 520 const VoidCallback& success_callback, | 520 const VoidCallback& success_callback, |
| 521 const FailureCallback& failure_callback) { | 521 const FailureCallback& failure_callback) { |
| 522 if (!CheckNetworkManagerSupported(failure_callback)) | 522 if (!CheckNetworkManagerSupported(failure_callback)) |
| 523 return; | 523 return; |
| 524 | 524 |
| 525 scoped_ptr<std::string> error(new std::string); | 525 std::unique_ptr<std::string> error(new std::string); |
| 526 | 526 |
| 527 // Runs DisconnectFromNetwork on |dbus_thread|. | 527 // Runs DisconnectFromNetwork on |dbus_thread|. |
| 528 dbus_thread_.task_runner()->PostTaskAndReply( | 528 dbus_thread_.task_runner()->PostTaskAndReply( |
| 529 FROM_HERE, | 529 FROM_HERE, |
| 530 base::Bind(&NetworkingPrivateLinux::DisconnectFromNetwork, | 530 base::Bind(&NetworkingPrivateLinux::DisconnectFromNetwork, |
| 531 base::Unretained(this), guid, base::Unretained(error.get())), | 531 base::Unretained(this), guid, base::Unretained(error.get())), |
| 532 base::Bind(&OnNetworkConnectOperationCompleted, base::Passed(&error), | 532 base::Bind(&OnNetworkConnectOperationCompleted, base::Passed(&error), |
| 533 success_callback, failure_callback)); | 533 success_callback, failure_callback)); |
| 534 } | 534 } |
| 535 | 535 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 void NetworkingPrivateLinux::SetCellularSimState( | 567 void NetworkingPrivateLinux::SetCellularSimState( |
| 568 const std::string& guid, | 568 const std::string& guid, |
| 569 bool require_pin, | 569 bool require_pin, |
| 570 const std::string& current_pin, | 570 const std::string& current_pin, |
| 571 const std::string& new_pin, | 571 const std::string& new_pin, |
| 572 const VoidCallback& success_callback, | 572 const VoidCallback& success_callback, |
| 573 const FailureCallback& failure_callback) { | 573 const FailureCallback& failure_callback) { |
| 574 ReportNotSupported("SetCellularSimState", failure_callback); | 574 ReportNotSupported("SetCellularSimState", failure_callback); |
| 575 } | 575 } |
| 576 | 576 |
| 577 scoped_ptr<base::ListValue> NetworkingPrivateLinux::GetEnabledNetworkTypes() { | 577 std::unique_ptr<base::ListValue> |
| 578 scoped_ptr<base::ListValue> network_list(new base::ListValue); | 578 NetworkingPrivateLinux::GetEnabledNetworkTypes() { |
| 579 std::unique_ptr<base::ListValue> network_list(new base::ListValue); |
| 579 network_list->AppendString(::onc::network_type::kWiFi); | 580 network_list->AppendString(::onc::network_type::kWiFi); |
| 580 return network_list; | 581 return network_list; |
| 581 } | 582 } |
| 582 | 583 |
| 583 scoped_ptr<NetworkingPrivateDelegate::DeviceStateList> | 584 std::unique_ptr<NetworkingPrivateDelegate::DeviceStateList> |
| 584 NetworkingPrivateLinux::GetDeviceStateList() { | 585 NetworkingPrivateLinux::GetDeviceStateList() { |
| 585 scoped_ptr<DeviceStateList> device_state_list(new DeviceStateList); | 586 std::unique_ptr<DeviceStateList> device_state_list(new DeviceStateList); |
| 586 scoped_ptr<api::networking_private::DeviceStateProperties> properties( | 587 std::unique_ptr<api::networking_private::DeviceStateProperties> properties( |
| 587 new api::networking_private::DeviceStateProperties); | 588 new api::networking_private::DeviceStateProperties); |
| 588 properties->type = api::networking_private::NETWORK_TYPE_WIFI; | 589 properties->type = api::networking_private::NETWORK_TYPE_WIFI; |
| 589 properties->state = api::networking_private::DEVICE_STATE_TYPE_ENABLED; | 590 properties->state = api::networking_private::DEVICE_STATE_TYPE_ENABLED; |
| 590 device_state_list->push_back(std::move(properties)); | 591 device_state_list->push_back(std::move(properties)); |
| 591 return device_state_list; | 592 return device_state_list; |
| 592 } | 593 } |
| 593 | 594 |
| 594 bool NetworkingPrivateLinux::EnableNetworkType(const std::string& type) { | 595 bool NetworkingPrivateLinux::EnableNetworkType(const std::string& type) { |
| 595 return false; | 596 return false; |
| 596 } | 597 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 607 NetworkingPrivateDelegateObserver* observer) { | 608 NetworkingPrivateDelegateObserver* observer) { |
| 608 network_events_observers_.AddObserver(observer); | 609 network_events_observers_.AddObserver(observer); |
| 609 } | 610 } |
| 610 | 611 |
| 611 void NetworkingPrivateLinux::RemoveObserver( | 612 void NetworkingPrivateLinux::RemoveObserver( |
| 612 NetworkingPrivateDelegateObserver* observer) { | 613 NetworkingPrivateDelegateObserver* observer) { |
| 613 network_events_observers_.RemoveObserver(observer); | 614 network_events_observers_.RemoveObserver(observer); |
| 614 } | 615 } |
| 615 | 616 |
| 616 void NetworkingPrivateLinux::OnAccessPointsFound( | 617 void NetworkingPrivateLinux::OnAccessPointsFound( |
| 617 scoped_ptr<NetworkMap> network_map, | 618 std::unique_ptr<NetworkMap> network_map, |
| 618 const NetworkListCallback& success_callback, | 619 const NetworkListCallback& success_callback, |
| 619 const FailureCallback& failure_callback) { | 620 const FailureCallback& failure_callback) { |
| 620 scoped_ptr<base::ListValue> network_list = CopyNetworkMapToList(*network_map); | 621 std::unique_ptr<base::ListValue> network_list = |
| 622 CopyNetworkMapToList(*network_map); |
| 621 // Give ownership to the member variable. | 623 // Give ownership to the member variable. |
| 622 network_map_.swap(network_map); | 624 network_map_.swap(network_map); |
| 623 SendNetworkListChangedEvent(*network_list); | 625 SendNetworkListChangedEvent(*network_list); |
| 624 success_callback.Run(std::move(network_list)); | 626 success_callback.Run(std::move(network_list)); |
| 625 } | 627 } |
| 626 | 628 |
| 627 void NetworkingPrivateLinux::OnAccessPointsFoundViaScan( | 629 void NetworkingPrivateLinux::OnAccessPointsFoundViaScan( |
| 628 scoped_ptr<NetworkMap> network_map) { | 630 std::unique_ptr<NetworkMap> network_map) { |
| 629 scoped_ptr<base::ListValue> network_list = CopyNetworkMapToList(*network_map); | 631 std::unique_ptr<base::ListValue> network_list = |
| 632 CopyNetworkMapToList(*network_map); |
| 630 // Give ownership to the member variable. | 633 // Give ownership to the member variable. |
| 631 network_map_.swap(network_map); | 634 network_map_.swap(network_map); |
| 632 SendNetworkListChangedEvent(*network_list); | 635 SendNetworkListChangedEvent(*network_list); |
| 633 } | 636 } |
| 634 | 637 |
| 635 void NetworkingPrivateLinux::SendNetworkListChangedEvent( | 638 void NetworkingPrivateLinux::SendNetworkListChangedEvent( |
| 636 const base::ListValue& network_list) { | 639 const base::ListValue& network_list) { |
| 637 GuidList guidsForEventCallback; | 640 GuidList guidsForEventCallback; |
| 638 | 641 |
| 639 for (const auto& network : network_list) { | 642 for (const auto& network : network_list) { |
| 640 std::string guid; | 643 std::string guid; |
| 641 base::DictionaryValue* dict; | 644 base::DictionaryValue* dict; |
| 642 if (network->GetAsDictionary(&dict)) { | 645 if (network->GetAsDictionary(&dict)) { |
| 643 if (dict->GetString(kAccessPointInfoGuid, &guid)) { | 646 if (dict->GetString(kAccessPointInfoGuid, &guid)) { |
| 644 guidsForEventCallback.push_back(guid); | 647 guidsForEventCallback.push_back(guid); |
| 645 } | 648 } |
| 646 } | 649 } |
| 647 } | 650 } |
| 648 | 651 |
| 649 OnNetworkListChangedEventOnUIThread(guidsForEventCallback); | 652 OnNetworkListChangedEventOnUIThread(guidsForEventCallback); |
| 650 } | 653 } |
| 651 | 654 |
| 652 bool NetworkingPrivateLinux::GetNetworkDevices( | 655 bool NetworkingPrivateLinux::GetNetworkDevices( |
| 653 std::vector<dbus::ObjectPath>* device_paths) { | 656 std::vector<dbus::ObjectPath>* device_paths) { |
| 654 AssertOnDBusThread(); | 657 AssertOnDBusThread(); |
| 655 dbus::MethodCall method_call( | 658 dbus::MethodCall method_call( |
| 656 networking_private::kNetworkManagerNamespace, | 659 networking_private::kNetworkManagerNamespace, |
| 657 networking_private::kNetworkManagerGetDevicesMethod); | 660 networking_private::kNetworkManagerGetDevicesMethod); |
| 658 | 661 |
| 659 scoped_ptr<dbus::Response> device_response( | 662 std::unique_ptr<dbus::Response> device_response( |
| 660 network_manager_proxy_->CallMethodAndBlock( | 663 network_manager_proxy_->CallMethodAndBlock( |
| 661 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 664 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 662 | 665 |
| 663 if (!device_response) { | 666 if (!device_response) { |
| 664 return false; | 667 return false; |
| 665 } | 668 } |
| 666 | 669 |
| 667 dbus::MessageReader reader(device_response.get()); | 670 dbus::MessageReader reader(device_response.get()); |
| 668 if (!reader.PopArrayOfObjectPaths(device_paths)) { | 671 if (!reader.PopArrayOfObjectPaths(device_paths)) { |
| 669 LOG(WARNING) << "Unexpected response: " << device_response->ToString(); | 672 LOG(WARNING) << "Unexpected response: " << device_response->ToString(); |
| 670 return false; | 673 return false; |
| 671 } | 674 } |
| 672 | 675 |
| 673 return true; | 676 return true; |
| 674 } | 677 } |
| 675 | 678 |
| 676 NetworkingPrivateLinux::DeviceType NetworkingPrivateLinux::GetDeviceType( | 679 NetworkingPrivateLinux::DeviceType NetworkingPrivateLinux::GetDeviceType( |
| 677 const dbus::ObjectPath& device_path) { | 680 const dbus::ObjectPath& device_path) { |
| 678 AssertOnDBusThread(); | 681 AssertOnDBusThread(); |
| 679 dbus::ObjectProxy* device_proxy = dbus_->GetObjectProxy( | 682 dbus::ObjectProxy* device_proxy = dbus_->GetObjectProxy( |
| 680 networking_private::kNetworkManagerNamespace, device_path); | 683 networking_private::kNetworkManagerNamespace, device_path); |
| 681 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, | 684 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, |
| 682 networking_private::kNetworkManagerGetMethod); | 685 networking_private::kNetworkManagerGetMethod); |
| 683 dbus::MessageWriter builder(&method_call); | 686 dbus::MessageWriter builder(&method_call); |
| 684 builder.AppendString(networking_private::kNetworkManagerDeviceNamespace); | 687 builder.AppendString(networking_private::kNetworkManagerDeviceNamespace); |
| 685 builder.AppendString(networking_private::kNetworkManagerDeviceType); | 688 builder.AppendString(networking_private::kNetworkManagerDeviceType); |
| 686 | 689 |
| 687 scoped_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( | 690 std::unique_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( |
| 688 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 691 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 689 | 692 |
| 690 if (!response) { | 693 if (!response) { |
| 691 LOG(ERROR) << "Failed to get the device type for device " | 694 LOG(ERROR) << "Failed to get the device type for device " |
| 692 << device_path.value(); | 695 << device_path.value(); |
| 693 return NetworkingPrivateLinux::NM_DEVICE_TYPE_UNKNOWN; | 696 return NetworkingPrivateLinux::NM_DEVICE_TYPE_UNKNOWN; |
| 694 } | 697 } |
| 695 | 698 |
| 696 dbus::MessageReader reader(response.get()); | 699 dbus::MessageReader reader(response.get()); |
| 697 uint32_t device_type = 0; | 700 uint32_t device_type = 0; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 726 | 729 |
| 727 // Found a wlan adapter | 730 // Found a wlan adapter |
| 728 if (!AddAccessPointsFromDevice(device_path, network_map)) { | 731 if (!AddAccessPointsFromDevice(device_path, network_map)) { |
| 729 // Ignore devices we can't enumerate. | 732 // Ignore devices we can't enumerate. |
| 730 LOG(WARNING) << "Failed to add access points from device " | 733 LOG(WARNING) << "Failed to add access points from device " |
| 731 << device_path.value(); | 734 << device_path.value(); |
| 732 } | 735 } |
| 733 } | 736 } |
| 734 } | 737 } |
| 735 | 738 |
| 736 scoped_ptr<dbus::Response> NetworkingPrivateLinux::GetAccessPointProperty( | 739 std::unique_ptr<dbus::Response> NetworkingPrivateLinux::GetAccessPointProperty( |
| 737 dbus::ObjectProxy* access_point_proxy, | 740 dbus::ObjectProxy* access_point_proxy, |
| 738 const std::string& property_name) { | 741 const std::string& property_name) { |
| 739 AssertOnDBusThread(); | 742 AssertOnDBusThread(); |
| 740 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, | 743 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, |
| 741 networking_private::kNetworkManagerGetMethod); | 744 networking_private::kNetworkManagerGetMethod); |
| 742 dbus::MessageWriter builder(&method_call); | 745 dbus::MessageWriter builder(&method_call); |
| 743 builder.AppendString(networking_private::kNetworkManagerAccessPointNamespace); | 746 builder.AppendString(networking_private::kNetworkManagerAccessPointNamespace); |
| 744 builder.AppendString(property_name); | 747 builder.AppendString(property_name); |
| 745 scoped_ptr<dbus::Response> response = access_point_proxy->CallMethodAndBlock( | 748 std::unique_ptr<dbus::Response> response = |
| 746 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT); | 749 access_point_proxy->CallMethodAndBlock( |
| 750 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT); |
| 747 if (!response) { | 751 if (!response) { |
| 748 LOG(ERROR) << "Failed to get property for " << property_name; | 752 LOG(ERROR) << "Failed to get property for " << property_name; |
| 749 } | 753 } |
| 750 return response; | 754 return response; |
| 751 } | 755 } |
| 752 | 756 |
| 753 bool NetworkingPrivateLinux::GetAccessPointInfo( | 757 bool NetworkingPrivateLinux::GetAccessPointInfo( |
| 754 const dbus::ObjectPath& access_point_path, | 758 const dbus::ObjectPath& access_point_path, |
| 755 const scoped_ptr<base::DictionaryValue>& access_point_info) { | 759 const std::unique_ptr<base::DictionaryValue>& access_point_info) { |
| 756 AssertOnDBusThread(); | 760 AssertOnDBusThread(); |
| 757 dbus::ObjectProxy* access_point_proxy = dbus_->GetObjectProxy( | 761 dbus::ObjectProxy* access_point_proxy = dbus_->GetObjectProxy( |
| 758 networking_private::kNetworkManagerNamespace, access_point_path); | 762 networking_private::kNetworkManagerNamespace, access_point_path); |
| 759 | 763 |
| 760 // Read the SSID. The GUID is derived from the Ssid. | 764 // Read the SSID. The GUID is derived from the Ssid. |
| 761 { | 765 { |
| 762 scoped_ptr<dbus::Response> response(GetAccessPointProperty( | 766 std::unique_ptr<dbus::Response> response(GetAccessPointProperty( |
| 763 access_point_proxy, networking_private::kNetworkManagerSsidProperty)); | 767 access_point_proxy, networking_private::kNetworkManagerSsidProperty)); |
| 764 | 768 |
| 765 if (!response) { | 769 if (!response) { |
| 766 return false; | 770 return false; |
| 767 } | 771 } |
| 768 | 772 |
| 769 // The response should contain a variant that contains an array of bytes. | 773 // The response should contain a variant that contains an array of bytes. |
| 770 dbus::MessageReader reader(response.get()); | 774 dbus::MessageReader reader(response.get()); |
| 771 dbus::MessageReader variant_reader(response.get()); | 775 dbus::MessageReader variant_reader(response.get()); |
| 772 if (!reader.PopVariant(&variant_reader)) { | 776 if (!reader.PopVariant(&variant_reader)) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 784 } | 788 } |
| 785 | 789 |
| 786 std::string ssidUTF8(ssid_bytes, ssid_bytes + ssid_length); | 790 std::string ssidUTF8(ssid_bytes, ssid_bytes + ssid_length); |
| 787 base::string16 ssid = base::UTF8ToUTF16(ssidUTF8); | 791 base::string16 ssid = base::UTF8ToUTF16(ssidUTF8); |
| 788 | 792 |
| 789 access_point_info->SetString(kAccessPointInfoName, ssid); | 793 access_point_info->SetString(kAccessPointInfoName, ssid); |
| 790 } | 794 } |
| 791 | 795 |
| 792 // Read signal strength. | 796 // Read signal strength. |
| 793 { | 797 { |
| 794 scoped_ptr<dbus::Response> response(GetAccessPointProperty( | 798 std::unique_ptr<dbus::Response> response(GetAccessPointProperty( |
| 795 access_point_proxy, | 799 access_point_proxy, |
| 796 networking_private::kNetworkManagerStrengthProperty)); | 800 networking_private::kNetworkManagerStrengthProperty)); |
| 797 if (!response) { | 801 if (!response) { |
| 798 return false; | 802 return false; |
| 799 } | 803 } |
| 800 | 804 |
| 801 dbus::MessageReader reader(response.get()); | 805 dbus::MessageReader reader(response.get()); |
| 802 uint8_t strength = 0; | 806 uint8_t strength = 0; |
| 803 if (!reader.PopVariantOfByte(&strength)) { | 807 if (!reader.PopVariantOfByte(&strength)) { |
| 804 LOG(ERROR) << "Unexpected response for " << access_point_path.value() | 808 LOG(ERROR) << "Unexpected response for " << access_point_path.value() |
| 805 << ": " << response->ToString(); | 809 << ": " << response->ToString(); |
| 806 return false; | 810 return false; |
| 807 } | 811 } |
| 808 | 812 |
| 809 access_point_info->SetInteger(kAccessPointInfoWifiSignalStrengthDotted, | 813 access_point_info->SetInteger(kAccessPointInfoWifiSignalStrengthDotted, |
| 810 strength); | 814 strength); |
| 811 } | 815 } |
| 812 | 816 |
| 813 // Read the security type. This is from the WpaFlags and RsnFlags property | 817 // Read the security type. This is from the WpaFlags and RsnFlags property |
| 814 // which are of the same type and can be OR'd together to find all supported | 818 // which are of the same type and can be OR'd together to find all supported |
| 815 // security modes. | 819 // security modes. |
| 816 | 820 |
| 817 uint32_t wpa_security_flags = 0; | 821 uint32_t wpa_security_flags = 0; |
| 818 { | 822 { |
| 819 scoped_ptr<dbus::Response> response(GetAccessPointProperty( | 823 std::unique_ptr<dbus::Response> response(GetAccessPointProperty( |
| 820 access_point_proxy, | 824 access_point_proxy, |
| 821 networking_private::kNetworkManagerWpaFlagsProperty)); | 825 networking_private::kNetworkManagerWpaFlagsProperty)); |
| 822 if (!response) { | 826 if (!response) { |
| 823 return false; | 827 return false; |
| 824 } | 828 } |
| 825 | 829 |
| 826 dbus::MessageReader reader(response.get()); | 830 dbus::MessageReader reader(response.get()); |
| 827 | 831 |
| 828 if (!reader.PopVariantOfUint32(&wpa_security_flags)) { | 832 if (!reader.PopVariantOfUint32(&wpa_security_flags)) { |
| 829 LOG(ERROR) << "Unexpected response for " << access_point_path.value() | 833 LOG(ERROR) << "Unexpected response for " << access_point_path.value() |
| 830 << ": " << response->ToString(); | 834 << ": " << response->ToString(); |
| 831 return false; | 835 return false; |
| 832 } | 836 } |
| 833 } | 837 } |
| 834 | 838 |
| 835 uint32_t rsn_security_flags = 0; | 839 uint32_t rsn_security_flags = 0; |
| 836 { | 840 { |
| 837 scoped_ptr<dbus::Response> response(GetAccessPointProperty( | 841 std::unique_ptr<dbus::Response> response(GetAccessPointProperty( |
| 838 access_point_proxy, | 842 access_point_proxy, |
| 839 networking_private::kNetworkManagerRsnFlagsProperty)); | 843 networking_private::kNetworkManagerRsnFlagsProperty)); |
| 840 if (!response) { | 844 if (!response) { |
| 841 return false; | 845 return false; |
| 842 } | 846 } |
| 843 | 847 |
| 844 dbus::MessageReader reader(response.get()); | 848 dbus::MessageReader reader(response.get()); |
| 845 | 849 |
| 846 if (!reader.PopVariantOfUint32(&rsn_security_flags)) { | 850 if (!reader.PopVariantOfUint32(&rsn_security_flags)) { |
| 847 LOG(ERROR) << "Unexpected response for " << access_point_path.value() | 851 LOG(ERROR) << "Unexpected response for " << access_point_path.value() |
| (...skipping 17 matching lines...) Expand all Loading... |
| 865 dbus::ObjectPath connected_access_point; | 869 dbus::ObjectPath connected_access_point; |
| 866 if (!GetConnectedAccessPoint(device_path, &connected_access_point)) { | 870 if (!GetConnectedAccessPoint(device_path, &connected_access_point)) { |
| 867 return false; | 871 return false; |
| 868 } | 872 } |
| 869 | 873 |
| 870 dbus::ObjectProxy* device_proxy = dbus_->GetObjectProxy( | 874 dbus::ObjectProxy* device_proxy = dbus_->GetObjectProxy( |
| 871 networking_private::kNetworkManagerNamespace, device_path); | 875 networking_private::kNetworkManagerNamespace, device_path); |
| 872 dbus::MethodCall method_call( | 876 dbus::MethodCall method_call( |
| 873 networking_private::kNetworkManagerWirelessDeviceNamespace, | 877 networking_private::kNetworkManagerWirelessDeviceNamespace, |
| 874 networking_private::kNetworkManagerGetAccessPointsMethod); | 878 networking_private::kNetworkManagerGetAccessPointsMethod); |
| 875 scoped_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( | 879 std::unique_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( |
| 876 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 880 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 877 | 881 |
| 878 if (!response) { | 882 if (!response) { |
| 879 LOG(WARNING) << "Failed to get access points data for " | 883 LOG(WARNING) << "Failed to get access points data for " |
| 880 << device_path.value(); | 884 << device_path.value(); |
| 881 return false; | 885 return false; |
| 882 } | 886 } |
| 883 | 887 |
| 884 dbus::MessageReader reader(response.get()); | 888 dbus::MessageReader reader(response.get()); |
| 885 std::vector<dbus::ObjectPath> access_point_paths; | 889 std::vector<dbus::ObjectPath> access_point_paths; |
| 886 if (!reader.PopArrayOfObjectPaths(&access_point_paths)) { | 890 if (!reader.PopArrayOfObjectPaths(&access_point_paths)) { |
| 887 LOG(ERROR) << "Unexpected response for " << device_path.value() << ": " | 891 LOG(ERROR) << "Unexpected response for " << device_path.value() << ": " |
| 888 << response->ToString(); | 892 << response->ToString(); |
| 889 return false; | 893 return false; |
| 890 } | 894 } |
| 891 | 895 |
| 892 for (const auto& access_point_path : access_point_paths) { | 896 for (const auto& access_point_path : access_point_paths) { |
| 893 scoped_ptr<base::DictionaryValue> access_point(new base::DictionaryValue); | 897 std::unique_ptr<base::DictionaryValue> access_point( |
| 898 new base::DictionaryValue); |
| 894 | 899 |
| 895 if (GetAccessPointInfo(access_point_path, access_point)) { | 900 if (GetAccessPointInfo(access_point_path, access_point)) { |
| 896 std::string connection_state = | 901 std::string connection_state = |
| 897 (access_point_path == connected_access_point) | 902 (access_point_path == connected_access_point) |
| 898 ? ::onc::connection_state::kConnected | 903 ? ::onc::connection_state::kConnected |
| 899 : ::onc::connection_state::kNotConnected; | 904 : ::onc::connection_state::kNotConnected; |
| 900 | 905 |
| 901 access_point->SetString(kAccessPointInfoConnectionState, | 906 access_point->SetString(kAccessPointInfoConnectionState, |
| 902 connection_state); | 907 connection_state); |
| 903 std::string ssid; | 908 std::string ssid; |
| 904 access_point->GetString(kAccessPointInfoName, &ssid); | 909 access_point->GetString(kAccessPointInfoName, &ssid); |
| 905 | 910 |
| 906 std::string network_guid = | 911 std::string network_guid = |
| 907 ConstructNetworkGuid(device_path, access_point_path, ssid); | 912 ConstructNetworkGuid(device_path, access_point_path, ssid); |
| 908 | 913 |
| 909 // Adds the network to the map. Since each SSID can actually have multiple | 914 // Adds the network to the map. Since each SSID can actually have multiple |
| 910 // access point paths, this consolidates them. If it is already | 915 // access point paths, this consolidates them. If it is already |
| 911 // in the map it updates the signal strength and GUID paths if this | 916 // in the map it updates the signal strength and GUID paths if this |
| 912 // network is stronger or the one that is connected. | 917 // network is stronger or the one that is connected. |
| 913 AddOrUpdateAccessPoint(network_map, network_guid, access_point); | 918 AddOrUpdateAccessPoint(network_map, network_guid, access_point); |
| 914 } | 919 } |
| 915 } | 920 } |
| 916 | 921 |
| 917 return true; | 922 return true; |
| 918 } | 923 } |
| 919 | 924 |
| 920 void NetworkingPrivateLinux::AddOrUpdateAccessPoint( | 925 void NetworkingPrivateLinux::AddOrUpdateAccessPoint( |
| 921 NetworkMap* network_map, | 926 NetworkMap* network_map, |
| 922 const std::string& network_guid, | 927 const std::string& network_guid, |
| 923 scoped_ptr<base::DictionaryValue>& access_point) { | 928 std::unique_ptr<base::DictionaryValue>& access_point) { |
| 924 base::string16 ssid; | 929 base::string16 ssid; |
| 925 std::string connection_state; | 930 std::string connection_state; |
| 926 int signal_strength; | 931 int signal_strength; |
| 927 | 932 |
| 928 access_point->GetString(kAccessPointInfoConnectionState, &connection_state); | 933 access_point->GetString(kAccessPointInfoConnectionState, &connection_state); |
| 929 access_point->GetInteger(kAccessPointInfoWifiSignalStrengthDotted, | 934 access_point->GetInteger(kAccessPointInfoWifiSignalStrengthDotted, |
| 930 &signal_strength); | 935 &signal_strength); |
| 931 access_point->GetString(kAccessPointInfoName, &ssid); | 936 access_point->GetString(kAccessPointInfoName, &ssid); |
| 932 access_point->SetString(kAccessPointInfoGuid, network_guid); | 937 access_point->SetString(kAccessPointInfoGuid, network_guid); |
| 933 | 938 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 985 bool NetworkingPrivateLinux::GetConnectedAccessPoint( | 990 bool NetworkingPrivateLinux::GetConnectedAccessPoint( |
| 986 dbus::ObjectPath device_path, | 991 dbus::ObjectPath device_path, |
| 987 dbus::ObjectPath* access_point_path) { | 992 dbus::ObjectPath* access_point_path) { |
| 988 AssertOnDBusThread(); | 993 AssertOnDBusThread(); |
| 989 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, | 994 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, |
| 990 networking_private::kNetworkManagerGetMethod); | 995 networking_private::kNetworkManagerGetMethod); |
| 991 dbus::MessageWriter builder(&method_call); | 996 dbus::MessageWriter builder(&method_call); |
| 992 builder.AppendString(networking_private::kNetworkManagerNamespace); | 997 builder.AppendString(networking_private::kNetworkManagerNamespace); |
| 993 builder.AppendString(networking_private::kNetworkManagerActiveConnections); | 998 builder.AppendString(networking_private::kNetworkManagerActiveConnections); |
| 994 | 999 |
| 995 scoped_ptr<dbus::Response> response( | 1000 std::unique_ptr<dbus::Response> response( |
| 996 network_manager_proxy_->CallMethodAndBlock( | 1001 network_manager_proxy_->CallMethodAndBlock( |
| 997 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 1002 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 998 | 1003 |
| 999 if (!response) { | 1004 if (!response) { |
| 1000 LOG(WARNING) << "Failed to get a list of active connections"; | 1005 LOG(WARNING) << "Failed to get a list of active connections"; |
| 1001 return false; | 1006 return false; |
| 1002 } | 1007 } |
| 1003 | 1008 |
| 1004 dbus::MessageReader reader(response.get()); | 1009 dbus::MessageReader reader(response.get()); |
| 1005 dbus::MessageReader variant_reader(response.get()); | 1010 dbus::MessageReader variant_reader(response.get()); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1043 return false; | 1048 return false; |
| 1044 } | 1049 } |
| 1045 | 1050 |
| 1046 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, | 1051 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, |
| 1047 networking_private::kNetworkManagerGetMethod); | 1052 networking_private::kNetworkManagerGetMethod); |
| 1048 dbus::MessageWriter builder(&method_call); | 1053 dbus::MessageWriter builder(&method_call); |
| 1049 builder.AppendString( | 1054 builder.AppendString( |
| 1050 networking_private::kNetworkManagerActiveConnectionNamespace); | 1055 networking_private::kNetworkManagerActiveConnectionNamespace); |
| 1051 builder.AppendString("Devices"); | 1056 builder.AppendString("Devices"); |
| 1052 | 1057 |
| 1053 scoped_ptr<dbus::Response> response(connection_proxy->CallMethodAndBlock( | 1058 std::unique_ptr<dbus::Response> response(connection_proxy->CallMethodAndBlock( |
| 1054 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 1059 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 1055 | 1060 |
| 1056 if (!response) { | 1061 if (!response) { |
| 1057 LOG(ERROR) << "Failed to get devices"; | 1062 LOG(ERROR) << "Failed to get devices"; |
| 1058 return false; | 1063 return false; |
| 1059 } | 1064 } |
| 1060 | 1065 |
| 1061 dbus::MessageReader reader(response.get()); | 1066 dbus::MessageReader reader(response.get()); |
| 1062 dbus::MessageReader variant_reader(response.get()); | 1067 dbus::MessageReader variant_reader(response.get()); |
| 1063 if (!reader.PopVariant(&variant_reader)) { | 1068 if (!reader.PopVariant(&variant_reader)) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1091 return false; | 1096 return false; |
| 1092 } | 1097 } |
| 1093 | 1098 |
| 1094 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, | 1099 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, |
| 1095 networking_private::kNetworkManagerGetMethod); | 1100 networking_private::kNetworkManagerGetMethod); |
| 1096 dbus::MessageWriter builder(&method_call); | 1101 dbus::MessageWriter builder(&method_call); |
| 1097 builder.AppendString( | 1102 builder.AppendString( |
| 1098 networking_private::kNetworkManagerActiveConnectionNamespace); | 1103 networking_private::kNetworkManagerActiveConnectionNamespace); |
| 1099 builder.AppendString(networking_private::kNetworkManagerSpecificObject); | 1104 builder.AppendString(networking_private::kNetworkManagerSpecificObject); |
| 1100 | 1105 |
| 1101 scoped_ptr<dbus::Response> response(connection_proxy->CallMethodAndBlock( | 1106 std::unique_ptr<dbus::Response> response(connection_proxy->CallMethodAndBlock( |
| 1102 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 1107 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 1103 | 1108 |
| 1104 if (!response) { | 1109 if (!response) { |
| 1105 LOG(WARNING) << "Failed to get access point from active connection"; | 1110 LOG(WARNING) << "Failed to get access point from active connection"; |
| 1106 return false; | 1111 return false; |
| 1107 } | 1112 } |
| 1108 | 1113 |
| 1109 dbus::MessageReader reader(response.get()); | 1114 dbus::MessageReader reader(response.get()); |
| 1110 dbus::MessageReader variant_reader(response.get()); | 1115 dbus::MessageReader variant_reader(response.get()); |
| 1111 if (!reader.PopVariant(&variant_reader)) { | 1116 if (!reader.PopVariant(&variant_reader)) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 ::onc::connection_state::kNotConnected); | 1157 ::onc::connection_state::kNotConnected); |
| 1153 } | 1158 } |
| 1154 } | 1159 } |
| 1155 } | 1160 } |
| 1156 } | 1161 } |
| 1157 | 1162 |
| 1158 // Set the status. | 1163 // Set the status. |
| 1159 network_iter->second->SetString(kAccessPointInfoConnectionState, | 1164 network_iter->second->SetString(kAccessPointInfoConnectionState, |
| 1160 connection_state); | 1165 connection_state); |
| 1161 | 1166 |
| 1162 scoped_ptr<GuidList> changed_networks(new GuidList()); | 1167 std::unique_ptr<GuidList> changed_networks(new GuidList()); |
| 1163 changed_networks->push_back(guid); | 1168 changed_networks->push_back(guid); |
| 1164 | 1169 |
| 1165 // Only add a second network if it exists and it is not the same as the | 1170 // Only add a second network if it exists and it is not the same as the |
| 1166 // network already being added to the list. | 1171 // network already being added to the list. |
| 1167 if (!connected_network_guid.empty() && connected_network_guid != guid) { | 1172 if (!connected_network_guid.empty() && connected_network_guid != guid) { |
| 1168 changed_networks->push_back(connected_network_guid); | 1173 changed_networks->push_back(connected_network_guid); |
| 1169 } | 1174 } |
| 1170 | 1175 |
| 1171 PostOnNetworksChangedToUIThread(std::move(changed_networks)); | 1176 PostOnNetworksChangedToUIThread(std::move(changed_networks)); |
| 1172 return true; | 1177 return true; |
| 1173 } | 1178 } |
| 1174 | 1179 |
| 1175 void NetworkingPrivateLinux::OnNetworksChangedEventOnUIThread( | 1180 void NetworkingPrivateLinux::OnNetworksChangedEventOnUIThread( |
| 1176 const GuidList& network_guids) { | 1181 const GuidList& network_guids) { |
| 1177 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 1182 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 1178 FOR_EACH_OBSERVER(NetworkingPrivateDelegateObserver, | 1183 FOR_EACH_OBSERVER(NetworkingPrivateDelegateObserver, |
| 1179 network_events_observers_, | 1184 network_events_observers_, |
| 1180 OnNetworksChangedEvent(network_guids)); | 1185 OnNetworksChangedEvent(network_guids)); |
| 1181 } | 1186 } |
| 1182 | 1187 |
| 1183 void NetworkingPrivateLinux::OnNetworkListChangedEventOnUIThread( | 1188 void NetworkingPrivateLinux::OnNetworkListChangedEventOnUIThread( |
| 1184 const GuidList& network_guids) { | 1189 const GuidList& network_guids) { |
| 1185 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 1190 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 1186 FOR_EACH_OBSERVER(NetworkingPrivateDelegateObserver, | 1191 FOR_EACH_OBSERVER(NetworkingPrivateDelegateObserver, |
| 1187 network_events_observers_, | 1192 network_events_observers_, |
| 1188 OnNetworkListChangedEvent(network_guids)); | 1193 OnNetworkListChangedEvent(network_guids)); |
| 1189 } | 1194 } |
| 1190 | 1195 |
| 1191 void NetworkingPrivateLinux::PostOnNetworksChangedToUIThread( | 1196 void NetworkingPrivateLinux::PostOnNetworksChangedToUIThread( |
| 1192 scoped_ptr<GuidList> guid_list) { | 1197 std::unique_ptr<GuidList> guid_list) { |
| 1193 AssertOnDBusThread(); | 1198 AssertOnDBusThread(); |
| 1194 | 1199 |
| 1195 content::BrowserThread::PostTask( | 1200 content::BrowserThread::PostTask( |
| 1196 content::BrowserThread::UI, FROM_HERE, | 1201 content::BrowserThread::UI, FROM_HERE, |
| 1197 base::Bind(&NetworkingPrivateLinux::OnNetworksChangedEventTask, | 1202 base::Bind(&NetworkingPrivateLinux::OnNetworksChangedEventTask, |
| 1198 base::Unretained(this), base::Passed(&guid_list))); | 1203 base::Unretained(this), base::Passed(&guid_list))); |
| 1199 } | 1204 } |
| 1200 | 1205 |
| 1201 void NetworkingPrivateLinux::OnNetworksChangedEventTask( | 1206 void NetworkingPrivateLinux::OnNetworksChangedEventTask( |
| 1202 scoped_ptr<GuidList> guid_list) { | 1207 std::unique_ptr<GuidList> guid_list) { |
| 1203 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 1208 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 1204 OnNetworksChangedEventOnUIThread(*guid_list); | 1209 OnNetworksChangedEventOnUIThread(*guid_list); |
| 1205 } | 1210 } |
| 1206 | 1211 |
| 1207 } // namespace extensions | 1212 } // namespace extensions |
| OLD | NEW |