Commit 2554bb86 authored by danakj's avatar danakj Committed by Commit Bot

Convert Callbacks to OnceCallbacks in BluetoothLEAdvertisingManagerClient

This will allow us to convert more Callbacks in the bluetooth component
over to OnceCallbacks, which will let us convert Callbacks in content
eventually.

R=reillyg@chromium.org

Bug: 953861
Change-Id: Ibdc6523432ff74ff265e3086c4a8580a88b3e52c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1572999
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652265}
parent fb61fc33
...@@ -60,8 +60,8 @@ class BluetoothAdvertisementManagerClientImpl ...@@ -60,8 +60,8 @@ class BluetoothAdvertisementManagerClientImpl
// BluetoothAdvertisementManagerClient override. // BluetoothAdvertisementManagerClient override.
void RegisterAdvertisement(const dbus::ObjectPath& manager_object_path, void RegisterAdvertisement(const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override { ErrorCallback error_callback) override {
dbus::MethodCall method_call( dbus::MethodCall method_call(
bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface, bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface,
bluetooth_advertising_manager::kRegisterAdvertisement); bluetooth_advertising_manager::kRegisterAdvertisement);
...@@ -74,16 +74,16 @@ class BluetoothAdvertisementManagerClientImpl ...@@ -74,16 +74,16 @@ class BluetoothAdvertisementManagerClientImpl
writer.OpenArray("{sv}", &array_writer); writer.OpenArray("{sv}", &array_writer);
writer.CloseContainer(&array_writer); writer.CloseContainer(&array_writer);
CallObjectProxyMethod(manager_object_path, &method_call, callback, CallObjectProxyMethod(manager_object_path, &method_call,
error_callback); std::move(callback), std::move(error_callback));
} }
// BluetoothAdvertisementManagerClient override. // BluetoothAdvertisementManagerClient override.
void UnregisterAdvertisement( void UnregisterAdvertisement(
const dbus::ObjectPath& manager_object_path, const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override { ErrorCallback error_callback) override {
dbus::MethodCall method_call( dbus::MethodCall method_call(
bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface, bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface,
bluetooth_advertising_manager::kUnregisterAdvertisement); bluetooth_advertising_manager::kUnregisterAdvertisement);
...@@ -91,15 +91,15 @@ class BluetoothAdvertisementManagerClientImpl ...@@ -91,15 +91,15 @@ class BluetoothAdvertisementManagerClientImpl
dbus::MessageWriter writer(&method_call); dbus::MessageWriter writer(&method_call);
writer.AppendObjectPath(advertisement_object_path); writer.AppendObjectPath(advertisement_object_path);
CallObjectProxyMethod(manager_object_path, &method_call, callback, CallObjectProxyMethod(manager_object_path, &method_call,
error_callback); std::move(callback), std::move(error_callback));
} }
void SetAdvertisingInterval(const dbus::ObjectPath& manager_object_path, void SetAdvertisingInterval(const dbus::ObjectPath& manager_object_path,
uint16_t min_interval_ms, uint16_t min_interval_ms,
uint16_t max_interval_ms, uint16_t max_interval_ms,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override { ErrorCallback error_callback) override {
dbus::MethodCall method_call( dbus::MethodCall method_call(
bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface, bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface,
bluetooth_advertising_manager::kSetAdvertisingIntervals); bluetooth_advertising_manager::kSetAdvertisingIntervals);
...@@ -108,19 +108,19 @@ class BluetoothAdvertisementManagerClientImpl ...@@ -108,19 +108,19 @@ class BluetoothAdvertisementManagerClientImpl
writer.AppendUint16(min_interval_ms); writer.AppendUint16(min_interval_ms);
writer.AppendUint16(max_interval_ms); writer.AppendUint16(max_interval_ms);
CallObjectProxyMethod(manager_object_path, &method_call, callback, CallObjectProxyMethod(manager_object_path, &method_call,
error_callback); std::move(callback), std::move(error_callback));
} }
void ResetAdvertising(const dbus::ObjectPath& manager_object_path, void ResetAdvertising(const dbus::ObjectPath& manager_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override { ErrorCallback error_callback) override {
dbus::MethodCall method_call( dbus::MethodCall method_call(
bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface, bluetooth_advertising_manager::kBluetoothAdvertisingManagerInterface,
bluetooth_advertising_manager::kResetAdvertising); bluetooth_advertising_manager::kResetAdvertising);
CallObjectProxyMethod(manager_object_path, &method_call, callback, CallObjectProxyMethod(manager_object_path, &method_call,
error_callback); std::move(callback), std::move(error_callback));
} }
protected: protected:
...@@ -141,23 +141,25 @@ class BluetoothAdvertisementManagerClientImpl ...@@ -141,23 +141,25 @@ class BluetoothAdvertisementManagerClientImpl
// if the bluetooth adapter exists and run error callback if it doesn't. // if the bluetooth adapter exists and run error callback if it doesn't.
void CallObjectProxyMethod(const dbus::ObjectPath& manager_object_path, void CallObjectProxyMethod(const dbus::ObjectPath& manager_object_path,
dbus::MethodCall* method_call, dbus::MethodCall* method_call,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
DCHECK(object_manager_); DCHECK(object_manager_);
dbus::ObjectProxy* object_proxy = dbus::ObjectProxy* object_proxy =
object_manager_->GetObjectProxy(manager_object_path); object_manager_->GetObjectProxy(manager_object_path);
if (!object_proxy) { if (!object_proxy) {
error_callback.Run(bluetooth_advertising_manager::kErrorFailed, std::move(error_callback)
"Adapter does not exist."); .Run(bluetooth_advertising_manager::kErrorFailed,
"Adapter does not exist.");
return; return;
} }
object_proxy->CallMethodWithErrorCallback( object_proxy->CallMethodWithErrorCallback(
method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(&BluetoothAdvertisementManagerClientImpl::OnSuccess, base::BindOnce(&BluetoothAdvertisementManagerClientImpl::OnSuccess,
weak_ptr_factory_.GetWeakPtr(), callback), weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
base::BindOnce(&BluetoothAdvertisementManagerClientImpl::OnError, base::BindOnce(&BluetoothAdvertisementManagerClientImpl::OnError,
weak_ptr_factory_.GetWeakPtr(), error_callback)); weak_ptr_factory_.GetWeakPtr(),
std::move(error_callback)));
} }
// Called by dbus::ObjectManager when an object with the advertising manager // Called by dbus::ObjectManager when an object with the advertising manager
...@@ -177,14 +179,13 @@ class BluetoothAdvertisementManagerClientImpl ...@@ -177,14 +179,13 @@ class BluetoothAdvertisementManagerClientImpl
} }
// Called when a response for successful method call is received. // Called when a response for successful method call is received.
void OnSuccess(const base::Closure& callback, dbus::Response* response) { void OnSuccess(base::OnceClosure callback, dbus::Response* response) {
DCHECK(response); DCHECK(response);
callback.Run(); std::move(callback).Run();
} }
// Called when a response for a failed method call is received. // Called when a response for a failed method call is received.
void OnError(const ErrorCallback& error_callback, void OnError(ErrorCallback error_callback, dbus::ErrorResponse* response) {
dbus::ErrorResponse* response) {
// Error response has optional error message argument. // Error response has optional error message argument.
std::string error_name; std::string error_name;
std::string error_message; std::string error_message;
...@@ -196,7 +197,7 @@ class BluetoothAdvertisementManagerClientImpl ...@@ -196,7 +197,7 @@ class BluetoothAdvertisementManagerClientImpl
error_name = kNoResponseError; error_name = kNoResponseError;
error_message = ""; error_message = "";
} }
error_callback.Run(error_name, error_message); std::move(error_callback).Run(error_name, error_message);
} }
dbus::ObjectManager* object_manager_; dbus::ObjectManager* object_manager_;
......
...@@ -49,37 +49,38 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothLEAdvertisingManagerClient ...@@ -49,37 +49,38 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothLEAdvertisingManagerClient
// The ErrorCallback is used by advertising manager methods to indicate // The ErrorCallback is used by advertising manager methods to indicate
// failure. It receives two arguments: the name of the error in |error_name| // failure. It receives two arguments: the name of the error in |error_name|
// and an optional message in |error_message|. // and an optional message in |error_message|.
using ErrorCallback = base::Callback<void(const std::string& error_name, using ErrorCallback =
const std::string& error_message)>; base::OnceCallback<void(const std::string& error_name,
const std::string& error_message)>;
// Registers an advertisement with the DBus object path // Registers an advertisement with the DBus object path
// |advertisement_object_path| with BlueZ's advertising manager. // |advertisement_object_path| with BlueZ's advertising manager.
virtual void RegisterAdvertisement( virtual void RegisterAdvertisement(
const dbus::ObjectPath& manager_object_path, const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Unregisters an advertisement with the DBus object path // Unregisters an advertisement with the DBus object path
// |advertisement_object_path| with BlueZ's advertising manager. // |advertisement_object_path| with BlueZ's advertising manager.
virtual void UnregisterAdvertisement( virtual void UnregisterAdvertisement(
const dbus::ObjectPath& manager_object_path, const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Set's the advertising interval. // Set's the advertising interval.
virtual void SetAdvertisingInterval( virtual void SetAdvertisingInterval(
const dbus::ObjectPath& manager_object_path, const dbus::ObjectPath& manager_object_path,
uint16_t min_interval_ms, uint16_t min_interval_ms,
uint16_t max_interval_ms, uint16_t max_interval_ms,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Resets advertising. // Resets advertising.
virtual void ResetAdvertising(const dbus::ObjectPath& manager_object_path, virtual void ResetAdvertising(const dbus::ObjectPath& manager_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Creates the instance. // Creates the instance.
static BluetoothLEAdvertisingManagerClient* Create(); static BluetoothLEAdvertisingManagerClient* Create();
......
...@@ -43,37 +43,42 @@ void FakeBluetoothLEAdvertisingManagerClient::RemoveObserver( ...@@ -43,37 +43,42 @@ void FakeBluetoothLEAdvertisingManagerClient::RemoveObserver(
void FakeBluetoothLEAdvertisingManagerClient::RegisterAdvertisement( void FakeBluetoothLEAdvertisingManagerClient::RegisterAdvertisement(
const dbus::ObjectPath& manager_object_path, const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
VLOG(1) << "RegisterAdvertisment: " << advertisement_object_path.value(); VLOG(1) << "RegisterAdvertisment: " << advertisement_object_path.value();
if (manager_object_path != dbus::ObjectPath(kAdvertisingManagerPath)) { if (manager_object_path != dbus::ObjectPath(kAdvertisingManagerPath)) {
error_callback.Run(kNoResponseError, "Invalid Advertising Manager path."); std::move(error_callback)
.Run(kNoResponseError, "Invalid Advertising Manager path.");
return; return;
} }
auto iter = service_provider_map_.find(advertisement_object_path); auto iter = service_provider_map_.find(advertisement_object_path);
if (iter == service_provider_map_.end()) { if (iter == service_provider_map_.end()) {
error_callback.Run(bluetooth_advertising_manager::kErrorInvalidArguments, std::move(error_callback)
"Advertisement object not registered"); .Run(bluetooth_advertising_manager::kErrorInvalidArguments,
"Advertisement object not registered");
} else if (currently_registered_.size() >= kMaxBluezAdvertisements) { } else if (currently_registered_.size() >= kMaxBluezAdvertisements) {
error_callback.Run(bluetooth_advertising_manager::kErrorFailed, std::move(error_callback)
"Maximum advertisements reached"); .Run(bluetooth_advertising_manager::kErrorFailed,
"Maximum advertisements reached");
} else { } else {
currently_registered_.push_back(advertisement_object_path); currently_registered_.push_back(advertisement_object_path);
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
std::move(callback));
} }
} }
void FakeBluetoothLEAdvertisingManagerClient::UnregisterAdvertisement( void FakeBluetoothLEAdvertisingManagerClient::UnregisterAdvertisement(
const dbus::ObjectPath& manager_object_path, const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
VLOG(1) << "UnregisterAdvertisment: " << advertisement_object_path.value(); VLOG(1) << "UnregisterAdvertisment: " << advertisement_object_path.value();
if (manager_object_path != dbus::ObjectPath(kAdvertisingManagerPath)) { if (manager_object_path != dbus::ObjectPath(kAdvertisingManagerPath)) {
error_callback.Run(kNoResponseError, "Invalid Advertising Manager path."); std::move(error_callback)
.Run(kNoResponseError, "Invalid Advertising Manager path.");
return; return;
} }
...@@ -83,14 +88,17 @@ void FakeBluetoothLEAdvertisingManagerClient::UnregisterAdvertisement( ...@@ -83,14 +88,17 @@ void FakeBluetoothLEAdvertisingManagerClient::UnregisterAdvertisement(
advertisement_object_path); advertisement_object_path);
if (service_iter == service_provider_map_.end()) { if (service_iter == service_provider_map_.end()) {
error_callback.Run(bluetooth_advertising_manager::kErrorDoesNotExist, std::move(error_callback)
"Advertisement not registered"); .Run(bluetooth_advertising_manager::kErrorDoesNotExist,
"Advertisement not registered");
} else if (reg_iter == currently_registered_.end()) { } else if (reg_iter == currently_registered_.end()) {
error_callback.Run(bluetooth_advertising_manager::kErrorDoesNotExist, std::move(error_callback)
"Does not exist"); .Run(bluetooth_advertising_manager::kErrorDoesNotExist,
"Does not exist");
} else { } else {
currently_registered_.erase(reg_iter); currently_registered_.erase(reg_iter);
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
std::move(callback));
} }
} }
...@@ -98,24 +106,25 @@ void FakeBluetoothLEAdvertisingManagerClient::SetAdvertisingInterval( ...@@ -98,24 +106,25 @@ void FakeBluetoothLEAdvertisingManagerClient::SetAdvertisingInterval(
const dbus::ObjectPath& object_path, const dbus::ObjectPath& object_path,
uint16_t min_interval_ms, uint16_t min_interval_ms,
uint16_t max_interval_ms, uint16_t max_interval_ms,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
if (min_interval_ms < kMinIntervalMs || max_interval_ms > kMaxIntervalMs || if (min_interval_ms < kMinIntervalMs || max_interval_ms > kMaxIntervalMs ||
min_interval_ms > max_interval_ms) { min_interval_ms > max_interval_ms) {
error_callback.Run(bluetooth_advertising_manager::kErrorInvalidArguments, std::move(error_callback)
"Invalid interval."); .Run(bluetooth_advertising_manager::kErrorInvalidArguments,
"Invalid interval.");
return; return;
} }
callback.Run(); std::move(callback).Run();
} }
void FakeBluetoothLEAdvertisingManagerClient::ResetAdvertising( void FakeBluetoothLEAdvertisingManagerClient::ResetAdvertising(
const dbus::ObjectPath& object_path, const dbus::ObjectPath& object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
currently_registered_.clear(); currently_registered_.clear();
service_provider_map_.clear(); service_provider_map_.clear();
callback.Run(); std::move(callback).Run();
} }
void FakeBluetoothLEAdvertisingManagerClient:: void FakeBluetoothLEAdvertisingManagerClient::
......
...@@ -39,23 +39,23 @@ class DEVICE_BLUETOOTH_EXPORT FakeBluetoothLEAdvertisingManagerClient ...@@ -39,23 +39,23 @@ class DEVICE_BLUETOOTH_EXPORT FakeBluetoothLEAdvertisingManagerClient
void RemoveObserver(Observer* observer) override; void RemoveObserver(Observer* observer) override;
void RegisterAdvertisement(const dbus::ObjectPath& manager_object_path, void RegisterAdvertisement(const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void UnregisterAdvertisement( void UnregisterAdvertisement(
const dbus::ObjectPath& manager_object_path, const dbus::ObjectPath& manager_object_path,
const dbus::ObjectPath& advertisement_object_path, const dbus::ObjectPath& advertisement_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void SetAdvertisingInterval(const dbus::ObjectPath& manager_object_path, void SetAdvertisingInterval(const dbus::ObjectPath& manager_object_path,
uint16_t min_interval_ms, uint16_t min_interval_ms,
uint16_t max_interval_ms, uint16_t max_interval_ms,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void ResetAdvertising(const dbus::ObjectPath& manager_object_path, void ResetAdvertising(const dbus::ObjectPath& manager_object_path,
const base::Closure& callback, base::OnceClosure callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
// Register, unregister and retrieve pointers to profile server providers. // Register, unregister and retrieve pointers to profile server providers.
void RegisterAdvertisementServiceProvider( void RegisterAdvertisementServiceProvider(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment