summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/bluetooth/bluetooth_device.h
diff options
context:
space:
mode:
authoryoungki@chromium.org <youngki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 01:56:45 +0000
committeryoungki@chromium.org <youngki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 01:56:45 +0000
commitcc1bc719c2fd37e710a5cdf55f4559801b98d9ba (patch)
tree49fd64a8674e54904d886546acfce2f7b636d980 /chrome/browser/chromeos/bluetooth/bluetooth_device.h
parentac22933cf0a514c841856e6274df8f2000ae8203 (diff)
downloadchromium_src-cc1bc719c2fd37e710a5cdf55f4559801b98d9ba.zip
chromium_src-cc1bc719c2fd37e710a5cdf55f4559801b98d9ba.tar.gz
chromium_src-cc1bc719c2fd37e710a5cdf55f4559801b98d9ba.tar.bz2
Renames the classes in chrome/browser/chromeos/bluetooth/ ChromeOs-specific (i.e. BluetoothAdapter => BluetoothAdapterChromeOs) and creating interfaces: BluetoothAdapter and BluetoothDevice.
This CL does the Step 1 & 2 of: 1) Renames the classes in chrome/browser/chromeos/bluetooth/ chromeos-specific (i.e. BluetoothAdapter => BluetoothAdapterChromeOs) 2) Create interfaces of the classes in chrome/browser/chromeos/bluetooth/. These interfaces will be used in the platform-independent logics. 3) Move everything out of chrome/browser/chromeos/bluetooth/ into devices/bluetooth/ since the code is no longer specific to linux/chromeos. 4) Add Windows implementations. (i.e. Create BluetoothAdapterWindows) BUG=135470 Review URL: https://chromiumcodereview.appspot.com/10899037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159615 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/bluetooth/bluetooth_device.h')
-rw-r--r--chrome/browser/chromeos/bluetooth/bluetooth_device.h403
1 files changed, 52 insertions, 351 deletions
diff --git a/chrome/browser/chromeos/bluetooth/bluetooth_device.h b/chrome/browser/chromeos/bluetooth/bluetooth_device.h
index 031dfd8..fe55ab4 100644
--- a/chrome/browser/chromeos/bluetooth/bluetooth_device.h
+++ b/chrome/browser/chromeos/bluetooth/bluetooth_device.h
@@ -8,27 +8,20 @@
#include <string>
#include <vector>
-#include "base/basictypes.h"
#include "base/callback.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "base/memory/weak_ptr.h"
#include "base/string16.h"
-#include "chromeos/dbus/bluetooth_agent_service_provider.h"
-#include "chromeos/dbus/bluetooth_device_client.h"
-#include "chromeos/dbus/bluetooth_out_of_band_client.h"
-#include "dbus/object_path.h"
+#include "base/memory/ref_counted.h"
namespace chromeos {
-class BluetoothAdapter;
class BluetoothServiceRecord;
class BluetoothSocket;
-// The BluetoothDevice class represents a remote Bluetooth device, both
-// its properties and capabilities as discovered by a local adapter and
-// actions that may be performed on the remove device such as pairing,
-// connection and disconnection.
+struct BluetoothOutOfBandPairingData;
+
+// BluetoothDevice represents a remote Bluetooth device, both its properties and
+// capabilities as discovered by a local adapter and actions that may be
+// performed on the remove device such as pairing, connection and disconnection.
//
// The class is instantiated and managed by the BluetoothAdapter class
// and pointers should only be obtained from that class and not cached,
@@ -37,8 +30,7 @@ class BluetoothSocket;
// Since the lifecycle of BluetoothDevice instances is managed by
// BluetoothAdapter, that class rather than this provides observer methods
// for devices coming and going, as well as properties being updated.
-class BluetoothDevice : public BluetoothDeviceClient::Observer,
- public BluetoothAgentServiceProvider::Delegate {
+class BluetoothDevice {
public:
// Possible values that may be returned by GetDeviceType(), representing
// different types of bluetooth device that we support or are aware of
@@ -153,20 +145,13 @@ class BluetoothDevice : public BluetoothDeviceClient::Observer,
// DEVICE_PERIPHERAL.
DeviceType GetDeviceType() const;
- // Returns a localized string containing the device's bluetooth address and
- // a device type for display when |name_| is empty.
- string16 GetAddressWithLocalizedDeviceTypeName() const;
-
- // Indicates whether the class of this device is supported by Chrome OS.
- bool IsSupported() const;
-
// Indicates whether the device is paired to the adapter, whether or not
// that pairing is permanent or temporary.
- virtual bool IsPaired() const;
+ virtual bool IsPaired() const = 0;
// Indicates whether the device is visible to the adapter, this is not
// mutually exclusive to being paired.
- bool IsVisible() const { return visible_; }
+ virtual bool IsVisible() const;
// Indicates whether the device is bonded to the adapter, bonding is
// formed by pairing and exchanging high-security link keys so that
@@ -179,7 +164,7 @@ class BluetoothDevice : public BluetoothDeviceClient::Observer,
// Returns the services (as UUID strings) that this device provides.
typedef std::vector<std::string> ServiceList;
- const ServiceList& GetServices() const { return service_uuids_; }
+ virtual const ServiceList& GetServices() const = 0;
// The ErrorCallback is used for methods that can fail in which case it
// is called, in the success case the callback is simply not called.
@@ -189,34 +174,39 @@ class BluetoothDevice : public BluetoothDeviceClient::Observer,
// provides.
typedef ScopedVector<BluetoothServiceRecord> ServiceRecordList;
typedef base::Callback<void(const ServiceRecordList&)> ServiceRecordsCallback;
- void GetServiceRecords(const ServiceRecordsCallback& callback,
- const ErrorCallback& error_callback);
+ virtual void GetServiceRecords(const ServiceRecordsCallback& callback,
+ const ErrorCallback& error_callback) = 0;
// Indicates whether this device provides the given service. |uuid| should
// be in canonical form (see bluetooth_utils::CanonicalUuid).
- virtual bool ProvidesServiceWithUUID(const std::string& uuid) const;
+ virtual bool ProvidesServiceWithUUID(const std::string& uuid) const = 0;
// The ProvidesServiceCallback is used by ProvidesServiceWithName to indicate
// whether or not a matching service was found.
typedef base::Callback<void(bool)> ProvidesServiceCallback;
// Indicates whether this device provides the given service.
- virtual void ProvidesServiceWithName(const std::string& name,
- const ProvidesServiceCallback& callback);
+ virtual void ProvidesServiceWithName(
+ const std::string& name,
+ const ProvidesServiceCallback& callback) = 0;
// Indicates whether the device is currently pairing and expecting a
// PIN Code to be returned.
- bool ExpectingPinCode() const { return !pincode_callback_.is_null(); }
+ virtual bool ExpectingPinCode() const = 0;
// Indicates whether the device is currently pairing and expecting a
// Passkey to be returned.
- bool ExpectingPasskey() const { return !passkey_callback_.is_null(); }
+ virtual bool ExpectingPasskey() const = 0;
// Indicates whether the device is currently pairing and expecting
// confirmation of a displayed passkey.
- bool ExpectingConfirmation() const {
- return !confirmation_callback_.is_null();
- }
+ virtual bool ExpectingConfirmation() const = 0;
+
+ // SocketCallback is used by ConnectToService to return a BluetoothSocket to
+ // the caller, or NULL if there was an error. The socket will remain open
+ // until the last reference to the returned BluetoothSocket is released.
+ typedef base::Callback<void(scoped_refptr<BluetoothSocket>)>
+ SocketCallback;
// Initiates a connection to the device, pairing first if necessary.
//
@@ -229,40 +219,40 @@ class BluetoothDevice : public BluetoothDeviceClient::Observer,
//
// If the request fails, |error_callback| will be called; otherwise,
// |callback| is called when the request is complete.
- void Connect(PairingDelegate* pairing_delegate,
- const base::Closure& callback,
- const ErrorCallback& error_callback);
+ virtual void Connect(PairingDelegate* pairing_delegate,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) = 0;
// Sends the PIN code |pincode| to the remote device during pairing.
//
// PIN Codes are generally required for Bluetooth 2.0 and earlier devices
// for which there is no automatic pairing or special handling.
- void SetPinCode(const std::string& pincode);
+ virtual void SetPinCode(const std::string& pincode) = 0;
// Sends the Passkey |passkey| to the remote device during pairing.
//
// Passkeys are generally required for Bluetooth 2.1 and later devices
// which cannot provide input or display on their own, and don't accept
// passkey-less pairing, and are a numeric in the range 0-999999.
- void SetPasskey(uint32 passkey);
+ virtual void SetPasskey(uint32 passkey) = 0;
// Confirms to the remote device during pairing that a passkey provided by
// the ConfirmPasskey() delegate call is displayed on both devices.
- void ConfirmPairing();
+ virtual void ConfirmPairing() = 0;
// Rejects a pairing or connection request from a remote device.
- void RejectPairing();
+ virtual void RejectPairing() = 0;
// Cancels a pairing or connection attempt to a remote device.
- void CancelPairing();
+ virtual void CancelPairing() = 0;
// Disconnects the device, terminating the low-level ACL connection
// and any application connections using it. Link keys and other pairing
// information are not discarded, and the device object is not deleted.
// If the request fails, |error_callback| will be called; otherwise,
// |callback| is called when the request is complete.
- void Disconnect(const base::Closure& callback,
- const ErrorCallback& error_callback);
+ virtual void Disconnect(const base::Closure& callback,
+ const ErrorCallback& error_callback) = 0;
// Disconnects the device, terminating the low-level ACL connection
// and any application connections using it, and then discards link keys
@@ -271,12 +261,7 @@ class BluetoothDevice : public BluetoothDeviceClient::Observer,
// have been deleted. If the request fails, |error_callback| will be called.
// There is no callback for success beause this object is often deleted
// before that callback would be called.
- void Forget(const ErrorCallback& error_callback);
-
- // SocketCallback is used by ConnectToService to return a BluetoothSocket
- // to the caller, or NULL if there was an error. The socket will remain open
- // until the last reference to the returned BluetoothSocket is released.
- typedef base::Callback<void(scoped_refptr<BluetoothSocket>)> SocketCallback;
+ virtual void Forget(const ErrorCallback& error_callback) = 0;
// Attempts to open a socket to a service matching |uuid| on this device. If
// the connection is successful, |callback| is called with a BluetoothSocket.
@@ -284,295 +269,34 @@ class BluetoothDevice : public BluetoothDeviceClient::Observer,
// all references to the BluetoothSocket are released. Note that the
// BluetoothSocket object can outlive both this BluetoothDevice and the
// BluetoothAdapter for this device.
- void ConnectToService(const std::string& service_uuid,
- const SocketCallback& callback);
+ virtual void ConnectToService(const std::string& service_uuid,
+ const SocketCallback& callback) = 0;
// Sets the Out Of Band pairing data for this device to |data|. Exactly one
// of |callback| or |error_callback| will be run.
virtual void SetOutOfBandPairingData(
- const chromeos::BluetoothOutOfBandPairingData& data,
+ const BluetoothOutOfBandPairingData& data,
const base::Closure& callback,
- const ErrorCallback& error_callback);
+ const ErrorCallback& error_callback) = 0;
// Clears the Out Of Band pairing data for this device. Exactly one of
// |callback| or |error_callback| will be run.
virtual void ClearOutOfBandPairingData(
const base::Closure& callback,
- const ErrorCallback& error_callback);
-
- private:
- friend class BluetoothAdapter;
- friend class MockBluetoothDevice;
-
- explicit BluetoothDevice(BluetoothAdapter* adapter);
-
- // Sets the dbus object path for the device to |object_path|, indicating
- // that the device has gone from being discovered to paired or bonded.
- void SetObjectPath(const dbus::ObjectPath& object_path);
-
- // Removes the dbus object path from the device, indicating that the
- // device is no longer paired or bonded, but perhaps still visible.
- void RemoveObjectPath();
-
- // Sets whether the device is visible to the owning adapter to |visible|.
- void SetVisible(bool visible) { visible_ = visible; }
-
- // Updates device information from the properties in |properties|, device
- // state properties such as |paired_| and |connected_| are ignored unless
- // |update_state| is true.
- void Update(const BluetoothDeviceClient::Properties* properties,
- bool update_state);
-
- // Called by BluetoothAdapterClient when a call to CreateDevice() or
- // CreatePairedDevice() succeeds, provides the new object path for the remote
- // device in |device_path|. |callback| and |error_callback| are the callbacks
- // provided to Connect().
- void ConnectCallback(const base::Closure& callback,
- const ErrorCallback& error_callback,
- const dbus::ObjectPath& device_path);
-
- // Called by BluetoothAdapterClient when a call to CreateDevice() or
- // CreatePairedDevice() fails with the error named |error_name| and
- // optional message |error_message|, |error_callback| is the callback
- // provided to Connect().
- void ConnectErrorCallback(const ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_message);
-
- // Called by BluetoothAdapterClient when a call to DiscoverServices()
- // completes. |callback| and |error_callback| are the callbacks provided to
- // GetServiceRecords.
- void CollectServiceRecordsCallback(
- const ServiceRecordsCallback& callback,
- const ErrorCallback& error_callback,
- const dbus::ObjectPath& device_path,
- const BluetoothDeviceClient::ServiceMap& service_map,
- bool success);
-
- // Called by BluetoothProperty when the call to Set() for the Trusted
- // property completes. |success| indicates whether or not the request
- // succeeded, |callback| and |error_callback| are the callbacks provided to
- // Connect().
- void OnSetTrusted(const base::Closure& callback,
- const ErrorCallback& error_callback,
- bool success);
-
- // Connect application-level protocols of the device to the system, called
- // on a successful connection or to reconnect to a device that is already
- // paired or previously connected. |error_callback| is called on failure.
- // Otherwise, |callback| is called when the request is complete.
- void ConnectApplications(const base::Closure& callback,
- const ErrorCallback& error_callback);
-
- // Called by IntrospectableClient when a call to Introspect() completes.
- // |success| indicates whether or not the request succeeded, |callback| and
- // |error_callback| are the callbacks provided to ConnectApplications(),
- // |service_name| and |device_path| specify the remote object being
- // introspected and |xml_data| contains the XML-formatted protocol data.
- void OnIntrospect(const base::Closure& callback,
- const ErrorCallback& error_callback,
- const std::string& service_name,
- const dbus::ObjectPath& device_path,
- const std::string& xml_data, bool success);
-
- // Called by BluetoothInputClient when the call to Connect() succeeds.
- // |error_callback| is the callback provided to ConnectApplications(),
- // |interface_name| specifies the interface being connected and
- // |device_path| the remote object path.
- void OnConnect(const base::Closure& callback,
- const std::string& interface_name,
- const dbus::ObjectPath& device_path);
-
- // Called by BluetoothInputClient when the call to Connect() fails.
- // |error_callback| is the callback provided to ConnectApplications(),
- // |interface_name| specifies the interface being connected,
- // |device_path| the remote object path,
- // |error_name| the error name and |error_message| the optional message.
- void OnConnectError(const ErrorCallback& error_callback,
- const std::string& interface_name,
- const dbus::ObjectPath& device_path,
- const std::string& error_name,
- const std::string& error_message);
-
- // Called by BluetoothDeviceClient when a call to Disconnect() completes,
- // |success| indicates whether or not the request succeeded, |callback| and
- // |error_callback| are the callbacks provided to Disconnect() and
- // |device_path| is the device disconnected.
- void DisconnectCallback(const base::Closure& callback,
- const ErrorCallback& error_callback,
- const dbus::ObjectPath& device_path, bool success);
-
- // Called by BluetoothAdapterClient when a call to RemoveDevice() completes,
- // |success| indicates whether or not the request succeeded, |error_callback|
- // is the callback provided to Forget() and |adapter_path| is the d-bus
- // object path of the adapter that performed the removal.
- void ForgetCallback(const ErrorCallback& error_callback,
- const dbus::ObjectPath& adapter_path, bool success);
-
- // Called if the call to GetServiceRecords from ProvidesServiceWithName fails.
- void SearchServicesForNameErrorCallback(
- const ProvidesServiceCallback& callback);
-
- // Called by GetServiceRecords with the list of BluetoothServiceRecords to
- // search for |name|. |callback| is the callback from
- // ProvidesServiceWithName.
- void SearchServicesForNameCallback(
- const std::string& name,
- const ProvidesServiceCallback& callback,
- const ServiceRecordList& list);
-
- // Called if the call to GetServiceRecords from Connect fails.
- void GetServiceRecordsForConnectErrorCallback(
- const SocketCallback& callback);
-
- // Called by GetServiceRecords with the list of BluetoothServiceRecords.
- // Connections are attempted to each service in the list matching
- // |service_uuid|, and the socket from the first successful connection is
- // passed to |callback|.
- void GetServiceRecordsForConnectCallback(
- const std::string& service_uuid,
- const SocketCallback& callback,
- const ServiceRecordList& list);
-
- // Called by BlueoothDeviceClient in response to the AddRemoteData and
- // RemoveRemoteData method calls.
- void OnRemoteDataCallback(const base::Closure& callback,
- const ErrorCallback& error_callback,
- bool success);
-
- // BluetoothDeviceClient::Observer override.
- //
- // Called when the device with object path |object_path| is about
- // to be disconnected, giving a chance for application layers to
- // shut down cleanly.
- virtual void DisconnectRequested(
- const dbus::ObjectPath& object_path) OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the agent is unregistered from the
- // Bluetooth daemon, generally at the end of a pairing request. It may be
- // used to perform cleanup tasks.
- virtual void Release() OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the Bluetooth daemon requires a
- // PIN Code for authentication of the device with object path |device_path|,
- // the agent should obtain the code from the user and call |callback|
- // to provide it, or indicate rejection or cancellation of the request.
- //
- // PIN Codes are generally required for Bluetooth 2.0 and earlier devices
- // for which there is no automatic pairing or special handling.
- virtual void RequestPinCode(const dbus::ObjectPath& device_path,
- const PinCodeCallback& callback) OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the Bluetooth daemon requires a
- // Passkey for authentication of the device with object path |device_path|,
- // the agent should obtain the passkey from the user (a numeric in the
- // range 0-999999) and call |callback| to provide it, or indicate
- // rejection or cancellation of the request.
- //
- // Passkeys are generally required for Bluetooth 2.1 and later devices
- // which cannot provide input or display on their own, and don't accept
- // passkey-less pairing.
- virtual void RequestPasskey(const dbus::ObjectPath& device_path,
- const PasskeyCallback& callback) OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the Bluetooth daemon requires that the
- // user enter the PIN code |pincode| into the device with object path
- // |device_path| so that it may be authenticated. The Cancel() method
- // will be called to dismiss the display once pairing is complete or
- // cancelled.
- //
- // This is used for Bluetooth 2.0 and earlier keyboard devices, the
- // |pincode| will always be a six-digit numeric in the range 000000-999999
- // for compatibilty with later specifications.
- virtual void DisplayPinCode(const dbus::ObjectPath& device_path,
- const std::string& pincode) OVERRIDE;
+ const ErrorCallback& error_callback) = 0;
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the Bluetooth daemon requires that the
- // user enter the Passkey |passkey| into the device with object path
- // |device_path| so that it may be authenticated. The Cancel() method
- // will be called to dismiss the display once pairing is complete or
- // cancelled.
- //
- // This is used for Bluetooth 2.1 and later devices that support input
- // but not display, such as keyboards. The Passkey is a numeric in the
- // range 0-999999 and should be always presented zero-padded to six
- // digits.
- virtual void DisplayPasskey(const dbus::ObjectPath& device_path,
- uint32 passkey) OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the Bluetooth daemon requires that the
- // user confirm that the Passkey |passkey| is displayed on the screen
- // of the device with object path |object_path| so that it may be
- // authentication. The agent should display to the user and ask for
- // confirmation, then call |callback| to provide their response (success,
- // rejected or cancelled).
- //
- // This is used for Bluetooth 2.1 and later devices that support display,
- // such as other computers or phones. The Passkey is a numeric in the
- // range 0-999999 and should be always present zero-padded to six
- // digits.
- virtual void RequestConfirmation(
- const dbus::ObjectPath& device_path,
- uint32 passkey,
- const ConfirmationCallback& callback) OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the Bluetooth daemon requires that the
- // user confirm that the device with object path |object_path| is
- // authorized to connect to the service with UUID |uuid|. The agent should
- // confirm with the user and call |callback| to provide their response
- // (success, rejected or cancelled).
- virtual void Authorize(const dbus::ObjectPath& device_path,
- const std::string& uuid,
- const ConfirmationCallback& callback) OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called when the Bluetooth daemon requires that the
- // user confirm that the device adapter may switch to mode |mode|. The
- // agent should confirm with the user and call |callback| to provide
- // their response (success, rejected or cancelled).
- virtual void ConfirmModeChange(Mode mode,
- const ConfirmationCallback& callback) OVERRIDE;
-
- // BluetoothAgentServiceProvider::Delegate override.
- //
- // This method will be called by the Bluetooth daemon to indicate that
- // the request failed before a reply was returned from the device.
- virtual void Cancel() OVERRIDE;
-
- // Creates a new BluetoothDevice object bound to the adapter |adapter|.
- static BluetoothDevice* Create(BluetoothAdapter* adapter);
+ protected:
+ BluetoothDevice();
- // The adapter that owns this device instance.
- BluetoothAdapter* adapter_;
-
- // The dbus object path of the device, will be empty if the device has only
- // been discovered and not yet paired with.
- dbus::ObjectPath object_path_;
-
- // The Bluetooth address of the device.
- std::string address_;
+ // The Bluetooth class of the device, a bitmask that may be decoded using
+ // https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm
+ uint32 bluetooth_class_;
// The name of the device, as supplied by the remote device.
std::string name_;
- // The Bluetooth class of the device, a bitmask that may be decoded using
- // https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm
- uint32 bluetooth_class_;
+ // The Bluetooth address of the device.
+ std::string address_;
// Tracked device state, updated by the adapter managing the lifecyle of
// the device.
@@ -580,33 +304,10 @@ class BluetoothDevice : public BluetoothDeviceClient::Observer,
bool bonded_;
bool connected_;
- // The services (identified by UUIDs) that this device provides.
- std::vector<std::string> service_uuids_;
-
- // During pairing this is set to an object that we don't own, but on which
- // we can make method calls to request, display or confirm PIN Codes and
- // Passkeys. Generally it is the object that owns this one.
- PairingDelegate* pairing_delegate_;
-
- // During pairing this is set to an instance of a D-Bus agent object
- // intialized with our own class as its delegate.
- scoped_ptr<BluetoothAgentServiceProvider> agent_;
-
- // During pairing these callbacks are set to those provided by method calls
- // made on us by |agent_| and are called by our own method calls such as
- // SetPinCode() and SetPasskey().
- PinCodeCallback pincode_callback_;
- PasskeyCallback passkey_callback_;
- ConfirmationCallback confirmation_callback_;
-
- // Used to keep track of pending application connection requests.
- int connecting_applications_counter_;
-
- // Note: This should remain the last member so it'll be destroyed and
- // invalidate its weak pointers before any other members are destroyed.
- base::WeakPtrFactory<BluetoothDevice> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(BluetoothDevice);
+ private:
+ // Returns a localized string containing the device's bluetooth address and
+ // a device type for display when |name_| is empty.
+ string16 GetAddressWithLocalizedDeviceTypeName() const;
};
} // namespace chromeos