OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "device/bluetooth/bluetooth_adapter_chromeos.h" | 5 #include "device/bluetooth/bluetooth_adapter_chromeos.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
54 return; | 54 return; |
55 | 55 |
56 LOG(WARNING) << "Failed to unregister pairing agent: " | 56 LOG(WARNING) << "Failed to unregister pairing agent: " |
57 << error_name << ": " << error_message; | 57 << error_name << ": " << error_message; |
58 } | 58 } |
59 | 59 |
60 } // namespace | 60 } // namespace |
61 | 61 |
62 namespace device { | 62 namespace device { |
63 | 63 |
64 // static | 64 // static |
omoikane
2015/05/22 23:55:27
These "// static" comments are often a maintenance
Marie Janssen
2015/06/18 21:08:35
This "// static" is convention in Chromium code.
| |
65 base::WeakPtr<BluetoothAdapter> BluetoothAdapter::CreateAdapter( | 65 base::WeakPtr<BluetoothAdapter> BluetoothAdapter::CreateAdapter( |
66 const InitCallback& init_callback) { | 66 const InitCallback& init_callback) { |
67 return chromeos::BluetoothAdapterChromeOS::CreateAdapter(); | 67 return chromeos::BluetoothAdapterChromeOS::CreateAdapter(); |
68 } | 68 } |
69 | 69 |
70 } | 70 } |
omoikane
2015/05/22 23:55:27
End of namespace here should have "// namespace de
Marie Janssen
2015/06/18 21:08:35
Done.
| |
71 | 71 |
72 namespace chromeos { | 72 namespace chromeos { |
73 | 73 |
74 // static | 74 // static |
75 base::WeakPtr<BluetoothAdapter> BluetoothAdapterChromeOS::CreateAdapter() { | 75 base::WeakPtr<BluetoothAdapter> BluetoothAdapterChromeOS::CreateAdapter() { |
76 BluetoothAdapterChromeOS* adapter = new BluetoothAdapterChromeOS(); | 76 BluetoothAdapterChromeOS* adapter = new BluetoothAdapterChromeOS(); |
77 return adapter->weak_ptr_factory_.GetWeakPtr(); | 77 return adapter->weak_ptr_factory_.GetWeakPtr(); |
78 } | 78 } |
79 | 79 |
80 void BluetoothAdapterChromeOS::Shutdown() { | 80 void BluetoothAdapterChromeOS::Shutdown() { |
81 if (dbus_is_shutdown_) | 81 if (dbus_is_shutdown_) |
82 return; | 82 return; |
83 DCHECK(DBusThreadManager::IsInitialized()) | 83 DCHECK(DBusThreadManager::IsInitialized()) |
84 << "Call BluetoothAdapterFactory::Shutdown() before " | 84 << "Call BluetoothAdapterFactory::Shutdown() before " |
85 "DBusThreadManager::Shutdown()."; | 85 "DBusThreadManager::Shutdown()."; |
86 | 86 |
87 if (IsPresent()) | 87 if (IsPresent()) |
88 RemoveAdapter(); // Also deletes devices_. | 88 RemoveAdapter(); // Also deletes devices_. |
89 DCHECK(devices_.empty()); | 89 DCHECK(devices_.empty()); |
90 // profiles_ should be empty because all BluetoothSockets have been signaled | 90 // profiles_ is empty because all BluetoothSockets have been notified |
91 // that this adapter is disappearing. | 91 // that this adapter is disappearing. |
92 DCHECK(profiles_.empty()); | 92 DCHECK(profiles_.empty()); |
93 | 93 |
94 for (auto& it : profile_queues_) | 94 for (auto& it : profile_queues_) |
95 delete it.second; | 95 delete it.second; |
96 profile_queues_.clear(); | 96 profile_queues_.clear(); |
97 | 97 |
98 DBusThreadManager::Get()->GetBluetoothAdapterClient()->RemoveObserver(this); | 98 DBusThreadManager::Get()->GetBluetoothAdapterClient()->RemoveObserver(this); |
99 DBusThreadManager::Get()->GetBluetoothDeviceClient()->RemoveObserver(this); | 99 DBusThreadManager::Get()->GetBluetoothDeviceClient()->RemoveObserver(this); |
100 DBusThreadManager::Get()->GetBluetoothInputClient()->RemoveObserver(this); | 100 DBusThreadManager::Get()->GetBluetoothInputClient()->RemoveObserver(this); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
317 scoped_ptr<device::BluetoothAdvertisement::Data> advertisement_data, | 317 scoped_ptr<device::BluetoothAdvertisement::Data> advertisement_data, |
318 const CreateAdvertisementCallback& callback, | 318 const CreateAdvertisementCallback& callback, |
319 const CreateAdvertisementErrorCallback& error_callback) { | 319 const CreateAdvertisementErrorCallback& error_callback) { |
320 scoped_refptr<BluetoothAdvertisementChromeOS> advertisement( | 320 scoped_refptr<BluetoothAdvertisementChromeOS> advertisement( |
321 new BluetoothAdvertisementChromeOS(advertisement_data.Pass(), this)); | 321 new BluetoothAdvertisementChromeOS(advertisement_data.Pass(), this)); |
322 advertisement->Register(base::Bind(callback, advertisement), error_callback); | 322 advertisement->Register(base::Bind(callback, advertisement), error_callback); |
323 } | 323 } |
324 | 324 |
325 void BluetoothAdapterChromeOS::RemovePairingDelegateInternal( | 325 void BluetoothAdapterChromeOS::RemovePairingDelegateInternal( |
326 BluetoothDevice::PairingDelegate* pairing_delegate) { | 326 BluetoothDevice::PairingDelegate* pairing_delegate) { |
327 // Before removing a pairing delegate make sure that there aren't any devices | 327 // Check if any device is using the pairing delegate. |
328 // currently using it; if there are, clear the pairing context which will | 328 // If so, clear the pairing context which will make any responses no-ops. |
329 // make any responses no-ops. | |
330 for (DevicesMap::iterator iter = devices_.begin(); | 329 for (DevicesMap::iterator iter = devices_.begin(); |
331 iter != devices_.end(); ++iter) { | 330 iter != devices_.end(); ++iter) { |
332 BluetoothDeviceChromeOS* device_chromeos = | 331 BluetoothDeviceChromeOS* device_chromeos = |
333 static_cast<BluetoothDeviceChromeOS*>(iter->second); | 332 static_cast<BluetoothDeviceChromeOS*>(iter->second); |
334 | 333 |
335 BluetoothPairingChromeOS* pairing = device_chromeos->GetPairing(); | 334 BluetoothPairingChromeOS* pairing = device_chromeos->GetPairing(); |
336 if (pairing && pairing->GetPairingDelegate() == pairing_delegate) | 335 if (pairing && pairing->GetPairingDelegate() == pairing_delegate) |
337 device_chromeos->EndPairing(); | 336 device_chromeos->EndPairing(); |
338 } | 337 } |
339 } | 338 } |
(...skipping 16 matching lines...) Expand all Loading... | |
356 const std::string& property_name) { | 355 const std::string& property_name) { |
357 if (object_path != object_path_) | 356 if (object_path != object_path_) |
358 return; | 357 return; |
359 DCHECK(IsPresent()); | 358 DCHECK(IsPresent()); |
360 | 359 |
361 BluetoothAdapterClient::Properties* properties = | 360 BluetoothAdapterClient::Properties* properties = |
362 DBusThreadManager::Get()->GetBluetoothAdapterClient()-> | 361 DBusThreadManager::Get()->GetBluetoothAdapterClient()-> |
363 GetProperties(object_path_); | 362 GetProperties(object_path_); |
364 | 363 |
365 if (property_name == properties->powered.name()) | 364 if (property_name == properties->powered.name()) |
366 PoweredChanged(properties->powered.value()); | 365 PoweredChanged(properties->powered.value()); |
omoikane
2015/05/22 23:55:27
These conditional blocks should be enclosed in bra
Marie Janssen
2015/06/18 21:08:35
Done.
| |
367 else if (property_name == properties->discoverable.name()) | 366 else if (property_name == properties->discoverable.name()) |
368 DiscoverableChanged(properties->discoverable.value()); | 367 DiscoverableChanged(properties->discoverable.value()); |
369 else if (property_name == properties->discovering.name()) | 368 else if (property_name == properties->discovering.name()) |
370 DiscoveringChanged(properties->discovering.value()); | 369 DiscoveringChanged(properties->discovering.value()); |
371 } | 370 } |
372 | 371 |
373 void BluetoothAdapterChromeOS::DeviceAdded( | 372 void BluetoothAdapterChromeOS::DeviceAdded( |
374 const dbus::ObjectPath& object_path) { | 373 const dbus::ObjectPath& object_path) { |
375 DCHECK(DBusThreadManager::Get()); | 374 DCHECK(DBusThreadManager::Get()); |
376 BluetoothDeviceClient::Properties* properties = | 375 BluetoothDeviceClient::Properties* properties = |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
422 GetProperties(object_path); | 421 GetProperties(object_path); |
423 | 422 |
424 if (property_name == properties->bluetooth_class.name() || | 423 if (property_name == properties->bluetooth_class.name() || |
425 property_name == properties->address.name() || | 424 property_name == properties->address.name() || |
426 property_name == properties->alias.name() || | 425 property_name == properties->alias.name() || |
427 property_name == properties->paired.name() || | 426 property_name == properties->paired.name() || |
428 property_name == properties->trusted.name() || | 427 property_name == properties->trusted.name() || |
429 property_name == properties->connected.name() || | 428 property_name == properties->connected.name() || |
430 property_name == properties->uuids.name() || | 429 property_name == properties->uuids.name() || |
431 property_name == properties->rssi.name()) | 430 property_name == properties->rssi.name()) |
432 NotifyDeviceChanged(device_chromeos); | 431 NotifyDeviceChanged(device_chromeos); |
omoikane
2015/05/22 23:55:27
Body of this conditional should be enclosed in bra
Marie Janssen
2015/06/18 21:08:35
Done.
| |
433 | 432 |
434 // When a device becomes paired, mark it as trusted so that the user does | 433 // When a device becomes paired, mark it as trusted so that the user does |
435 // not need to approve every incoming connection | 434 // not need to approve every incoming connection |
436 if (property_name == properties->paired.name() && | 435 if (property_name == properties->paired.name() && |
437 properties->paired.value() && !properties->trusted.value()) | 436 properties->paired.value() && !properties->trusted.value()) |
438 device_chromeos->SetTrusted(); | 437 device_chromeos->SetTrusted(); |
439 | 438 |
440 // UMA connection counting | 439 // UMA connection counting |
441 if (property_name == properties->connected.name()) { | 440 if (property_name == properties->connected.name()) { |
442 // PlayStation joystick tries to reconnect after disconnection from USB. | 441 // PlayStation joystick tries to reconnect after disconnection from USB. |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
806 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, | 805 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
807 AdapterDiscoverableChanged(this, discoverable)); | 806 AdapterDiscoverableChanged(this, discoverable)); |
808 } | 807 } |
809 | 808 |
810 void BluetoothAdapterChromeOS::DiscoveringChanged( | 809 void BluetoothAdapterChromeOS::DiscoveringChanged( |
811 bool discovering) { | 810 bool discovering) { |
812 // If the adapter stopped discovery due to a reason other than a request by | 811 // If the adapter stopped discovery due to a reason other than a request by |
813 // us, reset the count to 0. | 812 // us, reset the count to 0. |
814 VLOG(1) << "Discovering changed: " << discovering; | 813 VLOG(1) << "Discovering changed: " << discovering; |
815 if (!discovering && !discovery_request_pending_ | 814 if (!discovering && !discovery_request_pending_ |
816 && num_discovery_sessions_ > 0) { | 815 && num_discovery_sessions_ > 0) { |
omoikane
2015/05/22 23:55:27
"&&" usually appears at the end of the previous li
Marie Janssen
2015/06/18 21:08:35
Done.
| |
817 VLOG(1) << "Marking sessions as inactive."; | 816 VLOG(1) << "Marking sessions as inactive."; |
818 num_discovery_sessions_ = 0; | 817 num_discovery_sessions_ = 0; |
819 MarkDiscoverySessionsAsInactive(); | 818 MarkDiscoverySessionsAsInactive(); |
820 } | 819 } |
821 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, | 820 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
822 AdapterDiscoveringChanged(this, discovering)); | 821 AdapterDiscoveringChanged(this, discovering)); |
823 } | 822 } |
824 | 823 |
825 void BluetoothAdapterChromeOS::PresentChanged(bool present) { | 824 void BluetoothAdapterChromeOS::PresentChanged(bool present) { |
826 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, | 825 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1124 BluetoothDiscoveryFilter::Transport::TRANSPORT_DUAL)); | 1123 BluetoothDiscoveryFilter::Transport::TRANSPORT_DUAL)); |
1125 df->CopyFrom(*discovery_filter); | 1124 df->CopyFrom(*discovery_filter); |
1126 SetDiscoveryFilter( | 1125 SetDiscoveryFilter( |
1127 df.Pass(), | 1126 df.Pass(), |
1128 base::Bind(&BluetoothAdapterChromeOS::OnPreSetDiscoveryFilter, | 1127 base::Bind(&BluetoothAdapterChromeOS::OnPreSetDiscoveryFilter, |
1129 weak_ptr_factory_.GetWeakPtr(), callback, error_callback), | 1128 weak_ptr_factory_.GetWeakPtr(), callback, error_callback), |
1130 base::Bind(&BluetoothAdapterChromeOS::OnPreSetDiscoveryFilterError, | 1129 base::Bind(&BluetoothAdapterChromeOS::OnPreSetDiscoveryFilterError, |
1131 weak_ptr_factory_.GetWeakPtr(), callback, error_callback)); | 1130 weak_ptr_factory_.GetWeakPtr(), callback, error_callback)); |
1132 return; | 1131 return; |
1133 } else | 1132 } else |
1134 current_filter_.reset(); | 1133 current_filter_.reset(); |
omoikane
2015/05/22 23:55:27
This conditional block should be enclosed in brace
Marie Janssen
2015/06/18 21:08:35
Done.
| |
1135 | 1134 |
1136 // This is the first request to start device discovery. | 1135 // This is the first request to start device discovery. |
1137 discovery_request_pending_ = true; | 1136 discovery_request_pending_ = true; |
1138 DBusThreadManager::Get()->GetBluetoothAdapterClient()->StartDiscovery( | 1137 DBusThreadManager::Get()->GetBluetoothAdapterClient()->StartDiscovery( |
1139 object_path_, | 1138 object_path_, |
1140 base::Bind(&BluetoothAdapterChromeOS::OnStartDiscovery, | 1139 base::Bind(&BluetoothAdapterChromeOS::OnStartDiscovery, |
1141 weak_ptr_factory_.GetWeakPtr(), callback, error_callback), | 1140 weak_ptr_factory_.GetWeakPtr(), callback, error_callback), |
1142 base::Bind(&BluetoothAdapterChromeOS::OnStartDiscoveryError, | 1141 base::Bind(&BluetoothAdapterChromeOS::OnStartDiscoveryError, |
1143 weak_ptr_factory_.GetWeakPtr(), callback, error_callback)); | 1142 weak_ptr_factory_.GetWeakPtr(), callback, error_callback)); |
1144 } | 1143 } |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1413 | 1412 |
1414 // If the queued request resulted in a pending call, then let it | 1413 // If the queued request resulted in a pending call, then let it |
1415 // asynchonously process the remaining queued requests once the pending | 1414 // asynchonously process the remaining queued requests once the pending |
1416 // call returns. | 1415 // call returns. |
1417 if (discovery_request_pending_) | 1416 if (discovery_request_pending_) |
1418 return; | 1417 return; |
1419 } | 1418 } |
1420 } | 1419 } |
1421 | 1420 |
1422 } // namespace chromeos | 1421 } // namespace chromeos |
OLD | NEW |