summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortengs@chromium.org <tengs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-11 01:26:20 +0000
committertengs@chromium.org <tengs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-11 01:26:20 +0000
commit73e3bf317ab4dc9b6a059ccc93ba83bb8145a215 (patch)
tree36e312c5af8cd3383a456961632b82941bd16c39
parent2ad5ef50f9fb03975744312afcb43392cd2a0d54 (diff)
downloadchromium_src-73e3bf317ab4dc9b6a059ccc93ba83bb8145a215.zip
chromium_src-73e3bf317ab4dc9b6a059ccc93ba83bb8145a215.tar.gz
chromium_src-73e3bf317ab4dc9b6a059ccc93ba83bb8145a215.tar.bz2
Hook up RSSI and host transmit power Bluetooth device properties for ChromeOS.
BUG=365966 Review URL: https://codereview.chromium.org/273953002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269676 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/api/bluetooth/bluetooth_api.cc28
-rw-r--r--chrome/browser/extensions/api/bluetooth/bluetooth_api.h4
-rw-r--r--chromeos/dbus/bluetooth_device_client.cc54
-rw-r--r--chromeos/dbus/bluetooth_device_client.h30
-rw-r--r--chromeos/dbus/fake_bluetooth_device_client.cc27
-rw-r--r--chromeos/dbus/fake_bluetooth_device_client.h13
-rw-r--r--device/bluetooth/bluetooth_adapter_chromeos.cc5
-rw-r--r--device/bluetooth/bluetooth_device.h6
-rw-r--r--device/bluetooth/bluetooth_device_chromeos.cc63
-rw-r--r--device/bluetooth/bluetooth_device_chromeos.h14
-rw-r--r--device/bluetooth/bluetooth_device_mac.h3
-rw-r--r--device/bluetooth/bluetooth_device_mac.mm6
-rw-r--r--device/bluetooth/bluetooth_device_win.cc6
-rw-r--r--device/bluetooth/bluetooth_device_win.h3
-rw-r--r--device/bluetooth/test/mock_bluetooth_device.h3
15 files changed, 247 insertions, 18 deletions
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc b/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc
index 14bff9d..026c5ed 100644
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc
+++ b/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc
@@ -6,6 +6,7 @@
#include <string>
+#include "base/bind_helpers.h"
#include "base/lazy_instance.h"
#include "base/memory/ref_counted.h"
#include "chrome/browser/extensions/api/bluetooth/bluetooth_api_utils.h"
@@ -457,13 +458,36 @@ bool BluetoothConnectFunction::DoWork(scoped_refptr<BluetoothAdapter> adapter) {
device->ConnectToProfile(
bluetooth_profile,
- base::Bind(&BluetoothConnectFunction::OnSuccessCallback, this),
+ base::Bind(&BluetoothConnectFunction::OnConnectedCallback,
+ this,
+ adapter,
+ device->GetAddress()),
base::Bind(&BluetoothConnectFunction::OnErrorCallback, this));
return true;
}
-void BluetoothConnectFunction::OnSuccessCallback() {
+void BluetoothConnectFunction::OnConnectedCallback(
+ scoped_refptr<device::BluetoothAdapter> adapter,
+ const std::string& device_address) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+ // TODO(tengs): Remove this once we have an API for starting the connection
+ // monitor.
+ BluetoothDevice* device = adapter->GetDevice(device_address);
+ if (!device) {
+ SetError(kInvalidDevice);
+ SendResponse(false);
+ return;
+ }
+ // Start the connection monitor, and return success even if this fails,
+ // as the connection was still opened successfully.
+ device->StartConnectionMonitor(
+ base::Bind(&BluetoothConnectFunction::OnMonitorStartedCallback, this),
+ base::Bind(&BluetoothConnectFunction::OnMonitorStartedCallback, this));
+}
+
+void BluetoothConnectFunction::OnMonitorStartedCallback() {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
SendResponse(true);
}
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_api.h b/chrome/browser/extensions/api/bluetooth/bluetooth_api.h
index 22afeaf..ad89912 100644
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_api.h
+++ b/chrome/browser/extensions/api/bluetooth/bluetooth_api.h
@@ -183,7 +183,9 @@ class BluetoothConnectFunction : public BluetoothExtensionFunction {
virtual bool DoWork(scoped_refptr<device::BluetoothAdapter> adapter) OVERRIDE;
private:
- void OnSuccessCallback();
+ void OnConnectedCallback(scoped_refptr<device::BluetoothAdapter> adapter,
+ const std::string& device_address);
+ void OnMonitorStartedCallback();
void OnErrorCallback(const std::string& error);
};
diff --git a/chromeos/dbus/bluetooth_device_client.cc b/chromeos/dbus/bluetooth_device_client.cc
index 033daf3..b505401 100644
--- a/chromeos/dbus/bluetooth_device_client.cc
+++ b/chromeos/dbus/bluetooth_device_client.cc
@@ -41,6 +41,10 @@ BluetoothDeviceClient::Properties::Properties(
RegisterProperty(bluetooth_device::kLegacyPairingProperty, &legacy_pairing);
RegisterProperty(bluetooth_device::kModaliasProperty, &modalias);
RegisterProperty(bluetooth_device::kRSSIProperty, &rssi);
+ RegisterProperty(bluetooth_device::kConnectionRSSI, &connection_rssi);
+ RegisterProperty(bluetooth_device::kConnectionTXPower, &connection_tx_power);
+ RegisterProperty(bluetooth_device::kConnectionTXPowerMax,
+ &connection_tx_power_max);
}
BluetoothDeviceClient::Properties::~Properties() {
@@ -267,6 +271,56 @@ class BluetoothDeviceClientImpl
weak_ptr_factory_.GetWeakPtr(), error_callback));
}
+ // BluetoothDeviceClient override.
+ virtual void StartConnectionMonitor(
+ const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) OVERRIDE {
+ dbus::MethodCall method_call(bluetooth_device::kBluetoothDeviceInterface,
+ bluetooth_device::kStartConnectionMonitor);
+
+ dbus::ObjectProxy* object_proxy =
+ object_manager_->GetObjectProxy(object_path);
+ if (!object_proxy) {
+ error_callback.Run(kUnknownDeviceError, "");
+ return;
+ }
+ object_proxy->CallMethodWithErrorCallback(
+ &method_call,
+ dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ base::Bind(&BluetoothDeviceClientImpl::OnSuccess,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback),
+ base::Bind(&BluetoothDeviceClientImpl::OnError,
+ weak_ptr_factory_.GetWeakPtr(),
+ error_callback));
+ }
+
+ // BluetoothDeviceClient override.
+ virtual void StopConnectionMonitor(
+ const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) OVERRIDE {
+ dbus::MethodCall method_call(bluetooth_device::kBluetoothDeviceInterface,
+ bluetooth_device::kStopConnectionMonitor);
+
+ dbus::ObjectProxy* object_proxy =
+ object_manager_->GetObjectProxy(object_path);
+ if (!object_proxy) {
+ error_callback.Run(kUnknownDeviceError, "");
+ return;
+ }
+ object_proxy->CallMethodWithErrorCallback(
+ &method_call,
+ dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ base::Bind(&BluetoothDeviceClientImpl::OnSuccess,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback),
+ base::Bind(&BluetoothDeviceClientImpl::OnError,
+ weak_ptr_factory_.GetWeakPtr(),
+ error_callback));
+ }
+
protected:
virtual void Init(dbus::Bus* bus) OVERRIDE {
object_manager_ = bus->GetObjectManager(
diff --git a/chromeos/dbus/bluetooth_device_client.h b/chromeos/dbus/bluetooth_device_client.h
index 11f5a1c..a09b4ef 100644
--- a/chromeos/dbus/bluetooth_device_client.h
+++ b/chromeos/dbus/bluetooth_device_client.h
@@ -76,9 +76,24 @@ class CHROMEOS_EXPORT BluetoothDeviceClient : public DBusClient {
// Remote Device ID information in Linux kernel modalias format. Read-only.
dbus::Property<std::string> modalias;
- // Received signal strength indicator. Read-only.
+ // Received signal strength indicator that is set when the device is
+ // discovered during inquiry. Read-only.
dbus::Property<int16> rssi;
+ // Received signal strength indicator when a connection is open to the
+ // device. This property is not set unless connection monitor is enabled.
+ // Read-only.
+ dbus::Property<int16> connection_rssi;
+
+ // The transmit power level of the host when a connection is open
+ // to the device. This property is not set unless connection monitor is
+ // enabled. Read-only.
+ dbus::Property<int16> connection_tx_power;
+
+ // The maximum transmit power level of the host that can be set
+ // when connected to the device. Read-only.
+ dbus::Property<int16> connection_tx_power_max;
+
Properties(dbus::ObjectProxy* object_proxy,
const std::string& interface_name,
const PropertyChangedCallback& callback);
@@ -169,6 +184,19 @@ class CHROMEOS_EXPORT BluetoothDeviceClient : public DBusClient {
const base::Closure& callback,
const ErrorCallback& error_callback) = 0;
+ // Starts connection monitor for the device with object path
+ // |object_path|. Connection monitor is a mode the connection properties,
+ // RSSI and TX power are tracked and updated when they change.
+ virtual void StartConnectionMonitor(const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) = 0;
+
+ // Stops connection monitor for the device with object path
+ // |object_path|.
+ virtual void StopConnectionMonitor(const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) = 0;
+
// Creates the instance.
static BluetoothDeviceClient* Create();
diff --git a/chromeos/dbus/fake_bluetooth_device_client.cc b/chromeos/dbus/fake_bluetooth_device_client.cc
index 44b9a0b..2dd5aae 100644
--- a/chromeos/dbus/fake_bluetooth_device_client.cc
+++ b/chromeos/dbus/fake_bluetooth_device_client.cc
@@ -220,7 +220,8 @@ FakeBluetoothDeviceClient::FakeBluetoothDeviceClient()
: simulation_interval_ms_(kSimulationIntervalMs),
discovery_simulation_step_(0),
incoming_pairing_simulation_step_(0),
- pairing_cancelled_(false) {
+ pairing_cancelled_(false),
+ connection_monitor_started_(false) {
Properties* properties = new Properties(base::Bind(
&FakeBluetoothDeviceClient::OnPropertyChanged,
base::Unretained(this),
@@ -459,6 +460,22 @@ void FakeBluetoothDeviceClient::CancelPairing(
callback.Run();
}
+void FakeBluetoothDeviceClient::StartConnectionMonitor(
+ const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ VLOG(1) << "StartConnectionMonitor: " << object_path.value();
+ connection_monitor_started_ = true;
+ callback.Run();
+}
+
+void FakeBluetoothDeviceClient::StopConnectionMonitor(
+ const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ connection_monitor_started_ = false;
+ callback.Run();
+}
void FakeBluetoothDeviceClient::BeginDiscoverySimulation(
const dbus::ObjectPath& adapter_path) {
@@ -677,12 +694,12 @@ void FakeBluetoothDeviceClient::DiscoverySimulationTimer() {
dbus::ObjectPath(kLowEnergyPath));
} else if (discovery_simulation_step_ == 4) {
+ UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
+ base::RandInt(kMinRSSI, kMaxRSSI));
CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
dbus::ObjectPath(kDisplayPinCodePath));
CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
dbus::ObjectPath(kVanishingDevicePath));
- UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
- base::RandInt(kMinRSSI, kMaxRSSI));
} else if (discovery_simulation_step_ == 7) {
CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
@@ -713,10 +730,10 @@ void FakeBluetoothDeviceClient::DiscoverySimulationTimer() {
base::RandInt(kMinRSSI, kMaxRSSI));
} else if (discovery_simulation_step_ == 13) {
- RemoveDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
- dbus::ObjectPath(kVanishingDevicePath));
UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
base::RandInt(kMinRSSI, kMaxRSSI));
+ RemoveDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
+ dbus::ObjectPath(kVanishingDevicePath));
} else if (discovery_simulation_step_ == 14) {
UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
diff --git a/chromeos/dbus/fake_bluetooth_device_client.h b/chromeos/dbus/fake_bluetooth_device_client.h
index 827fdcb..af3a7dc 100644
--- a/chromeos/dbus/fake_bluetooth_device_client.h
+++ b/chromeos/dbus/fake_bluetooth_device_client.h
@@ -69,6 +69,14 @@ class CHROMEOS_EXPORT FakeBluetoothDeviceClient
virtual void CancelPairing(const dbus::ObjectPath& object_path,
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
+ virtual void StartConnectionMonitor(
+ const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) OVERRIDE;
+ virtual void StopConnectionMonitor(
+ const dbus::ObjectPath& object_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) OVERRIDE;
void SetSimulationIntervalMs(int interval_ms);
@@ -192,8 +200,8 @@ class CHROMEOS_EXPORT FakeBluetoothDeviceClient
const dbus::ObjectPath& object_path,
Properties* properties);
- // Updates the RSSI property of fake device with object path |object_path|
- // to |rssi|, if the fake device exists.
+ // Updates the inquiry RSSI property of fake device with object path
+ // |object_path| to |rssi|, if the fake device exists.
void UpdateDeviceRSSI(const dbus::ObjectPath& object_path, int16 rssi);
void PinCodeCallback(
@@ -242,6 +250,7 @@ class CHROMEOS_EXPORT FakeBluetoothDeviceClient
uint32_t discovery_simulation_step_;
uint32_t incoming_pairing_simulation_step_;
bool pairing_cancelled_;
+ bool connection_monitor_started_;
};
} // namespace chromeos
diff --git a/device/bluetooth/bluetooth_adapter_chromeos.cc b/device/bluetooth/bluetooth_adapter_chromeos.cc
index c7e8d9a..83bfb88a 100644
--- a/device/bluetooth/bluetooth_adapter_chromeos.cc
+++ b/device/bluetooth/bluetooth_adapter_chromeos.cc
@@ -335,7 +335,10 @@ void BluetoothAdapterChromeOS::DevicePropertyChanged(
property_name == properties->paired.name() ||
property_name == properties->trusted.name() ||
property_name == properties->connected.name() ||
- property_name == properties->uuids.name())
+ property_name == properties->uuids.name() ||
+ property_name == properties->rssi.name() ||
+ property_name == properties->connection_rssi.name() ||
+ property_name == properties->connection_tx_power.name())
NotifyDeviceChanged(device_chromeos);
// When a device becomes paired, mark it as trusted so that the user does
diff --git a/device/bluetooth/bluetooth_device.h b/device/bluetooth/bluetooth_device.h
index 7dce44f..a182594 100644
--- a/device/bluetooth/bluetooth_device.h
+++ b/device/bluetooth/bluetooth_device.h
@@ -404,6 +404,12 @@ class BluetoothDevice {
const base::Closure& callback,
const ErrorCallback& error_callback) = 0;
+ // Starts monitoring the connection properties, RSSI and TX power. These
+ // properties will be tracked, and updated when their values change. Exactly
+ // one of |callback| or |error_callback| will be run.
+ virtual void StartConnectionMonitor(const base::Closure& callback,
+ const ErrorCallback& error_callback) = 0;
+
// Returns the list of discovered GATT services.
virtual std::vector<BluetoothGattService*> GetGattServices() const;
diff --git a/device/bluetooth/bluetooth_device_chromeos.cc b/device/bluetooth/bluetooth_device_chromeos.cc
index 0535927..f668e9a 100644
--- a/device/bluetooth/bluetooth_device_chromeos.cc
+++ b/device/bluetooth/bluetooth_device_chromeos.cc
@@ -128,6 +128,7 @@ BluetoothDeviceChromeOS::BluetoothDeviceChromeOS(
: adapter_(adapter),
object_path_(object_path),
num_connecting_calls_(0),
+ connection_monitor_started_(false),
ui_task_runner_(ui_task_runner),
socket_thread_(socket_thread),
weak_ptr_factory_(this) {
@@ -223,18 +224,39 @@ uint16 BluetoothDeviceChromeOS::GetDeviceID() const {
}
int BluetoothDeviceChromeOS::GetRSSI() const {
- NOTIMPLEMENTED();
- return kUnknownPower;
+ BluetoothDeviceClient::Properties* properties =
+ DBusThreadManager::Get()->GetBluetoothDeviceClient()->GetProperties(
+ object_path_);
+ DCHECK(properties);
+
+ if (!IsConnected()) {
+ NOTIMPLEMENTED();
+ return kUnknownPower;
+ }
+
+ return connection_monitor_started_ ? properties->connection_rssi.value()
+ : kUnknownPower;
}
int BluetoothDeviceChromeOS::GetCurrentHostTransmitPower() const {
- NOTIMPLEMENTED();
- return kUnknownPower;
+ BluetoothDeviceClient::Properties* properties =
+ DBusThreadManager::Get()->GetBluetoothDeviceClient()->GetProperties(
+ object_path_);
+ DCHECK(properties);
+
+ return IsConnected() && connection_monitor_started_
+ ? properties->connection_tx_power.value()
+ : kUnknownPower;
}
int BluetoothDeviceChromeOS::GetMaximumHostTransmitPower() const {
- NOTIMPLEMENTED();
- return kUnknownPower;
+ BluetoothDeviceClient::Properties* properties =
+ DBusThreadManager::Get()->GetBluetoothDeviceClient()->GetProperties(
+ object_path_);
+ DCHECK(properties);
+
+ return IsConnected() ? properties->connection_tx_power_max.value()
+ : kUnknownPower;
}
bool BluetoothDeviceChromeOS::IsPaired() const {
@@ -459,6 +481,19 @@ void BluetoothDeviceChromeOS::ClearOutOfBandPairingData(
error_callback.Run();
}
+void BluetoothDeviceChromeOS::StartConnectionMonitor(
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ DBusThreadManager::Get()->GetBluetoothDeviceClient()->StartConnectionMonitor(
+ object_path_,
+ base::Bind(&BluetoothDeviceChromeOS::OnStartConnectionMonitor,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback),
+ base::Bind(&BluetoothDeviceChromeOS::OnStartConnectionMonitorError,
+ weak_ptr_factory_.GetWeakPtr(),
+ error_callback));
+}
+
BluetoothPairingChromeOS* BluetoothDeviceChromeOS::BeginPairing(
BluetoothDevice::PairingDelegate* pairing_delegate) {
pairing_.reset(new BluetoothPairingChromeOS(this, pairing_delegate));
@@ -655,6 +690,22 @@ void BluetoothDeviceChromeOS::OnSetTrusted(bool success) {
<< ": Failed to set device as trusted";
}
+void BluetoothDeviceChromeOS::OnStartConnectionMonitor(
+ const base::Closure& callback) {
+ connection_monitor_started_ = true;
+ callback.Run();
+}
+
+void BluetoothDeviceChromeOS::OnStartConnectionMonitorError(
+ const ErrorCallback& error_callback,
+ const std::string& error_name,
+ const std::string& error_message) {
+ LOG(WARNING) << object_path_.value()
+ << ": Failed to start connection monitor: " << error_name << ": "
+ << error_message;
+ error_callback.Run();
+}
+
void BluetoothDeviceChromeOS::OnDisconnect(const base::Closure& callback) {
VLOG(1) << object_path_.value() << ": Disconnected";
callback.Run();
diff --git a/device/bluetooth/bluetooth_device_chromeos.h b/device/bluetooth/bluetooth_device_chromeos.h
index 4132789..4a15a08 100644
--- a/device/bluetooth/bluetooth_device_chromeos.h
+++ b/device/bluetooth/bluetooth_device_chromeos.h
@@ -82,6 +82,9 @@ class BluetoothDeviceChromeOS
virtual void ClearOutOfBandPairingData(
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
+ virtual void StartConnectionMonitor(
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) OVERRIDE;
// Creates a pairing object with the given delegate |pairing_delegate| and
// establishes it as the pairing context for this device. All pairing-related
@@ -170,6 +173,13 @@ class BluetoothDeviceChromeOS
const std::string& error_name,
const std::string& error_message);
+ // Called by dbus:: on completion of the D-Bus method call to start the
+ // connection monitor.
+ void OnStartConnectionMonitor(const base::Closure& callback);
+ void OnStartConnectionMonitorError(const ErrorCallback& error_callback,
+ const std::string& error_name,
+ const std::string& error_message);
+
// Returns the object path of the device; used by BluetoothAdapterChromeOS
const dbus::ObjectPath& object_path() const { return object_path_; }
@@ -185,6 +195,10 @@ class BluetoothDeviceChromeOS
// Number of ongoing calls to Connect().
int num_connecting_calls_;
+ // True if the connection monitor has been started, tracking the connection
+ // RSSI and TX power.
+ bool connection_monitor_started_;
+
// UI thread task runner and socket thread object used to create sockets.
scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
scoped_refptr<device::BluetoothSocketThread> socket_thread_;
diff --git a/device/bluetooth/bluetooth_device_mac.h b/device/bluetooth/bluetooth_device_mac.h
index 757f769..a538239 100644
--- a/device/bluetooth/bluetooth_device_mac.h
+++ b/device/bluetooth/bluetooth_device_mac.h
@@ -73,6 +73,9 @@ class BluetoothDeviceMac : public BluetoothDevice {
virtual void ClearOutOfBandPairingData(
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
+ virtual void StartConnectionMonitor(
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) OVERRIDE;
// Returns the Bluetooth address for the |device|. The returned address has a
// normalized format (see below).
diff --git a/device/bluetooth/bluetooth_device_mac.mm b/device/bluetooth/bluetooth_device_mac.mm
index e2d8c7d..60db6f4 100644
--- a/device/bluetooth/bluetooth_device_mac.mm
+++ b/device/bluetooth/bluetooth_device_mac.mm
@@ -222,6 +222,12 @@ void BluetoothDeviceMac::ClearOutOfBandPairingData(
NOTIMPLEMENTED();
}
+void BluetoothDeviceMac::StartConnectionMonitor(
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ NOTIMPLEMENTED();
+}
+
int BluetoothDeviceMac::GetHostTransmitPower(
BluetoothHCITransmitPowerLevelType power_level_type) const {
IOBluetoothHostController* controller =
diff --git a/device/bluetooth/bluetooth_device_win.cc b/device/bluetooth/bluetooth_device_win.cc
index a06f947..59e11c4 100644
--- a/device/bluetooth/bluetooth_device_win.cc
+++ b/device/bluetooth/bluetooth_device_win.cc
@@ -234,6 +234,12 @@ void BluetoothDeviceWin::ClearOutOfBandPairingData(
NOTIMPLEMENTED();
}
+void BluetoothDeviceWin::StartConnectionMonitor(
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ NOTIMPLEMENTED();
+}
+
const BluetoothServiceRecord* BluetoothDeviceWin::GetServiceRecord(
const device::BluetoothUUID& uuid) const {
for (ServiceRecordList::const_iterator iter = service_record_list_.begin();
diff --git a/device/bluetooth/bluetooth_device_win.h b/device/bluetooth/bluetooth_device_win.h
index fa0c752..0a019c5 100644
--- a/device/bluetooth/bluetooth_device_win.h
+++ b/device/bluetooth/bluetooth_device_win.h
@@ -79,6 +79,9 @@ class BluetoothDeviceWin : public BluetoothDevice {
virtual void ClearOutOfBandPairingData(
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
+ virtual void StartConnectionMonitor(
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) OVERRIDE;
// Used by BluetoothProfileWin to retrieve the service record for the given
// |uuid|.
diff --git a/device/bluetooth/test/mock_bluetooth_device.h b/device/bluetooth/test/mock_bluetooth_device.h
index 5a6af5c..e624f9a 100644
--- a/device/bluetooth/test/mock_bluetooth_device.h
+++ b/device/bluetooth/test/mock_bluetooth_device.h
@@ -79,6 +79,9 @@ class MockBluetoothDevice : public BluetoothDevice {
MOCK_METHOD2(ClearOutOfBandPairingData,
void(const base::Closure& callback,
const BluetoothDevice::ErrorCallback& error_callback));
+ MOCK_METHOD2(StartConnectionMonitor,
+ void(const base::Closure& callback,
+ const BluetoothDevice::ErrorCallback& error_callback));
MOCK_CONST_METHOD0(GetGattServices, std::vector<BluetoothGattService*>());
MOCK_CONST_METHOD1(GetGattService, BluetoothGattService*(const std::string&));