| 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> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 11 #include "base/callback.h" |
| 10 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
| 11 #include "base/strings/string16.h" | 13 #include "base/strings/string16.h" |
| 12 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 14 #include "base/threading/sequenced_worker_pool.h" | 16 #include "base/threading/sequenced_worker_pool.h" |
| 15 #include "components/onc/onc_constants.h" | 17 #include "components/onc/onc_constants.h" |
| 16 #include "content/public/browser/browser_context.h" | 18 #include "content/public/browser/browser_context.h" |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 dict_writer.OpenArray("{sv}", &wifi_array); | 383 dict_writer.OpenArray("{sv}", &wifi_array); |
| 382 | 384 |
| 383 dbus::MessageWriter wifi_dict_writer(&method_call); | 385 dbus::MessageWriter wifi_dict_writer(&method_call); |
| 384 wifi_array.OpenDictEntry(&wifi_dict_writer); | 386 wifi_array.OpenDictEntry(&wifi_dict_writer); |
| 385 wifi_dict_writer.AppendString( | 387 wifi_dict_writer.AppendString( |
| 386 networking_private::kNetworkManagerConnectionConfigSsid); | 388 networking_private::kNetworkManagerConnectionConfigSsid); |
| 387 | 389 |
| 388 dbus::MessageWriter variant_writer(&method_call); | 390 dbus::MessageWriter variant_writer(&method_call); |
| 389 wifi_dict_writer.OpenVariant("ay", &variant_writer); | 391 wifi_dict_writer.OpenVariant("ay", &variant_writer); |
| 390 variant_writer.AppendArrayOfBytes( | 392 variant_writer.AppendArrayOfBytes( |
| 391 reinterpret_cast<const uint8*>(ssid.c_str()), ssid.size()); | 393 reinterpret_cast<const uint8_t*>(ssid.c_str()), ssid.size()); |
| 392 | 394 |
| 393 // Close all the arrays and dicts. | 395 // Close all the arrays and dicts. |
| 394 wifi_dict_writer.CloseContainer(&variant_writer); | 396 wifi_dict_writer.CloseContainer(&variant_writer); |
| 395 wifi_array.CloseContainer(&wifi_dict_writer); | 397 wifi_array.CloseContainer(&wifi_dict_writer); |
| 396 dict_writer.CloseContainer(&wifi_array); | 398 dict_writer.CloseContainer(&wifi_array); |
| 397 array_writer.CloseContainer(&dict_writer); | 399 array_writer.CloseContainer(&dict_writer); |
| 398 builder.CloseContainer(&array_writer); | 400 builder.CloseContainer(&array_writer); |
| 399 | 401 |
| 400 builder.AppendObjectPath(device_path); | 402 builder.AppendObjectPath(device_path); |
| 401 builder.AppendObjectPath(access_point_path); | 403 builder.AppendObjectPath(access_point_path); |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 685 scoped_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( | 687 scoped_ptr<dbus::Response> response(device_proxy->CallMethodAndBlock( |
| 686 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); | 688 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 687 | 689 |
| 688 if (!response) { | 690 if (!response) { |
| 689 LOG(ERROR) << "Failed to get the device type for device " | 691 LOG(ERROR) << "Failed to get the device type for device " |
| 690 << device_path.value(); | 692 << device_path.value(); |
| 691 return NetworkingPrivateLinux::NM_DEVICE_TYPE_UNKNOWN; | 693 return NetworkingPrivateLinux::NM_DEVICE_TYPE_UNKNOWN; |
| 692 } | 694 } |
| 693 | 695 |
| 694 dbus::MessageReader reader(response.get()); | 696 dbus::MessageReader reader(response.get()); |
| 695 uint32 device_type = 0; | 697 uint32_t device_type = 0; |
| 696 if (!reader.PopVariantOfUint32(&device_type)) { | 698 if (!reader.PopVariantOfUint32(&device_type)) { |
| 697 LOG(ERROR) << "Unexpected response for device " << device_type << ": " | 699 LOG(ERROR) << "Unexpected response for device " << device_type << ": " |
| 698 << response->ToString(); | 700 << response->ToString(); |
| 699 return NM_DEVICE_TYPE_UNKNOWN; | 701 return NM_DEVICE_TYPE_UNKNOWN; |
| 700 } | 702 } |
| 701 | 703 |
| 702 return static_cast<NetworkingPrivateLinux::DeviceType>(device_type); | 704 return static_cast<NetworkingPrivateLinux::DeviceType>(device_type); |
| 703 } | 705 } |
| 704 | 706 |
| 705 void NetworkingPrivateLinux::GetAllWiFiAccessPoints(bool configured_only, | 707 void NetworkingPrivateLinux::GetAllWiFiAccessPoints(bool configured_only, |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 | 768 |
| 767 // The response should contain a variant that contains an array of bytes. | 769 // The response should contain a variant that contains an array of bytes. |
| 768 dbus::MessageReader reader(response.get()); | 770 dbus::MessageReader reader(response.get()); |
| 769 dbus::MessageReader variant_reader(response.get()); | 771 dbus::MessageReader variant_reader(response.get()); |
| 770 if (!reader.PopVariant(&variant_reader)) { | 772 if (!reader.PopVariant(&variant_reader)) { |
| 771 LOG(ERROR) << "Unexpected response for " << access_point_path.value() | 773 LOG(ERROR) << "Unexpected response for " << access_point_path.value() |
| 772 << ": " << response->ToString(); | 774 << ": " << response->ToString(); |
| 773 return false; | 775 return false; |
| 774 } | 776 } |
| 775 | 777 |
| 776 const uint8* ssid_bytes = NULL; | 778 const uint8_t* ssid_bytes = NULL; |
| 777 size_t ssid_length = 0; | 779 size_t ssid_length = 0; |
| 778 if (!variant_reader.PopArrayOfBytes(&ssid_bytes, &ssid_length)) { | 780 if (!variant_reader.PopArrayOfBytes(&ssid_bytes, &ssid_length)) { |
| 779 LOG(ERROR) << "Unexpected response for " << access_point_path.value() | 781 LOG(ERROR) << "Unexpected response for " << access_point_path.value() |
| 780 << ": " << response->ToString(); | 782 << ": " << response->ToString(); |
| 781 return false; | 783 return false; |
| 782 } | 784 } |
| 783 | 785 |
| 784 std::string ssidUTF8(ssid_bytes, ssid_bytes + ssid_length); | 786 std::string ssidUTF8(ssid_bytes, ssid_bytes + ssid_length); |
| 785 base::string16 ssid = base::UTF8ToUTF16(ssidUTF8); | 787 base::string16 ssid = base::UTF8ToUTF16(ssidUTF8); |
| 786 | 788 |
| 787 access_point_info->SetString(kAccessPointInfoName, ssid); | 789 access_point_info->SetString(kAccessPointInfoName, ssid); |
| 788 } | 790 } |
| 789 | 791 |
| 790 // Read signal strength. | 792 // Read signal strength. |
| 791 { | 793 { |
| 792 scoped_ptr<dbus::Response> response(GetAccessPointProperty( | 794 scoped_ptr<dbus::Response> response(GetAccessPointProperty( |
| 793 access_point_proxy, | 795 access_point_proxy, |
| 794 networking_private::kNetworkManagerStrengthProperty)); | 796 networking_private::kNetworkManagerStrengthProperty)); |
| 795 if (!response) { | 797 if (!response) { |
| 796 return false; | 798 return false; |
| 797 } | 799 } |
| 798 | 800 |
| 799 dbus::MessageReader reader(response.get()); | 801 dbus::MessageReader reader(response.get()); |
| 800 uint8 strength = 0; | 802 uint8_t strength = 0; |
| 801 if (!reader.PopVariantOfByte(&strength)) { | 803 if (!reader.PopVariantOfByte(&strength)) { |
| 802 LOG(ERROR) << "Unexpected response for " << access_point_path.value() | 804 LOG(ERROR) << "Unexpected response for " << access_point_path.value() |
| 803 << ": " << response->ToString(); | 805 << ": " << response->ToString(); |
| 804 return false; | 806 return false; |
| 805 } | 807 } |
| 806 | 808 |
| 807 access_point_info->SetInteger(kAccessPointInfoWifiSignalStrengthDotted, | 809 access_point_info->SetInteger(kAccessPointInfoWifiSignalStrengthDotted, |
| 808 strength); | 810 strength); |
| 809 } | 811 } |
| 810 | 812 |
| 811 // Read the security type. This is from the WpaFlags and RsnFlags property | 813 // Read the security type. This is from the WpaFlags and RsnFlags property |
| 812 // which are of the same type and can be OR'd together to find all supported | 814 // which are of the same type and can be OR'd together to find all supported |
| 813 // security modes. | 815 // security modes. |
| 814 | 816 |
| 815 uint32 wpa_security_flags = 0; | 817 uint32_t wpa_security_flags = 0; |
| 816 { | 818 { |
| 817 scoped_ptr<dbus::Response> response(GetAccessPointProperty( | 819 scoped_ptr<dbus::Response> response(GetAccessPointProperty( |
| 818 access_point_proxy, | 820 access_point_proxy, |
| 819 networking_private::kNetworkManagerWpaFlagsProperty)); | 821 networking_private::kNetworkManagerWpaFlagsProperty)); |
| 820 if (!response) { | 822 if (!response) { |
| 821 return false; | 823 return false; |
| 822 } | 824 } |
| 823 | 825 |
| 824 dbus::MessageReader reader(response.get()); | 826 dbus::MessageReader reader(response.get()); |
| 825 | 827 |
| 826 if (!reader.PopVariantOfUint32(&wpa_security_flags)) { | 828 if (!reader.PopVariantOfUint32(&wpa_security_flags)) { |
| 827 LOG(ERROR) << "Unexpected response for " << access_point_path.value() | 829 LOG(ERROR) << "Unexpected response for " << access_point_path.value() |
| 828 << ": " << response->ToString(); | 830 << ": " << response->ToString(); |
| 829 return false; | 831 return false; |
| 830 } | 832 } |
| 831 } | 833 } |
| 832 | 834 |
| 833 uint32 rsn_security_flags = 0; | 835 uint32_t rsn_security_flags = 0; |
| 834 { | 836 { |
| 835 scoped_ptr<dbus::Response> response(GetAccessPointProperty( | 837 scoped_ptr<dbus::Response> response(GetAccessPointProperty( |
| 836 access_point_proxy, | 838 access_point_proxy, |
| 837 networking_private::kNetworkManagerRsnFlagsProperty)); | 839 networking_private::kNetworkManagerRsnFlagsProperty)); |
| 838 if (!response) { | 840 if (!response) { |
| 839 return false; | 841 return false; |
| 840 } | 842 } |
| 841 | 843 |
| 842 dbus::MessageReader reader(response.get()); | 844 dbus::MessageReader reader(response.get()); |
| 843 | 845 |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 signal_strength > existing_signal_strength)) { | 956 signal_strength > existing_signal_strength)) { |
| 955 existing_access_point->SetString(kAccessPointInfoConnectionState, | 957 existing_access_point->SetString(kAccessPointInfoConnectionState, |
| 956 connection_state); | 958 connection_state); |
| 957 existing_access_point->SetInteger( | 959 existing_access_point->SetInteger( |
| 958 kAccessPointInfoWifiSignalStrengthDotted, signal_strength); | 960 kAccessPointInfoWifiSignalStrengthDotted, signal_strength); |
| 959 existing_access_point->SetString(kAccessPointInfoGuid, network_guid); | 961 existing_access_point->SetString(kAccessPointInfoGuid, network_guid); |
| 960 } | 962 } |
| 961 } | 963 } |
| 962 } | 964 } |
| 963 | 965 |
| 964 void NetworkingPrivateLinux::MapSecurityFlagsToString(uint32 security_flags, | 966 void NetworkingPrivateLinux::MapSecurityFlagsToString(uint32_t security_flags, |
| 965 std::string* security) { | 967 std::string* security) { |
| 966 // Valid values are None, WEP-PSK, WEP-8021X, WPA-PSK, WPA-EAP | 968 // Valid values are None, WEP-PSK, WEP-8021X, WPA-PSK, WPA-EAP |
| 967 if (security_flags == NetworkingPrivateLinux::NM_802_11_AP_SEC_NONE) { | 969 if (security_flags == NetworkingPrivateLinux::NM_802_11_AP_SEC_NONE) { |
| 968 *security = kAccessPointSecurityNone; | 970 *security = kAccessPointSecurityNone; |
| 969 } else if (security_flags & | 971 } else if (security_flags & |
| 970 NetworkingPrivateLinux::NM_802_11_AP_SEC_KEY_MGMT_PSK) { | 972 NetworkingPrivateLinux::NM_802_11_AP_SEC_KEY_MGMT_PSK) { |
| 971 *security = kAccessPointSecurityWpaPsk; | 973 *security = kAccessPointSecurityWpaPsk; |
| 972 } else if (security_flags & | 974 } else if (security_flags & |
| 973 NetworkingPrivateLinux::NM_802_11_AP_SEC_KEY_MGMT_802_1X) { | 975 NetworkingPrivateLinux::NM_802_11_AP_SEC_KEY_MGMT_802_1X) { |
| 974 *security = kAccessPointSecurity9021X; | 976 *security = kAccessPointSecurity9021X; |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1196 base::Unretained(this), base::Passed(&guid_list))); | 1198 base::Unretained(this), base::Passed(&guid_list))); |
| 1197 } | 1199 } |
| 1198 | 1200 |
| 1199 void NetworkingPrivateLinux::OnNetworksChangedEventTask( | 1201 void NetworkingPrivateLinux::OnNetworksChangedEventTask( |
| 1200 scoped_ptr<GuidList> guid_list) { | 1202 scoped_ptr<GuidList> guid_list) { |
| 1201 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 1203 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 1202 OnNetworksChangedEventOnUIThread(*guid_list); | 1204 OnNetworksChangedEventOnUIThread(*guid_list); |
| 1203 } | 1205 } |
| 1204 | 1206 |
| 1205 } // namespace extensions | 1207 } // namespace extensions |
| OLD | NEW |