OLD | NEW |
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 "content/browser/geolocation/wifi_data_provider_linux.h" | 5 #include "content/browser/geolocation/wifi_data_provider_linux.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
| 9 #include <memory> |
| 10 |
9 #include "base/macros.h" | 11 #include "base/macros.h" |
10 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
11 #include "base/memory/scoped_ptr.h" | |
12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
13 #include "content/public/test/test_browser_thread_bundle.h" | 14 #include "content/public/test/test_browser_thread_bundle.h" |
14 #include "dbus/message.h" | 15 #include "dbus/message.h" |
15 #include "dbus/mock_bus.h" | 16 #include "dbus/mock_bus.h" |
16 #include "dbus/mock_object_proxy.h" | 17 #include "dbus/mock_object_proxy.h" |
17 #include "dbus/object_path.h" | 18 #include "dbus/object_path.h" |
18 #include "dbus/object_proxy.h" | 19 #include "dbus/object_proxy.h" |
19 #include "testing/gmock/include/gmock/gmock.h" | 20 #include "testing/gmock/include/gmock/gmock.h" |
20 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
21 | 22 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 | 107 |
107 protected: | 108 protected: |
108 // WifiDataProvider requires a task runner to be present. The |thread_bundle_| | 109 // WifiDataProvider requires a task runner to be present. The |thread_bundle_| |
109 // is defined here, as it should outlive |wifi_provider_linux_|. | 110 // is defined here, as it should outlive |wifi_provider_linux_|. |
110 TestBrowserThreadBundle thread_bundle_; | 111 TestBrowserThreadBundle thread_bundle_; |
111 scoped_refptr<dbus::MockBus> mock_bus_; | 112 scoped_refptr<dbus::MockBus> mock_bus_; |
112 scoped_refptr<dbus::MockObjectProxy> mock_network_manager_proxy_; | 113 scoped_refptr<dbus::MockObjectProxy> mock_network_manager_proxy_; |
113 scoped_refptr<dbus::MockObjectProxy> mock_access_point_proxy_; | 114 scoped_refptr<dbus::MockObjectProxy> mock_access_point_proxy_; |
114 scoped_refptr<dbus::MockObjectProxy> mock_device_proxy_; | 115 scoped_refptr<dbus::MockObjectProxy> mock_device_proxy_; |
115 scoped_refptr<WifiDataProviderLinux> wifi_provider_linux_; | 116 scoped_refptr<WifiDataProviderLinux> wifi_provider_linux_; |
116 scoped_ptr<WifiDataProviderCommon::WlanApiInterface> wlan_api_; | 117 std::unique_ptr<WifiDataProviderCommon::WlanApiInterface> wlan_api_; |
117 | 118 |
118 private: | 119 private: |
119 // Creates a response for |mock_network_manager_proxy_|. | 120 // Creates a response for |mock_network_manager_proxy_|. |
120 dbus::Response* CreateNetworkManagerProxyResponse( | 121 dbus::Response* CreateNetworkManagerProxyResponse( |
121 dbus::MethodCall* method_call, | 122 dbus::MethodCall* method_call, |
122 Unused) { | 123 Unused) { |
123 if (method_call->GetInterface() == "org.freedesktop.NetworkManager" && | 124 if (method_call->GetInterface() == "org.freedesktop.NetworkManager" && |
124 method_call->GetMember() == "GetDevices") { | 125 method_call->GetMember() == "GetDevices") { |
125 // The list of devices is asked. Return the object path. | 126 // The list of devices is asked. Return the object path. |
126 std::vector<dbus::ObjectPath> object_paths; | 127 std::vector<dbus::ObjectPath> object_paths; |
127 object_paths.push_back( | 128 object_paths.push_back( |
128 dbus::ObjectPath("/org/freedesktop/NetworkManager/Devices/0")); | 129 dbus::ObjectPath("/org/freedesktop/NetworkManager/Devices/0")); |
129 | 130 |
130 scoped_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); | 131 std::unique_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); |
131 dbus::MessageWriter writer(response.get()); | 132 dbus::MessageWriter writer(response.get()); |
132 writer.AppendArrayOfObjectPaths(object_paths); | 133 writer.AppendArrayOfObjectPaths(object_paths); |
133 return response.release(); | 134 return response.release(); |
134 } | 135 } |
135 | 136 |
136 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); | 137 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); |
137 return NULL; | 138 return NULL; |
138 } | 139 } |
139 | 140 |
140 // Creates a response for |mock_device_proxy_|. | 141 // Creates a response for |mock_device_proxy_|. |
141 dbus::Response* CreateDeviceProxyResponse(dbus::MethodCall* method_call, | 142 dbus::Response* CreateDeviceProxyResponse(dbus::MethodCall* method_call, |
142 Unused) { | 143 Unused) { |
143 if (method_call->GetInterface() == DBUS_INTERFACE_PROPERTIES && | 144 if (method_call->GetInterface() == DBUS_INTERFACE_PROPERTIES && |
144 method_call->GetMember() == "Get") { | 145 method_call->GetMember() == "Get") { |
145 dbus::MessageReader reader(method_call); | 146 dbus::MessageReader reader(method_call); |
146 std::string interface_name; | 147 std::string interface_name; |
147 std::string property_name; | 148 std::string property_name; |
148 if (reader.PopString(&interface_name) && | 149 if (reader.PopString(&interface_name) && |
149 reader.PopString(&property_name)) { | 150 reader.PopString(&property_name)) { |
150 // The device type is asked. Respond that the device type is wifi. | 151 // The device type is asked. Respond that the device type is wifi. |
151 scoped_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); | 152 std::unique_ptr<dbus::Response> response = |
| 153 dbus::Response::CreateEmpty(); |
152 dbus::MessageWriter writer(response.get()); | 154 dbus::MessageWriter writer(response.get()); |
153 // This matches NM_DEVICE_TYPE_WIFI in wifi_data_provider_linux.cc. | 155 // This matches NM_DEVICE_TYPE_WIFI in wifi_data_provider_linux.cc. |
154 const int kDeviceTypeWifi = 2; | 156 const int kDeviceTypeWifi = 2; |
155 writer.AppendVariantOfUint32(kDeviceTypeWifi); | 157 writer.AppendVariantOfUint32(kDeviceTypeWifi); |
156 return response.release(); | 158 return response.release(); |
157 } | 159 } |
158 } else if (method_call->GetInterface() == | 160 } else if (method_call->GetInterface() == |
159 "org.freedesktop.NetworkManager.Device.Wireless" && | 161 "org.freedesktop.NetworkManager.Device.Wireless" && |
160 method_call->GetMember() == "GetAccessPoints") { | 162 method_call->GetMember() == "GetAccessPoints") { |
161 // The list of access points is asked. Return the object path. | 163 // The list of access points is asked. Return the object path. |
162 scoped_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); | 164 std::unique_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); |
163 dbus::MessageWriter writer(response.get()); | 165 dbus::MessageWriter writer(response.get()); |
164 std::vector<dbus::ObjectPath> object_paths; | 166 std::vector<dbus::ObjectPath> object_paths; |
165 object_paths.push_back( | 167 object_paths.push_back( |
166 dbus::ObjectPath("/org/freedesktop/NetworkManager/AccessPoint/0")); | 168 dbus::ObjectPath("/org/freedesktop/NetworkManager/AccessPoint/0")); |
167 writer.AppendArrayOfObjectPaths(object_paths); | 169 writer.AppendArrayOfObjectPaths(object_paths); |
168 return response.release(); | 170 return response.release(); |
169 } | 171 } |
170 | 172 |
171 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); | 173 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); |
172 return NULL; | 174 return NULL; |
173 } | 175 } |
174 | 176 |
175 | 177 |
176 // Creates a response for |mock_access_point_proxy_|. | 178 // Creates a response for |mock_access_point_proxy_|. |
177 dbus::Response* CreateAccessPointProxyResponse(dbus::MethodCall* method_call, | 179 dbus::Response* CreateAccessPointProxyResponse(dbus::MethodCall* method_call, |
178 Unused) { | 180 Unused) { |
179 if (method_call->GetInterface() == DBUS_INTERFACE_PROPERTIES && | 181 if (method_call->GetInterface() == DBUS_INTERFACE_PROPERTIES && |
180 method_call->GetMember() == "Get") { | 182 method_call->GetMember() == "Get") { |
181 dbus::MessageReader reader(method_call); | 183 dbus::MessageReader reader(method_call); |
182 | 184 |
183 std::string interface_name; | 185 std::string interface_name; |
184 std::string property_name; | 186 std::string property_name; |
185 if (reader.PopString(&interface_name) && | 187 if (reader.PopString(&interface_name) && |
186 reader.PopString(&property_name)) { | 188 reader.PopString(&property_name)) { |
187 scoped_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); | 189 std::unique_ptr<dbus::Response> response = |
| 190 dbus::Response::CreateEmpty(); |
188 dbus::MessageWriter writer(response.get()); | 191 dbus::MessageWriter writer(response.get()); |
189 | 192 |
190 if (property_name == "Ssid") { | 193 if (property_name == "Ssid") { |
191 const uint8_t kSsid[] = {0x74, 0x65, 0x73, 0x74}; // "test" | 194 const uint8_t kSsid[] = {0x74, 0x65, 0x73, 0x74}; // "test" |
192 dbus::MessageWriter variant_writer(response.get()); | 195 dbus::MessageWriter variant_writer(response.get()); |
193 writer.OpenVariant("ay", &variant_writer); | 196 writer.OpenVariant("ay", &variant_writer); |
194 variant_writer.AppendArrayOfBytes(kSsid, arraysize(kSsid)); | 197 variant_writer.AppendArrayOfBytes(kSsid, arraysize(kSsid)); |
195 writer.CloseContainer(&variant_writer); | 198 writer.CloseContainer(&variant_writer); |
196 } else if (property_name == "HwAddress") { | 199 } else if (property_name == "HwAddress") { |
197 // This will be converted to "00-11-22-33-44-55". | 200 // This will be converted to "00-11-22-33-44-55". |
(...skipping 27 matching lines...) Expand all Loading... |
225 // Check the contents of the access point data. | 228 // Check the contents of the access point data. |
226 // The expected values come from CreateAccessPointProxyResponse() above. | 229 // The expected values come from CreateAccessPointProxyResponse() above. |
227 EXPECT_EQ("test", base::UTF16ToUTF8(access_point_data.ssid)); | 230 EXPECT_EQ("test", base::UTF16ToUTF8(access_point_data.ssid)); |
228 EXPECT_EQ("00-11-22-33-44-55", | 231 EXPECT_EQ("00-11-22-33-44-55", |
229 base::UTF16ToUTF8(access_point_data.mac_address)); | 232 base::UTF16ToUTF8(access_point_data.mac_address)); |
230 EXPECT_EQ(-50, access_point_data.radio_signal_strength); | 233 EXPECT_EQ(-50, access_point_data.radio_signal_strength); |
231 EXPECT_EQ(4, access_point_data.channel); | 234 EXPECT_EQ(4, access_point_data.channel); |
232 } | 235 } |
233 | 236 |
234 } // namespace content | 237 } // namespace content |
OLD | NEW |