| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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_DEVICE_EXPERIMENTAL_CHROMEOS_H | 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H |
| 6 #define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H | 6 #define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
| 12 #include "chromeos/dbus/experimental_bluetooth_agent_service_provider.h" | 12 #include "chromeos/dbus/experimental_bluetooth_agent_service_provider.h" |
| 13 #include "chromeos/dbus/experimental_bluetooth_device_client.h" | 13 #include "chromeos/dbus/experimental_bluetooth_device_client.h" |
| 14 #include "dbus/object_path.h" | 14 #include "dbus/object_path.h" |
| 15 #include "device/bluetooth/bluetooth_device.h" | 15 #include "device/bluetooth/bluetooth_device.h" |
| 16 | 16 |
| 17 namespace chromeos { | 17 namespace chromeos { |
| 18 | 18 |
| 19 class BluetoothAdapterExperimentalChromeOS; | 19 class BluetoothAdapterExperimentalChromeOS; |
| 20 | 20 |
| 21 // The BluetoothDeviceExperimentalChromeOS class is an alternate implementation | 21 // The BluetoothDeviceExperimentalChromeOS class is an alternate implementation |
| 22 // of BluetoothDevice for the Chrome OS platform using the Bluetooth Smart | 22 // of BluetoothDevice for the Chrome OS platform using the Bluetooth Smart |
| 23 // capable backend. It will become the sole implementation for Chrome OS, and | 23 // capable backend. It will become the sole implementation for Chrome OS, and |
| 24 // be renamed to BluetoothDeviceChromeOS, once the backend is switched. | 24 // be renamed to BluetoothDeviceChromeOS, once the backend is switched. |
| 25 class BluetoothDeviceExperimentalChromeOS | 25 class BluetoothDeviceExperimentalChromeOS |
| 26 : public device::BluetoothDevice, | 26 : public device::BluetoothDevice, |
| 27 private chromeos::ExperimentalBluetoothAgentServiceProvider::Delegate { | 27 private chromeos::ExperimentalBluetoothAgentServiceProvider::Delegate { |
| 28 public: | 28 public: |
| 29 // BluetoothDevice override | 29 // BluetoothDevice override |
| 30 virtual uint32 GetBluetoothClass() const OVERRIDE; |
| 30 virtual std::string GetAddress() const OVERRIDE; | 31 virtual std::string GetAddress() const OVERRIDE; |
| 32 virtual uint16 GetVendorID() const OVERRIDE; |
| 33 virtual uint16 GetProductID() const OVERRIDE; |
| 34 virtual uint16 GetDeviceID() const OVERRIDE; |
| 31 virtual bool IsPaired() const OVERRIDE; | 35 virtual bool IsPaired() const OVERRIDE; |
| 32 virtual bool IsConnected() const OVERRIDE; | 36 virtual bool IsConnected() const OVERRIDE; |
| 33 virtual bool IsConnectable() const OVERRIDE; | 37 virtual bool IsConnectable() const OVERRIDE; |
| 34 virtual bool IsConnecting() const OVERRIDE; | 38 virtual bool IsConnecting() const OVERRIDE; |
| 35 virtual ServiceList GetServices() const OVERRIDE; | 39 virtual ServiceList GetServices() const OVERRIDE; |
| 36 virtual void GetServiceRecords( | 40 virtual void GetServiceRecords( |
| 37 const ServiceRecordsCallback& callback, | 41 const ServiceRecordsCallback& callback, |
| 38 const ErrorCallback& error_callback) OVERRIDE; | 42 const ErrorCallback& error_callback) OVERRIDE; |
| 39 virtual void ProvidesServiceWithName( | 43 virtual void ProvidesServiceWithName( |
| 40 const std::string& name, | 44 const std::string& name, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 65 virtual void SetOutOfBandPairingData( | 69 virtual void SetOutOfBandPairingData( |
| 66 const device::BluetoothOutOfBandPairingData& data, | 70 const device::BluetoothOutOfBandPairingData& data, |
| 67 const base::Closure& callback, | 71 const base::Closure& callback, |
| 68 const ErrorCallback& error_callback) OVERRIDE; | 72 const ErrorCallback& error_callback) OVERRIDE; |
| 69 virtual void ClearOutOfBandPairingData( | 73 virtual void ClearOutOfBandPairingData( |
| 70 const base::Closure& callback, | 74 const base::Closure& callback, |
| 71 const ErrorCallback& error_callback) OVERRIDE; | 75 const ErrorCallback& error_callback) OVERRIDE; |
| 72 | 76 |
| 73 protected: | 77 protected: |
| 74 // BluetoothDevice override | 78 // BluetoothDevice override |
| 75 virtual uint32 GetBluetoothClass() const OVERRIDE; | |
| 76 virtual std::string GetDeviceName() const OVERRIDE; | 79 virtual std::string GetDeviceName() const OVERRIDE; |
| 77 | 80 |
| 78 private: | 81 private: |
| 79 friend class BluetoothAdapterExperimentalChromeOS; | 82 friend class BluetoothAdapterExperimentalChromeOS; |
| 80 | 83 |
| 81 BluetoothDeviceExperimentalChromeOS( | 84 BluetoothDeviceExperimentalChromeOS( |
| 82 BluetoothAdapterExperimentalChromeOS* adapter, | 85 BluetoothAdapterExperimentalChromeOS* adapter, |
| 83 const dbus::ObjectPath& object_path); | 86 const dbus::ObjectPath& object_path); |
| 84 virtual ~BluetoothDeviceExperimentalChromeOS(); | 87 virtual ~BluetoothDeviceExperimentalChromeOS(); |
| 85 | 88 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 // there is no matching completion call since this object is deleted in the | 163 // there is no matching completion call since this object is deleted in the |
| 161 // process of unpairing. | 164 // process of unpairing. |
| 162 void OnForgetError(const ErrorCallback& error_callback, | 165 void OnForgetError(const ErrorCallback& error_callback, |
| 163 const std::string& error_name, | 166 const std::string& error_name, |
| 164 const std::string& error_message); | 167 const std::string& error_message); |
| 165 | 168 |
| 166 // Run any outstanding pairing callbacks passing |status| as the result of | 169 // Run any outstanding pairing callbacks passing |status| as the result of |
| 167 // pairing. Returns true if any callbacks were run, false if not. | 170 // pairing. Returns true if any callbacks were run, false if not. |
| 168 bool RunPairingCallbacks(Status status); | 171 bool RunPairingCallbacks(Status status); |
| 169 | 172 |
| 173 // Record the result of pairing as a UMA histogram metric; |success| should |
| 174 // be true if pairing succeeded, and |false| if not - in which case |
| 175 // |error_code| specifies the reason for failure. |
| 176 void RecordPairingResult(bool success, ConnectErrorCode error_code); |
| 177 |
| 170 // Return the object path of the device; used by | 178 // Return the object path of the device; used by |
| 171 // BluetoothAdapterExperimentalChromeOS | 179 // BluetoothAdapterExperimentalChromeOS |
| 172 const dbus::ObjectPath& object_path() const { return object_path_; } | 180 const dbus::ObjectPath& object_path() const { return object_path_; } |
| 173 | 181 |
| 174 // The adapter that owns this device instance. | 182 // The adapter that owns this device instance. |
| 175 BluetoothAdapterExperimentalChromeOS* adapter_; | 183 BluetoothAdapterExperimentalChromeOS* adapter_; |
| 176 | 184 |
| 177 // The dbus object path of the device object. | 185 // The dbus object path of the device object. |
| 178 dbus::ObjectPath object_path_; | 186 dbus::ObjectPath object_path_; |
| 179 | 187 |
| 180 // Number of ongoing calls to Connect(). | 188 // Number of ongoing calls to Connect(). |
| 181 int num_connecting_calls_; | 189 int num_connecting_calls_; |
| 182 | 190 |
| 183 // During pairing this is set to an object that we don't own, but on which | 191 // During pairing this is set to an object that we don't own, but on which |
| 184 // we can make method calls to request, display or confirm PIN Codes and | 192 // we can make method calls to request, display or confirm PIN Codes and |
| 185 // Passkeys. Generally it is the object that owns this one. | 193 // Passkeys. Generally it is the object that owns this one. |
| 186 PairingDelegate* pairing_delegate_; | 194 PairingDelegate* pairing_delegate_; |
| 187 | 195 |
| 196 // Flag to indicate whether a pairing delegate method has been called during |
| 197 // pairing. |
| 198 bool pairing_delegate_used_; |
| 199 |
| 188 // During pairing this is set to an instance of a D-Bus agent object | 200 // During pairing this is set to an instance of a D-Bus agent object |
| 189 // intialized with our own class as its delegate. | 201 // intialized with our own class as its delegate. |
| 190 scoped_ptr<ExperimentalBluetoothAgentServiceProvider> agent_; | 202 scoped_ptr<ExperimentalBluetoothAgentServiceProvider> agent_; |
| 191 | 203 |
| 192 // During pairing these callbacks are set to those provided by method calls | 204 // During pairing these callbacks are set to those provided by method calls |
| 193 // made on us by |agent_| and are called by our own method calls such as | 205 // made on us by |agent_| and are called by our own method calls such as |
| 194 // SetPinCode() and SetPasskey(). | 206 // SetPinCode() and SetPasskey(). |
| 195 PinCodeCallback pincode_callback_; | 207 PinCodeCallback pincode_callback_; |
| 196 PasskeyCallback passkey_callback_; | 208 PasskeyCallback passkey_callback_; |
| 197 ConfirmationCallback confirmation_callback_; | 209 ConfirmationCallback confirmation_callback_; |
| 198 | 210 |
| 199 // Note: This should remain the last member so it'll be destroyed and | 211 // Note: This should remain the last member so it'll be destroyed and |
| 200 // invalidate its weak pointers before any other members are destroyed. | 212 // invalidate its weak pointers before any other members are destroyed. |
| 201 base::WeakPtrFactory<BluetoothDeviceExperimentalChromeOS> weak_ptr_factory_; | 213 base::WeakPtrFactory<BluetoothDeviceExperimentalChromeOS> weak_ptr_factory_; |
| 202 | 214 |
| 203 DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceExperimentalChromeOS); | 215 DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceExperimentalChromeOS); |
| 204 }; | 216 }; |
| 205 | 217 |
| 206 } // namespace chromeos | 218 } // namespace chromeos |
| 207 | 219 |
| 208 #endif // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H | 220 #endif // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H |
| OLD | NEW |