Commit b2ce04b8 authored by Hidehiko Abe's avatar Hidehiko Abe Committed by Commit Bot

Migrate CrasAudioClient to use DBusMethodCallback.

BUG=739622
TEST=Ran trybots.

Change-Id: I6b2d0fc454c6915449c3955b83c5b954119b0626
Reviewed-on: https://chromium-review.googlesource.com/768928Reviewed-by: default avatarDan Erat <derat@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517894}
parent 0375ab86
...@@ -1655,14 +1655,14 @@ void CrasAudioHandler::GetDefaultOutputBufferSizeInternal() { ...@@ -1655,14 +1655,14 @@ void CrasAudioHandler::GetDefaultOutputBufferSizeInternal() {
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
void CrasAudioHandler::HandleGetDefaultOutputBufferSize(int32_t buffer_size, void CrasAudioHandler::HandleGetDefaultOutputBufferSize(
bool success) { base::Optional<int> buffer_size) {
if (!success) { if (!buffer_size.has_value()) {
LOG(ERROR) << "Failed to retrieve output buffer size"; LOG(ERROR) << "Failed to retrieve output buffer size";
return; return;
} }
default_output_buffer_size_ = buffer_size; default_output_buffer_size_ = buffer_size.value();
} }
} // namespace chromeos } // namespace chromeos
...@@ -472,7 +472,7 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer, ...@@ -472,7 +472,7 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer,
void GetDefaultOutputBufferSizeInternal(); void GetDefaultOutputBufferSizeInternal();
// Handle dbus callback for GetDefaultOutputBufferSize. // Handle dbus callback for GetDefaultOutputBufferSize.
void HandleGetDefaultOutputBufferSize(int buffer_size, bool success); void HandleGetDefaultOutputBufferSize(base::Optional<int> buffer_size);
void OnVideoCaptureStartedOnMainThread(media::VideoFacingMode facing); void OnVideoCaptureStartedOnMainThread(media::VideoFacingMode facing);
void OnVideoCaptureStoppedOnMainThread(media::VideoFacingMode facing); void OnVideoCaptureStoppedOnMainThread(media::VideoFacingMode facing);
......
...@@ -40,23 +40,22 @@ class CrasAudioClientImpl : public CrasAudioClient { ...@@ -40,23 +40,22 @@ class CrasAudioClientImpl : public CrasAudioClient {
return observers_.HasObserver(observer); return observers_.HasObserver(observer);
} }
void GetVolumeState(const GetVolumeStateCallback& callback) override { void GetVolumeState(DBusMethodCallback<VolumeState> callback) override {
dbus::MethodCall method_call(cras::kCrasControlInterface, dbus::MethodCall method_call(cras::kCrasControlInterface,
cras::kGetVolumeState); cras::kGetVolumeState);
cras_proxy_->CallMethod( cras_proxy_->CallMethod(
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(&CrasAudioClientImpl::OnGetVolumeState, base::BindOnce(&CrasAudioClientImpl::OnGetVolumeState,
weak_ptr_factory_.GetWeakPtr(), callback)); weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
} }
void GetDefaultOutputBufferSize( void GetDefaultOutputBufferSize(DBusMethodCallback<int> callback) override {
const GetDefaultOutputBufferSizeCallback& callback) override {
dbus::MethodCall method_call(cras::kCrasControlInterface, dbus::MethodCall method_call(cras::kCrasControlInterface,
cras::kGetDefaultOutputBufferSize); cras::kGetDefaultOutputBufferSize);
cras_proxy_->CallMethod( cras_proxy_->CallMethod(
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(&CrasAudioClientImpl::OnGetDefaultOutputBufferSize, base::BindOnce(&CrasAudioClientImpl::OnGetDefaultOutputBufferSize,
weak_ptr_factory_.GetWeakPtr(), callback)); weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
} }
void GetNodes(DBusMethodCallback<AudioNodeList> callback) override { void GetNodes(DBusMethodCallback<AudioNodeList> callback) override {
...@@ -379,48 +378,47 @@ class CrasAudioClientImpl : public CrasAudioClient { ...@@ -379,48 +378,47 @@ class CrasAudioClientImpl : public CrasAudioClient {
observer.HotwordTriggered(tv_sec, tv_nsec); observer.HotwordTriggered(tv_sec, tv_nsec);
} }
void OnGetVolumeState(const GetVolumeStateCallback& callback, void OnGetVolumeState(DBusMethodCallback<VolumeState> callback,
dbus::Response* response) { dbus::Response* response) {
bool success = true; if (!response) {
LOG(ERROR) << "Error calling " << cras::kGetVolumeState;
std::move(callback).Run(base::nullopt);
return;
}
VolumeState volume_state; VolumeState volume_state;
if (response) {
dbus::MessageReader reader(response); dbus::MessageReader reader(response);
if (!reader.PopInt32(&volume_state.output_volume) || if (!reader.PopInt32(&volume_state.output_volume) ||
!reader.PopBool(&volume_state.output_system_mute) || !reader.PopBool(&volume_state.output_system_mute) ||
!reader.PopInt32(&volume_state.input_gain) || !reader.PopInt32(&volume_state.input_gain) ||
!reader.PopBool(&volume_state.input_mute) || !reader.PopBool(&volume_state.input_mute) ||
!reader.PopBool(&volume_state.output_user_mute)) { !reader.PopBool(&volume_state.output_user_mute)) {
success = false;
LOG(ERROR) << "Error reading response from cras: " LOG(ERROR) << "Error reading response from cras: "
<< response->ToString(); << response->ToString();
} std::move(callback).Run(base::nullopt);
} else { return;
success = false;
LOG(ERROR) << "Error calling " << cras::kGetVolumeState;
} }
callback.Run(volume_state, success); std::move(callback).Run(std::move(volume_state));
} }
void OnGetDefaultOutputBufferSize( void OnGetDefaultOutputBufferSize(DBusMethodCallback<int> callback,
const GetDefaultOutputBufferSizeCallback& callback,
dbus::Response* response) { dbus::Response* response) {
bool success = true; if (!response) {
LOG(ERROR) << "Error calling " << cras::kGetDefaultOutputBufferSize;
std::move(callback).Run(base::nullopt);
return;
}
int32_t buffer_size = 0; int32_t buffer_size = 0;
if (response) {
dbus::MessageReader reader(response); dbus::MessageReader reader(response);
if (!reader.PopInt32(&buffer_size)) { if (!reader.PopInt32(&buffer_size)) {
success = false;
LOG(ERROR) << "Error reading response from cras: " LOG(ERROR) << "Error reading response from cras: "
<< response->ToString(); << response->ToString();
} std::move(callback).Run(base::nullopt);
} else { return;
success = false;
LOG(ERROR) << "Error calling " << cras::kGetDefaultOutputBufferSize;
} }
callback.Run(buffer_size, success); std::move(callback).Run(buffer_size);
} }
void OnGetNodes(DBusMethodCallback<AudioNodeList> callback, void OnGetNodes(DBusMethodCallback<AudioNodeList> callback,
......
...@@ -64,24 +64,11 @@ class CHROMEOS_EXPORT CrasAudioClient : public DBusClient { ...@@ -64,24 +64,11 @@ class CHROMEOS_EXPORT CrasAudioClient : public DBusClient {
// Returns true if this object has the given observer. // Returns true if this object has the given observer.
virtual bool HasObserver(const Observer* observer) const = 0; virtual bool HasObserver(const Observer* observer) const = 0;
// GetVolumeStateCallback is used for GetVolumeState method. It receives
// 2 arguments, |volume_state| which containing both input and output volume
// state data, and |success| which indicates whether or not the request
// succeeded.
typedef base::Callback<void(const VolumeState&, bool)> GetVolumeStateCallback;
// Used for GetDefaultOutputBufferSize method. The first argument is the
// default output buffer size. The second argument indicates whether the
// request succeeded. The first argument is valid only when the request
// succeeded.
typedef base::Callback<void(int, bool)> GetDefaultOutputBufferSizeCallback;
// Gets the volume state, asynchronously. // Gets the volume state, asynchronously.
virtual void GetVolumeState(const GetVolumeStateCallback& callback) = 0; virtual void GetVolumeState(DBusMethodCallback<VolumeState> callback) = 0;
// Gets the default output buffer size in frames. // Gets the default output buffer size in frames.
virtual void GetDefaultOutputBufferSize( virtual void GetDefaultOutputBufferSize(DBusMethodCallback<int> callback) = 0;
const GetDefaultOutputBufferSizeCallback& callback) = 0;
// Gets an array of audio input and output nodes. // Gets an array of audio input and output nodes.
virtual void GetNodes(DBusMethodCallback<AudioNodeList> callback) = 0; virtual void GetNodes(DBusMethodCallback<AudioNodeList> callback) = 0;
......
...@@ -98,13 +98,13 @@ bool FakeCrasAudioClient::HasObserver(const Observer* observer) const { ...@@ -98,13 +98,13 @@ bool FakeCrasAudioClient::HasObserver(const Observer* observer) const {
} }
void FakeCrasAudioClient::GetVolumeState( void FakeCrasAudioClient::GetVolumeState(
const GetVolumeStateCallback& callback) { DBusMethodCallback<VolumeState> callback) {
callback.Run(volume_state_, true); std::move(callback).Run(volume_state_);
} }
void FakeCrasAudioClient::GetDefaultOutputBufferSize( void FakeCrasAudioClient::GetDefaultOutputBufferSize(
const GetDefaultOutputBufferSizeCallback& callback) { DBusMethodCallback<int> callback) {
callback.Run(512, true); std::move(callback).Run(512);
} }
void FakeCrasAudioClient::GetNodes(DBusMethodCallback<AudioNodeList> callback) { void FakeCrasAudioClient::GetNodes(DBusMethodCallback<AudioNodeList> callback) {
......
...@@ -26,9 +26,8 @@ class CHROMEOS_EXPORT FakeCrasAudioClient : public CrasAudioClient { ...@@ -26,9 +26,8 @@ class CHROMEOS_EXPORT FakeCrasAudioClient : public CrasAudioClient {
void AddObserver(Observer* observer) override; void AddObserver(Observer* observer) override;
void RemoveObserver(Observer* observer) override; void RemoveObserver(Observer* observer) override;
bool HasObserver(const Observer* observer) const override; bool HasObserver(const Observer* observer) const override;
void GetVolumeState(const GetVolumeStateCallback& callback) override; void GetVolumeState(DBusMethodCallback<VolumeState> callback) override;
void GetDefaultOutputBufferSize( void GetDefaultOutputBufferSize(DBusMethodCallback<int> callback) override;
const GetDefaultOutputBufferSizeCallback& callback) override;
void GetNodes(DBusMethodCallback<AudioNodeList> callback) override; void GetNodes(DBusMethodCallback<AudioNodeList> callback) override;
void SetOutputNodeVolume(uint64_t node_id, int32_t volume) override; void SetOutputNodeVolume(uint64_t node_id, int32_t volume) override;
void SetOutputUserMute(bool mute_on) override; void SetOutputUserMute(bool mute_on) override;
......
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