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

Side by Side Diff: device/bluetooth/bluetooth_adapter_chromeos.h

Issue 935383003: Fix BluetoothAdapterProfileChromeOS lifecycle management (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments, fix simultaneous useprofile Created 5 years, 9 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
OLDNEW
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 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_CHROMEOS_H_ 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_CHROMEOS_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_CHROMEOS_H_ 6 #define DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_CHROMEOS_H_
7 7
8 #include <map> 8 #include <map>
9 #include <queue> 9 #include <queue>
10 #include <string> 10 #include <string>
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 // successfully registered, |success_callback| will be called with a pointer 131 // successfully registered, |success_callback| will be called with a pointer
132 // to the profile which is managed by BluetoothAdapterChromeOS. On failure, 132 // to the profile which is managed by BluetoothAdapterChromeOS. On failure,
133 // |error_callback| will be called. 133 // |error_callback| will be called.
134 void UseProfile(const device::BluetoothUUID& uuid, 134 void UseProfile(const device::BluetoothUUID& uuid,
135 const dbus::ObjectPath& device_path, 135 const dbus::ObjectPath& device_path,
136 const BluetoothProfileManagerClient::Options& options, 136 const BluetoothProfileManagerClient::Options& options,
137 BluetoothProfileServiceProvider::Delegate* delegate, 137 BluetoothProfileServiceProvider::Delegate* delegate,
138 const ProfileRegisteredCallback& success_callback, 138 const ProfileRegisteredCallback& success_callback,
139 const ErrorCompletionCallback& error_callback); 139 const ErrorCompletionCallback& error_callback);
140 140
141 // Releases the profile associated with |uuid| 141 // Release use of a profile by a device.
142 void ReleaseProfile(const device::BluetoothUUID& uuid); 142 void ReleaseProfile(const dbus::ObjectPath& device_path,
143 BluetoothAdapterProfileChromeOS* profile);
143 144
144 protected: 145 protected:
145 // BluetoothAdapter: 146 // BluetoothAdapter:
146 void RemovePairingDelegateInternal( 147 void RemovePairingDelegateInternal(
147 device::BluetoothDevice::PairingDelegate* pairing_delegate) override; 148 device::BluetoothDevice::PairingDelegate* pairing_delegate) override;
148 149
149 private: 150 private:
150 friend class base::DeleteHelper<BluetoothAdapterChromeOS>; 151 friend class base::DeleteHelper<BluetoothAdapterChromeOS>;
151 friend class BluetoothChromeOSTest; 152 friend class BluetoothChromeOSTest;
152 153
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 const std::string& error_message); 263 const std::string& error_message);
263 264
264 // Called by dbus:: on completion of the D-Bus method call to stop discovery. 265 // Called by dbus:: on completion of the D-Bus method call to stop discovery.
265 void OnStopDiscovery(const base::Closure& callback); 266 void OnStopDiscovery(const base::Closure& callback);
266 void OnStopDiscoveryError(const ErrorCallback& error_callback, 267 void OnStopDiscoveryError(const ErrorCallback& error_callback,
267 const std::string& error_name, 268 const std::string& error_name,
268 const std::string& error_message); 269 const std::string& error_message);
269 270
270 // Called by dbus:: on completion of the D-Bus method to register a profile. 271 // Called by dbus:: on completion of the D-Bus method to register a profile.
271 void OnRegisterProfile(const device::BluetoothUUID& uuid, 272 void OnRegisterProfile(const device::BluetoothUUID& uuid,
272 const dbus::ObjectPath& device_path, 273 BluetoothAdapterProfileChromeOS* profile);
273 BluetoothProfileServiceProvider::Delegate* delegate, 274
274 const ProfileRegisteredCallback& success_callback, 275 void SetProfileDelegate(const device::BluetoothUUID& uuid,
275 const ErrorCompletionCallback& error_callback);
276 bool SetProfileDelegate(const device::BluetoothUUID& uuid,
277 const dbus::ObjectPath& device_path, 276 const dbus::ObjectPath& device_path,
278 BluetoothProfileServiceProvider::Delegate* delegate, 277 BluetoothProfileServiceProvider::Delegate* delegate,
279 const ProfileRegisteredCallback& success_callback, 278 const ProfileRegisteredCallback& success_callback,
280 const ErrorCompletionCallback& error_callback); 279 const ErrorCompletionCallback& error_callback);
281 void OnRegisterProfileError(const device::BluetoothUUID& uuid, 280 void OnRegisterProfileError(const device::BluetoothUUID& uuid,
282 const ErrorCompletionCallback& error_callback,
283 const std::string& error_name, 281 const std::string& error_name,
284 const std::string& error_message); 282 const std::string& error_message);
285 283
284 // Called by BluetoothAdapterProfileChromeOS when no users of a profile
285 // remain.
286 void RemoveProfile(const device::BluetoothUUID& uuid);
287
286 // Processes the queued discovery requests. For each DiscoveryCallbackPair in 288 // Processes the queued discovery requests. For each DiscoveryCallbackPair in
287 // the queue, this method will try to add a new discovery session. This method 289 // the queue, this method will try to add a new discovery session. This method
288 // is called whenever a pending D-Bus call to start or stop discovery has 290 // is called whenever a pending D-Bus call to start or stop discovery has
289 // ended (with either success or failure). 291 // ended (with either success or failure).
290 void ProcessQueuedDiscoveryRequests(); 292 void ProcessQueuedDiscoveryRequests();
291 293
292 // Set in |Shutdown()|, makes IsPresent()| return false. 294 // Set in |Shutdown()|, makes IsPresent()| return false.
293 bool dbus_is_shutdown_; 295 bool dbus_is_shutdown_;
294 296
295 // Number of discovery sessions that have been added. 297 // Number of discovery sessions that have been added.
(...skipping 23 matching lines...) Expand all
319 // our own class as its delegate. 321 // our own class as its delegate.
320 scoped_ptr<BluetoothAgentServiceProvider> agent_; 322 scoped_ptr<BluetoothAgentServiceProvider> agent_;
321 323
322 // UI thread task runner and socket thread object used to create sockets. 324 // UI thread task runner and socket thread object used to create sockets.
323 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; 325 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
324 scoped_refptr<device::BluetoothSocketThread> socket_thread_; 326 scoped_refptr<device::BluetoothSocketThread> socket_thread_;
325 327
326 // The profiles we have registered with the bluetooth daemon. 328 // The profiles we have registered with the bluetooth daemon.
327 std::map<device::BluetoothUUID, BluetoothAdapterProfileChromeOS*> profiles_; 329 std::map<device::BluetoothUUID, BluetoothAdapterProfileChromeOS*> profiles_;
328 330
331 // Callback pair for the profile registration queue.
332 typedef std::pair<base::Closure, ErrorCompletionCallback>
333 RegisterProfileCompletionPair;
334
335 // Queue of delegates waiting for a profile to register.
336 std::map<device::BluetoothUUID, std::vector<RegisterProfileCompletionPair>*>
337 profile_queues_;
338
329 // Note: This should remain the last member so it'll be destroyed and 339 // Note: This should remain the last member so it'll be destroyed and
330 // invalidate its weak pointers before any other members are destroyed. 340 // invalidate its weak pointers before any other members are destroyed.
331 base::WeakPtrFactory<BluetoothAdapterChromeOS> weak_ptr_factory_; 341 base::WeakPtrFactory<BluetoothAdapterChromeOS> weak_ptr_factory_;
332 342
333 DISALLOW_COPY_AND_ASSIGN(BluetoothAdapterChromeOS); 343 DISALLOW_COPY_AND_ASSIGN(BluetoothAdapterChromeOS);
334 }; 344 };
335 345
336 } // namespace chromeos 346 } // namespace chromeos
337 347
338 #endif // DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_CHROMEOS_H_ 348 #endif // DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_CHROMEOS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698