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

Side by Side Diff: chrome/browser/chromeos/bluetooth/bluetooth_adapter.cc

Issue 10546010: Implement support for the OOB Pairing APIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 6 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 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h" 5 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/browser/chromeos/bluetooth/bluetooth_device.h" 11 #include "chrome/browser/chromeos/bluetooth/bluetooth_device.h"
12 #include "chromeos/dbus/bluetooth_adapter_client.h" 12 #include "chromeos/dbus/bluetooth_adapter_client.h"
13 #include "chromeos/dbus/bluetooth_device_client.h" 13 #include "chromeos/dbus/bluetooth_device_client.h"
14 #include "chromeos/dbus/bluetooth_manager_client.h" 14 #include "chromeos/dbus/bluetooth_manager_client.h"
15 #include "chromeos/dbus/bluetooth_out_of_band_client.h"
15 #include "chromeos/dbus/dbus_thread_manager.h" 16 #include "chromeos/dbus/dbus_thread_manager.h"
16 #include "dbus/object_path.h" 17 #include "dbus/object_path.h"
17 18
18 namespace chromeos { 19 namespace chromeos {
19 20
20 BluetoothAdapter::BluetoothAdapter() : weak_ptr_factory_(this), 21 BluetoothAdapter::BluetoothAdapter() : weak_ptr_factory_(this),
21 track_default_(false), 22 track_default_(false),
22 powered_(false), 23 powered_(false),
23 discovering_(false) { 24 discovering_(false) {
24 DBusThreadManager::Get()->GetBluetoothManagerClient()-> 25 DBusThreadManager::Get()->GetBluetoothManagerClient()->
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 void BluetoothAdapter::DiscoveringChanged(bool discovering) { 240 void BluetoothAdapter::DiscoveringChanged(bool discovering) {
240 if (discovering == discovering_) 241 if (discovering == discovering_)
241 return; 242 return;
242 243
243 discovering_ = discovering; 244 discovering_ = discovering;
244 245
245 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, 246 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_,
246 AdapterDiscoveringChanged(this, discovering_)); 247 AdapterDiscoveringChanged(this, discovering_));
247 } 248 }
248 249
250 void BluetoothAdapter::OnReadLocalData(
251 const BluetoothOutOfBandPairingDataCallback& callback,
252 const ErrorCallback& error_callback,
253 const BluetoothOutOfBandPairingData& data,
254 bool success) {
255 if (success)
256 callback.Run(data);
257 else
258 error_callback.Run();
259 }
260
249 void BluetoothAdapter::AdapterPropertyChanged( 261 void BluetoothAdapter::AdapterPropertyChanged(
250 const dbus::ObjectPath& adapter_path, 262 const dbus::ObjectPath& adapter_path,
251 const std::string& property_name) { 263 const std::string& property_name) {
252 if (adapter_path != object_path_) 264 if (adapter_path != object_path_)
253 return; 265 return;
254 266
255 BluetoothAdapterClient::Properties* properties = 267 BluetoothAdapterClient::Properties* properties =
256 DBusThreadManager::Get()->GetBluetoothAdapterClient()-> 268 DBusThreadManager::Get()->GetBluetoothAdapterClient()->
257 GetProperties(object_path_); 269 GetProperties(object_path_);
258 270
(...skipping 23 matching lines...) Expand all
282 // When we first see a device, we may not know the address yet and need to 294 // When we first see a device, we may not know the address yet and need to
283 // wait for the DevicePropertyChanged signal before adding the device. 295 // wait for the DevicePropertyChanged signal before adding the device.
284 const std::string address = properties->address.value(); 296 const std::string address = properties->address.value();
285 if (address.empty()) 297 if (address.empty())
286 return; 298 return;
287 299
288 // If the device is already known this may be just an update to properties, 300 // If the device is already known this may be just an update to properties,
289 // or it may be the device going from discovered to connected and gaining 301 // or it may be the device going from discovered to connected and gaining
290 // an object path. Update the existing object and notify observers. 302 // an object path. Update the existing object and notify observers.
291 DevicesMap::iterator iter = devices_.find(address); 303 DevicesMap::iterator iter = devices_.find(address);
292 if (iter != devices_.end()){ 304 if (iter != devices_.end()) {
293 BluetoothDevice* device = iter->second; 305 BluetoothDevice* device = iter->second;
294 306
295 if (!device->IsPaired()) 307 if (!device->IsPaired())
296 device->SetObjectPath(device_path); 308 device->SetObjectPath(device_path);
297 device->Update(properties, true); 309 device->Update(properties, true);
298 310
299 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, 311 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_,
300 DeviceChanged(this, device)); 312 DeviceChanged(this, device));
301 return; 313 return;
302 } 314 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 351
340 const BluetoothDevice* BluetoothAdapter::GetDevice( 352 const BluetoothDevice* BluetoothAdapter::GetDevice(
341 const std::string& address) const { 353 const std::string& address) const {
342 DevicesMap::const_iterator iter = devices_.find(address); 354 DevicesMap::const_iterator iter = devices_.find(address);
343 if (iter != devices_.end()) 355 if (iter != devices_.end())
344 return iter->second; 356 return iter->second;
345 357
346 return NULL; 358 return NULL;
347 } 359 }
348 360
361 void BluetoothAdapter::ReadLocalOutOfBandPairingData(
362 const BluetoothOutOfBandPairingDataCallback& callback,
363 const ErrorCallback& error_callback) {
364 DBusThreadManager::Get()->GetBluetoothOutOfBandClient()->
365 ReadLocalData(object_path_,
366 base::Bind(&BluetoothAdapter::OnReadLocalData,
367 weak_ptr_factory_.GetWeakPtr(),
368 callback,
369 error_callback));
370 }
371
349 void BluetoothAdapter::ClearDevices() { 372 void BluetoothAdapter::ClearDevices() {
350 for (DevicesMap::iterator iter = devices_.begin(); 373 for (DevicesMap::iterator iter = devices_.begin();
351 iter != devices_.end(); ++iter) { 374 iter != devices_.end(); ++iter) {
352 BluetoothDevice* device = iter->second; 375 BluetoothDevice* device = iter->second;
353 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, 376 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_,
354 DeviceRemoved(this, device)); 377 DeviceRemoved(this, device));
355 378
356 delete device; 379 delete device;
357 } 380 }
358 devices_.clear(); 381 devices_.clear();
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 } 497 }
475 498
476 // static 499 // static
477 BluetoothAdapter* BluetoothAdapter::Create(const std::string& address) { 500 BluetoothAdapter* BluetoothAdapter::Create(const std::string& address) {
478 BluetoothAdapter* adapter = new BluetoothAdapter; 501 BluetoothAdapter* adapter = new BluetoothAdapter;
479 adapter->FindAdapter(address); 502 adapter->FindAdapter(address);
480 return adapter; 503 return adapter;
481 } 504 }
482 505
483 } // namespace chromeos 506 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/bluetooth/bluetooth_adapter.h ('k') | chrome/browser/chromeos/bluetooth/bluetooth_device.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698