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

Side by Side Diff: content/browser/geolocation/wifi_data_provider_linux.cc

Issue 14081010: Cleanup: Remove unnecessary ".get()" from scoped_ptrs<>. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix some gtk issues Created 7 years, 8 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 // Provides wifi scan API binding for suitable for typical linux distributions. 5 // Provides wifi scan API binding for suitable for typical linux distributions.
6 // Currently, only the NetworkManager API is used, accessed via D-Bus (in turn 6 // Currently, only the NetworkManager API is used, accessed via D-Bus (in turn
7 // accessed via the GLib wrapper). 7 // accessed via the GLib wrapper).
8 8
9 #include "content/browser/geolocation/wifi_data_provider_linux.h" 9 #include "content/browser/geolocation/wifi_data_provider_linux.h"
10 10
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 device_path); 141 device_path);
142 142
143 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, "Get"); 143 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, "Get");
144 dbus::MessageWriter builder(&method_call); 144 dbus::MessageWriter builder(&method_call);
145 builder.AppendString("org.freedesktop.NetworkManager.Device"); 145 builder.AppendString("org.freedesktop.NetworkManager.Device");
146 builder.AppendString("DeviceType"); 146 builder.AppendString("DeviceType");
147 scoped_ptr<dbus::Response> response( 147 scoped_ptr<dbus::Response> response(
148 device_proxy->CallMethodAndBlock( 148 device_proxy->CallMethodAndBlock(
149 &method_call, 149 &method_call,
150 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); 150 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT));
151 if (!response.get()) { 151 if (!response) {
152 LOG(WARNING) << "Failed to get the device type for " 152 LOG(WARNING) << "Failed to get the device type for "
153 << device_path.value(); 153 << device_path.value();
154 continue; // Check the next device. 154 continue; // Check the next device.
155 } 155 }
156 dbus::MessageReader reader(response.get()); 156 dbus::MessageReader reader(response.get());
157 uint32 device_type = 0; 157 uint32 device_type = 0;
158 if (!reader.PopVariantOfUint32(&device_type)) { 158 if (!reader.PopVariantOfUint32(&device_type)) {
159 LOG(WARNING) << "Unexpected response for " << device_type << ": " 159 LOG(WARNING) << "Unexpected response for " << device_type << ": "
160 << response->ToString(); 160 << response->ToString();
161 continue; // Check the next device. 161 continue; // Check the next device.
(...skipping 11 matching lines...) Expand all
173 return success_count || fail_count == 0; 173 return success_count || fail_count == 0;
174 } 174 }
175 175
176 bool NetworkManagerWlanApi::GetAdapterDeviceList( 176 bool NetworkManagerWlanApi::GetAdapterDeviceList(
177 std::vector<dbus::ObjectPath>* device_paths) { 177 std::vector<dbus::ObjectPath>* device_paths) {
178 dbus::MethodCall method_call(kNetworkManagerInterface, "GetDevices"); 178 dbus::MethodCall method_call(kNetworkManagerInterface, "GetDevices");
179 scoped_ptr<dbus::Response> response( 179 scoped_ptr<dbus::Response> response(
180 network_manager_proxy_->CallMethodAndBlock( 180 network_manager_proxy_->CallMethodAndBlock(
181 &method_call, 181 &method_call,
182 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); 182 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT));
183 if (!response.get()) { 183 if (!response) {
184 LOG(WARNING) << "Failed to get the device list"; 184 LOG(WARNING) << "Failed to get the device list";
185 return false; 185 return false;
186 } 186 }
187 187
188 dbus::MessageReader reader(response.get()); 188 dbus::MessageReader reader(response.get());
189 if (!reader.PopArrayOfObjectPaths(device_paths)) { 189 if (!reader.PopArrayOfObjectPaths(device_paths)) {
190 LOG(WARNING) << "Unexpected response: " << response->ToString(); 190 LOG(WARNING) << "Unexpected response: " << response->ToString();
191 return false; 191 return false;
192 } 192 }
193 return true; 193 return true;
194 } 194 }
195 195
196 196
197 bool NetworkManagerWlanApi::GetAccessPointsForAdapter( 197 bool NetworkManagerWlanApi::GetAccessPointsForAdapter(
198 const dbus::ObjectPath& adapter_path, WifiData::AccessPointDataSet* data) { 198 const dbus::ObjectPath& adapter_path, WifiData::AccessPointDataSet* data) {
199 // Create a proxy object for this wifi adapter, and ask it to do a scan 199 // Create a proxy object for this wifi adapter, and ask it to do a scan
200 // (or at least, dump its scan results). 200 // (or at least, dump its scan results).
201 dbus::ObjectProxy* device_proxy = 201 dbus::ObjectProxy* device_proxy =
202 system_bus_->GetObjectProxy(kNetworkManagerServiceName, 202 system_bus_->GetObjectProxy(kNetworkManagerServiceName,
203 adapter_path); 203 adapter_path);
204 dbus::MethodCall method_call( 204 dbus::MethodCall method_call(
205 "org.freedesktop.NetworkManager.Device.Wireless", 205 "org.freedesktop.NetworkManager.Device.Wireless",
206 "GetAccessPoints"); 206 "GetAccessPoints");
207 scoped_ptr<dbus::Response> response( 207 scoped_ptr<dbus::Response> response(
208 device_proxy->CallMethodAndBlock( 208 device_proxy->CallMethodAndBlock(
209 &method_call, 209 &method_call,
210 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT)); 210 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT));
211 if (!response.get()) { 211 if (!response) {
212 LOG(WARNING) << "Failed to get access points data for " 212 LOG(WARNING) << "Failed to get access points data for "
213 << adapter_path.value(); 213 << adapter_path.value();
214 return false; 214 return false;
215 } 215 }
216 dbus::MessageReader reader(response.get()); 216 dbus::MessageReader reader(response.get());
217 std::vector<dbus::ObjectPath> access_point_paths; 217 std::vector<dbus::ObjectPath> access_point_paths;
218 if (!reader.PopArrayOfObjectPaths(&access_point_paths)) { 218 if (!reader.PopArrayOfObjectPaths(&access_point_paths)) {
219 LOG(WARNING) << "Unexpected response for " << adapter_path.value() << ": " 219 LOG(WARNING) << "Unexpected response for " << adapter_path.value() << ": "
220 << response->ToString(); 220 << response->ToString();
221 return false; 221 return false;
222 } 222 }
223 223
224 VLOG(1) << "Wireless adapter " << adapter_path.value() << " found " 224 VLOG(1) << "Wireless adapter " << adapter_path.value() << " found "
225 << access_point_paths.size() << " access points."; 225 << access_point_paths.size() << " access points.";
226 226
227 for (size_t i = 0; i < access_point_paths.size(); ++i) { 227 for (size_t i = 0; i < access_point_paths.size(); ++i) {
228 const dbus::ObjectPath& access_point_path = access_point_paths[i]; 228 const dbus::ObjectPath& access_point_path = access_point_paths[i];
229 VLOG(1) << "Checking access point: " << access_point_path.value(); 229 VLOG(1) << "Checking access point: " << access_point_path.value();
230 230
231 dbus::ObjectProxy* access_point_proxy = 231 dbus::ObjectProxy* access_point_proxy =
232 system_bus_->GetObjectProxy(kNetworkManagerServiceName, 232 system_bus_->GetObjectProxy(kNetworkManagerServiceName,
233 access_point_path); 233 access_point_path);
234 234
235 AccessPointData access_point_data; 235 AccessPointData access_point_data;
236 { 236 {
237 scoped_ptr<dbus::Response> response( 237 scoped_ptr<dbus::Response> response(
238 GetAccessPointProperty(access_point_proxy, "Ssid")); 238 GetAccessPointProperty(access_point_proxy, "Ssid"));
239 if (!response.get()) 239 if (!response)
240 continue; 240 continue;
241 // The response should contain a variant that contains an array of bytes. 241 // The response should contain a variant that contains an array of bytes.
242 dbus::MessageReader reader(response.get()); 242 dbus::MessageReader reader(response.get());
243 dbus::MessageReader variant_reader(response.get()); 243 dbus::MessageReader variant_reader(response.get());
244 if (!reader.PopVariant(&variant_reader)) { 244 if (!reader.PopVariant(&variant_reader)) {
245 LOG(WARNING) << "Unexpected response for " << access_point_path.value() 245 LOG(WARNING) << "Unexpected response for " << access_point_path.value()
246 << ": " << response->ToString(); 246 << ": " << response->ToString();
247 continue; 247 continue;
248 } 248 }
249 uint8* ssid_bytes = NULL; 249 uint8* ssid_bytes = NULL;
250 size_t ssid_length = 0; 250 size_t ssid_length = 0;
251 if (!variant_reader.PopArrayOfBytes(&ssid_bytes, &ssid_length)) { 251 if (!variant_reader.PopArrayOfBytes(&ssid_bytes, &ssid_length)) {
252 LOG(WARNING) << "Unexpected response for " << access_point_path.value() 252 LOG(WARNING) << "Unexpected response for " << access_point_path.value()
253 << ": " << response->ToString(); 253 << ": " << response->ToString();
254 continue; 254 continue;
255 } 255 }
256 std::string ssid(ssid_bytes, ssid_bytes + ssid_length); 256 std::string ssid(ssid_bytes, ssid_bytes + ssid_length);
257 access_point_data.ssid = UTF8ToUTF16(ssid); 257 access_point_data.ssid = UTF8ToUTF16(ssid);
258 } 258 }
259 259
260 { // Read the mac address 260 { // Read the mac address
261 scoped_ptr<dbus::Response> response( 261 scoped_ptr<dbus::Response> response(
262 GetAccessPointProperty(access_point_proxy, "HwAddress")); 262 GetAccessPointProperty(access_point_proxy, "HwAddress"));
263 if (!response.get()) 263 if (!response)
264 continue; 264 continue;
265 dbus::MessageReader reader(response.get()); 265 dbus::MessageReader reader(response.get());
266 std::string mac; 266 std::string mac;
267 if (!reader.PopVariantOfString(&mac)) { 267 if (!reader.PopVariantOfString(&mac)) {
268 LOG(WARNING) << "Unexpected response for " << access_point_path.value() 268 LOG(WARNING) << "Unexpected response for " << access_point_path.value()
269 << ": " << response->ToString(); 269 << ": " << response->ToString();
270 continue; 270 continue;
271 } 271 }
272 272
273 ReplaceSubstringsAfterOffset(&mac, 0U, ":", std::string()); 273 ReplaceSubstringsAfterOffset(&mac, 0U, ":", std::string());
274 std::vector<uint8> mac_bytes; 274 std::vector<uint8> mac_bytes;
275 if (!base::HexStringToBytes(mac, &mac_bytes) || mac_bytes.size() != 6) { 275 if (!base::HexStringToBytes(mac, &mac_bytes) || mac_bytes.size() != 6) {
276 LOG(WARNING) << "Can't parse mac address (found " << mac_bytes.size() 276 LOG(WARNING) << "Can't parse mac address (found " << mac_bytes.size()
277 << " bytes) so using raw string: " << mac; 277 << " bytes) so using raw string: " << mac;
278 access_point_data.mac_address = UTF8ToUTF16(mac); 278 access_point_data.mac_address = UTF8ToUTF16(mac);
279 } else { 279 } else {
280 access_point_data.mac_address = MacAddressAsString16(&mac_bytes[0]); 280 access_point_data.mac_address = MacAddressAsString16(&mac_bytes[0]);
281 } 281 }
282 } 282 }
283 283
284 { // Read signal strength. 284 { // Read signal strength.
285 scoped_ptr<dbus::Response> response( 285 scoped_ptr<dbus::Response> response(
286 GetAccessPointProperty(access_point_proxy, "Strength")); 286 GetAccessPointProperty(access_point_proxy, "Strength"));
287 if (!response.get()) 287 if (!response)
288 continue; 288 continue;
289 dbus::MessageReader reader(response.get()); 289 dbus::MessageReader reader(response.get());
290 uint8 strength = 0; 290 uint8 strength = 0;
291 if (!reader.PopVariantOfByte(&strength)) { 291 if (!reader.PopVariantOfByte(&strength)) {
292 LOG(WARNING) << "Unexpected response for " << access_point_path.value() 292 LOG(WARNING) << "Unexpected response for " << access_point_path.value()
293 << ": " << response->ToString(); 293 << ": " << response->ToString();
294 continue; 294 continue;
295 } 295 }
296 // Convert strength as a percentage into dBs. 296 // Convert strength as a percentage into dBs.
297 access_point_data.radio_signal_strength = -100 + strength / 2; 297 access_point_data.radio_signal_strength = -100 + strength / 2;
298 } 298 }
299 299
300 { // Read the channel 300 { // Read the channel
301 scoped_ptr<dbus::Response> response( 301 scoped_ptr<dbus::Response> response(
302 GetAccessPointProperty(access_point_proxy, "Frequency")); 302 GetAccessPointProperty(access_point_proxy, "Frequency"));
303 if (!response.get()) 303 if (!response)
304 continue; 304 continue;
305 dbus::MessageReader reader(response.get()); 305 dbus::MessageReader reader(response.get());
306 uint32 frequency = 0; 306 uint32 frequency = 0;
307 if (!reader.PopVariantOfUint32(&frequency)) { 307 if (!reader.PopVariantOfUint32(&frequency)) {
308 LOG(WARNING) << "Unexpected response for " << access_point_path.value() 308 LOG(WARNING) << "Unexpected response for " << access_point_path.value()
309 << ": " << response->ToString(); 309 << ": " << response->ToString();
310 continue; 310 continue;
311 } 311 }
312 312
313 // NetworkManager returns frequency in MHz. 313 // NetworkManager returns frequency in MHz.
(...skipping 14 matching lines...) Expand all
328 scoped_ptr<dbus::Response> NetworkManagerWlanApi::GetAccessPointProperty( 328 scoped_ptr<dbus::Response> NetworkManagerWlanApi::GetAccessPointProperty(
329 dbus::ObjectProxy* access_point_proxy, 329 dbus::ObjectProxy* access_point_proxy,
330 const std::string& property_name) { 330 const std::string& property_name) {
331 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, "Get"); 331 dbus::MethodCall method_call(DBUS_INTERFACE_PROPERTIES, "Get");
332 dbus::MessageWriter builder(&method_call); 332 dbus::MessageWriter builder(&method_call);
333 builder.AppendString("org.freedesktop.NetworkManager.AccessPoint"); 333 builder.AppendString("org.freedesktop.NetworkManager.AccessPoint");
334 builder.AppendString(property_name); 334 builder.AppendString(property_name);
335 scoped_ptr<dbus::Response> response = access_point_proxy->CallMethodAndBlock( 335 scoped_ptr<dbus::Response> response = access_point_proxy->CallMethodAndBlock(
336 &method_call, 336 &method_call,
337 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT); 337 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT);
338 if (!response.get()) { 338 if (!response) {
339 LOG(WARNING) << "Failed to get property for " << property_name; 339 LOG(WARNING) << "Failed to get property for " << property_name;
340 } 340 }
341 return response.Pass(); 341 return response.Pass();
342 } 342 }
343 343
344 } // namespace 344 } // namespace
345 345
346 // static 346 // static
347 template<> 347 template<>
348 WifiDataProviderImplBase* WifiDataProvider::DefaultFactoryFunction() { 348 WifiDataProviderImplBase* WifiDataProvider::DefaultFactoryFunction() {
(...skipping 23 matching lines...) Expand all
372 372
373 WifiDataProviderCommon::WlanApiInterface* 373 WifiDataProviderCommon::WlanApiInterface*
374 WifiDataProviderLinux::NewWlanApiForTesting(dbus::Bus* bus) { 374 WifiDataProviderLinux::NewWlanApiForTesting(dbus::Bus* bus) {
375 scoped_ptr<NetworkManagerWlanApi> wlan_api(new NetworkManagerWlanApi); 375 scoped_ptr<NetworkManagerWlanApi> wlan_api(new NetworkManagerWlanApi);
376 if (wlan_api->InitWithBus(bus)) 376 if (wlan_api->InitWithBus(bus))
377 return wlan_api.release(); 377 return wlan_api.release();
378 return NULL; 378 return NULL;
379 } 379 }
380 380
381 } // namespace content 381 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698