Commit 4e4b503b authored by Miyoung Shin's avatar Miyoung Shin Committed by Commit Bot

Convert AudioLog to new Mojo types

This CL converts AudioLog{Ptr, Request} in content and services to
the new Mojo type, and usese pending_receiver<AudioLog> in
audio_logging.mojom.

Bug: 955171
Change-Id: I34ac38228c93723dc258f87c36aa2938d4d7bc1b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1872090
Commit-Queue: Miyoung Shin <myid.shin@igalia.com>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarSam McNally <sammc@chromium.org>
Reviewed-by: default avatarOlga Sharonova <olka@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709010}
parent d6485b57
......@@ -169,11 +169,9 @@ void AudioInputStreamBroker::CreateStream(
constexpr int log_component_id = 0;
factory->CreateInputStream(
std::move(stream_receiver), std::move(client), std::move(observer),
MediaInternals::GetInstance()
->CreateMojoAudioLog(
media::AudioLogFactory::AudioComponent::AUDIO_INPUT_CONTROLLER,
log_component_id, render_process_id(), render_frame_id())
.PassInterface(),
MediaInternals::GetInstance()->CreateMojoAudioLog(
media::AudioLogFactory::AudioComponent::AUDIO_INPUT_CONTROLLER,
log_component_id, render_process_id(), render_frame_id()),
device_id_, params_, shared_memory_count_, enable_agc_,
mojo::WrapReadOnlySharedMemoryRegion(std::move(key_press_count_buffer)),
std::move(processing_config_),
......
......@@ -94,7 +94,7 @@ class MockStreamFactory : public audio::FakeStreamFactory {
mojo::PendingReceiver<media::mojom::AudioInputStream> stream_receiver;
media::mojom::AudioInputStreamClientPtr client;
media::mojom::AudioInputStreamObserverPtr observer;
media::mojom::AudioLogPtr log;
mojo::Remote<media::mojom::AudioLog> log;
const std::string device_id;
const media::AudioParameters params;
uint32_t shared_memory_count;
......
......@@ -16,10 +16,10 @@ AudioLogFactory::~AudioLogFactory() = default;
void AudioLogFactory::CreateAudioLog(
media::mojom::AudioLogComponent component,
int32_t component_id,
media::mojom::AudioLogRequest audio_log_request) {
mojo::PendingReceiver<media::mojom::AudioLog> audio_log_receiver) {
MediaInternals::GetInstance()->CreateMojoAudioLog(
static_cast<media::AudioLogFactory::AudioComponent>(component),
component_id, std::move(audio_log_request));
component_id, std::move(audio_log_receiver));
}
} // namespace content
......@@ -6,6 +6,7 @@
#define CONTENT_BROWSER_MEDIA_AUDIO_LOG_FACTORY_H_
#include "media/mojo/mojom/audio_logging.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
namespace content {
......@@ -17,7 +18,8 @@ class AudioLogFactory : public media::mojom::AudioLogFactory {
// media::mojom::AudioLogFactory implementation.
void CreateAudioLog(media::mojom::AudioLogComponent component,
int32_t component_id,
media::mojom::AudioLogRequest audio_log_request) override;
mojo::PendingReceiver<media::mojom::AudioLog>
audio_log_receiver) override;
private:
DISALLOW_COPY_AND_ASSIGN(AudioLogFactory);
......
......@@ -147,11 +147,9 @@ void AudioOutputStreamBroker::CreateStream(
constexpr int log_component_id = 0;
factory->CreateOutputStream(
std::move(stream_receiver), std::move(observer),
MediaInternals::GetInstance()
->CreateMojoAudioLog(
media::AudioLogFactory::AudioComponent::AUDIO_OUTPUT_CONTROLLER,
log_component_id, render_process_id(), render_frame_id())
.PassInterface(),
MediaInternals::GetInstance()->CreateMojoAudioLog(
media::AudioLogFactory::AudioComponent::AUDIO_OUTPUT_CONTROLLER,
log_component_id, render_process_id(), render_frame_id()),
output_device_id_, params_, group_id_, processing_id_,
base::BindOnce(&AudioOutputStreamBroker::StreamCreated,
weak_ptr_factory_.GetWeakPtr(), std::move(stream)));
......
......@@ -101,7 +101,7 @@ class MockStreamFactory : public audio::FakeStreamFactory {
bool requested = false;
mojo::PendingReceiver<media::mojom::AudioOutputStream> stream_receiver;
media::mojom::AudioOutputStreamObserverAssociatedPtrInfo observer_info;
media::mojom::AudioLogPtr log;
mojo::Remote<media::mojom::AudioLog> log;
const std::string output_device_id;
const media::AudioParameters params;
const base::UnguessableToken group_id;
......
......@@ -39,7 +39,7 @@
#include "media/base/audio_parameters.h"
#include "media/base/media_log_event.h"
#include "media/webrtc/webrtc_switches.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "services/service_manager/sandbox/features.h"
#include "services/service_manager/sandbox/sandbox_type.h"
......@@ -529,27 +529,28 @@ std::unique_ptr<media::AudioLog> MediaInternals::CreateAudioLog(
return CreateAudioLogImpl(component, component_id, -1, MSG_ROUTING_NONE);
}
media::mojom::AudioLogPtr MediaInternals::CreateMojoAudioLog(
mojo::PendingRemote<media::mojom::AudioLog> MediaInternals::CreateMojoAudioLog(
media::AudioLogFactory::AudioComponent component,
int component_id,
int render_process_id,
int render_frame_id) {
media::mojom::AudioLogPtr audio_log_ptr;
CreateMojoAudioLog(component, component_id, mojo::MakeRequest(&audio_log_ptr),
mojo::PendingRemote<media::mojom::AudioLog> audio_log;
CreateMojoAudioLog(component, component_id,
audio_log.InitWithNewPipeAndPassReceiver(),
render_process_id, render_frame_id);
return audio_log_ptr;
return audio_log;
}
void MediaInternals::CreateMojoAudioLog(
media::AudioLogFactory::AudioComponent component,
int component_id,
media::mojom::AudioLogRequest request,
mojo::PendingReceiver<media::mojom::AudioLog> receiver,
int render_process_id,
int render_frame_id) {
mojo::MakeStrongBinding(
mojo::MakeSelfOwnedReceiver(
CreateAudioLogImpl(component, component_id, render_process_id,
render_frame_id),
std::move(request));
std::move(receiver));
}
std::unique_ptr<MediaInternals::AudioLogImpl>
......
......@@ -27,6 +27,8 @@
#include "media/capture/video/video_capture_device_descriptor.h"
#include "media/capture/video_capture_types.h"
#include "media/mojo/mojom/audio_logging.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
namespace media {
struct MediaLogEvent;
......@@ -97,21 +99,22 @@ class CONTENT_EXPORT MediaInternals : public media::AudioLogFactory,
std::unique_ptr<media::AudioLog> CreateAudioLog(AudioComponent component,
int component_id) override;
// Creates a media::mojom::AudioLogPtr strongly bound to a new
// Creates a PendingRemote<media::mojom::AudioLog> strongly bound to a new
// media::mojom::AudioLog instance. Safe to call from any thread.
media::mojom::AudioLogPtr CreateMojoAudioLog(
mojo::PendingRemote<media::mojom::AudioLog> CreateMojoAudioLog(
AudioComponent component,
int component_id,
int render_process_id = -1,
int render_frame_id = MSG_ROUTING_NONE);
// Strongly bounds |request| to a new media::mojom::AudioLog instance. Safe to
// call from any thread.
void CreateMojoAudioLog(AudioComponent component,
int component_id,
media::mojom::AudioLogRequest request,
int render_process_id = -1,
int render_frame_id = MSG_ROUTING_NONE);
// Strongly bounds |receiver| to a new media::mojom::AudioLog instance. Safe
// to call from any thread.
void CreateMojoAudioLog(
AudioComponent component,
int component_id,
mojo::PendingReceiver<media::mojom::AudioLog> receiver,
int render_process_id = -1,
int render_frame_id = MSG_ROUTING_NONE);
private:
// Needs access to SendUpdate.
......
......@@ -109,7 +109,7 @@ std::unique_ptr<media::AudioInputDelegate> AudioInputDelegateImpl::Create(
int render_process_id,
int render_frame_id,
AudioInputDeviceManager* audio_input_device_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
AudioInputDeviceManager::KeyboardMicRegistration keyboard_mic_registration,
uint32_t shared_memory_count,
int stream_id,
......@@ -165,7 +165,7 @@ AudioInputDelegateImpl::AudioInputDelegateImpl(
media::UserInputMonitor* user_input_monitor,
const media::AudioParameters& audio_parameters,
int render_process_id,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
AudioInputDeviceManager::KeyboardMicRegistration keyboard_mic_registration,
int stream_id,
bool automatic_gain_control,
......
......@@ -14,6 +14,8 @@
#include "content/common/content_export.h"
#include "media/audio/audio_input_delegate.h"
#include "media/mojo/mojom/audio_logging.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace media {
class AudioManager;
......@@ -46,7 +48,7 @@ class CONTENT_EXPORT AudioInputDelegateImpl : public media::AudioInputDelegate {
int render_process_id,
int render_frame_id,
AudioInputDeviceManager* audio_input_device_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
AudioInputDeviceManager::KeyboardMicRegistration
keyboard_mic_registration,
uint32_t shared_memory_count,
......@@ -70,7 +72,7 @@ class CONTENT_EXPORT AudioInputDelegateImpl : public media::AudioInputDelegate {
media::UserInputMonitor* user_input_monitor,
const media::AudioParameters& audio_parameters,
int render_process_id,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
AudioInputDeviceManager::KeyboardMicRegistration
keyboard_mic_registration,
int stream_id,
......@@ -95,7 +97,7 @@ class CONTENT_EXPORT AudioInputDelegateImpl : public media::AudioInputDelegate {
std::unique_ptr<ControllerEventHandler> controller_event_handler_;
std::unique_ptr<media::AudioInputSyncWriter> writer_;
std::unique_ptr<base::CancelableSyncSocket> foreign_socket_;
media::mojom::AudioLogPtr const audio_log_;
mojo::Remote<media::mojom::AudioLog> const audio_log_;
scoped_refptr<media::AudioInputController> controller_;
const AudioInputDeviceManager::KeyboardMicRegistration
keyboard_mic_registration_;
......
......@@ -97,7 +97,7 @@ void AudioOutputDelegateImpl::ControllerEventHandler::OnLog(
std::unique_ptr<media::AudioOutputDelegate> AudioOutputDelegateImpl::Create(
EventHandler* handler,
media::AudioManager* audio_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
MediaObserver* media_observer,
int stream_id,
int render_frame_id,
......@@ -124,7 +124,7 @@ AudioOutputDelegateImpl::AudioOutputDelegateImpl(
std::unique_ptr<base::CancelableSyncSocket> foreign_socket,
EventHandler* handler,
media::AudioManager* audio_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
MediaObserver* media_observer,
int stream_id,
int render_frame_id,
......
......@@ -39,7 +39,7 @@ class CONTENT_EXPORT AudioOutputDelegateImpl
static std::unique_ptr<AudioOutputDelegate> Create(
EventHandler* handler,
media::AudioManager* audio_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
MediaObserver* media_observer,
int stream_id,
int render_frame_id,
......@@ -54,7 +54,7 @@ class CONTENT_EXPORT AudioOutputDelegateImpl
std::unique_ptr<base::CancelableSyncSocket> foreign_socket,
EventHandler* handler,
media::AudioManager* audio_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
MediaObserver* media_observer,
int stream_id,
int render_frame_id,
......@@ -86,7 +86,7 @@ class CONTENT_EXPORT AudioOutputDelegateImpl
// This is the event handler which |this| send notifications to.
EventHandler* subscriber_;
const media::mojom::AudioLogPtr audio_log_;
const mojo::Remote<media::mojom::AudioLog> audio_log_;
// |controller_event_handler_| proxies events from controller to |this|.
// |controller_event_handler_|, and |reader_| will outlive |this|, see the
// destructor for details.
......
......@@ -30,7 +30,6 @@
#include "media/mojo/mojom/audio_output_stream.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
......@@ -138,11 +137,11 @@ class DummyMojoAudioLogImpl : public media::mojom::AudioLog {
void OnLogMessage(const std::string& message) override {}
};
media::mojom::AudioLogPtr CreateDummyMojoAudioLog() {
media::mojom::AudioLogPtr audio_log_ptr;
mojo::MakeStrongBinding(std::make_unique<DummyMojoAudioLogImpl>(),
mojo::MakeRequest(&audio_log_ptr));
return audio_log_ptr;
mojo::PendingRemote<media::mojom::AudioLog> CreateDummyMojoAudioLog() {
mojo::PendingRemote<media::mojom::AudioLog> audio_log;
mojo::MakeSelfOwnedReceiver(std::make_unique<DummyMojoAudioLogImpl>(),
audio_log.InitWithNewPipeAndPassReceiver());
return audio_log;
}
} // namespace
......
......@@ -161,7 +161,7 @@ void OldRenderFrameAudioInputStreamFactory::DoCreateStream(
DCHECK_CURRENTLY_ON(BrowserThread::IO);
int stream_id = ++next_stream_id_;
media::mojom::AudioLogPtr audio_log_ptr =
mojo::PendingRemote<media::mojom::AudioLog> audio_log =
MediaInternals::GetInstance()->CreateMojoAudioLog(
media::AudioLogFactory::AUDIO_INPUT_CONTROLLER, stream_id,
render_process_id_, render_frame_id_);
......@@ -172,7 +172,7 @@ void OldRenderFrameAudioInputStreamFactory::DoCreateStream(
base::BindOnce(
create_delegate_callback_,
base::Unretained(media_stream_manager_->audio_input_device_manager()),
std::move(audio_log_ptr), std::move(keyboard_mic_registration),
std::move(audio_log), std::move(keyboard_mic_registration),
shared_memory_count, stream_id, session_id, automatic_gain_control,
audio_params),
base::BindOnce(&OldRenderFrameAudioInputStreamFactory::RemoveStream,
......
......@@ -49,7 +49,7 @@ class CONTENT_EXPORT OldRenderFrameAudioInputStreamFactory
using CreateDelegateCallback =
base::RepeatingCallback<std::unique_ptr<media::AudioInputDelegate>(
AudioInputDeviceManager* audio_input_device_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
AudioInputDeviceManager::KeyboardMicRegistration
keyboard_mic_registration,
uint32_t shared_memory_count,
......
......@@ -95,7 +95,7 @@ class MockRendererAudioInputStreamFactoryClient
std::unique_ptr<media::AudioInputDelegate> CreateFakeDelegate(
media::AudioInputDelegate::EventHandler** event_handler_out,
AudioInputDeviceManager* audio_input_device_manager,
media::mojom::AudioLogPtr audio_log,
mojo::PendingRemote<media::mojom::AudioLog> audio_log,
AudioInputDeviceManager::KeyboardMicRegistration keyboard_mic_registration,
uint32_t shared_memory_count,
int stream_id,
......
......@@ -14,6 +14,7 @@
#include "content/public/common/content_features.h"
#include "media/audio/audio_system.h"
#include "media/mojo/mojom/audio_logging.mojom.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace content {
......@@ -64,16 +65,16 @@ RendererAudioOutputStreamFactoryContextImpl::CreateDelegate(
MediaObserver* const media_observer =
GetContentClient()->browser()->GetMediaObserver();
media::mojom::AudioLogPtr audio_log_ptr =
mojo::Remote<media::mojom::AudioLog> audio_log(
MediaInternals::GetInstance()->CreateMojoAudioLog(
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER, stream_id,
render_process_id_, render_frame_id);
audio_log_ptr->OnCreated(params, unique_device_id);
render_process_id_, render_frame_id));
audio_log->OnCreated(params, unique_device_id);
return AudioOutputDelegateImpl::Create(
handler, audio_manager_, std::move(audio_log_ptr), media_observer,
stream_id, render_frame_id, render_process_id_, params,
std::move(stream_observer), unique_device_id);
handler, audio_manager_, audio_log.Unbind(), media_observer, stream_id,
render_frame_id, render_process_id_, params, std::move(stream_observer),
unique_device_id);
}
} // namespace content
......@@ -879,10 +879,9 @@ void SpeechRecognizerImpl::CreateAudioCapturerSource() {
if (connector) {
audio_capturer_source_ = audio::CreateInputDevice(
connector->Clone(), device_id_,
MediaInternals::GetInstance()
->CreateMojoAudioLog(media::AudioLogFactory::AUDIO_INPUT_CONTROLLER,
0 /* component_id */)
.PassInterface());
MediaInternals::GetInstance()->CreateMojoAudioLog(
media::AudioLogFactory::AUDIO_INPUT_CONTROLLER,
0 /* component_id */));
}
}
......
......@@ -53,8 +53,8 @@ enum AudioLogComponent {
interface AudioLogFactory {
// Creates an AudioLog object for tracking the behavior for one instance of
// the given |component|. Each instance of an "owning" class must create its
// own AudioLog. The created AudioLog object is bound to |audio_log_request|.
// own AudioLog. The created AudioLog object is bound to |audio_log_receiver|.
CreateAudioLog(AudioLogComponent component,
int32 component_id,
AudioLog& audio_log_request);
pending_receiver<AudioLog> audio_log_receiver);
};
......@@ -17,7 +17,7 @@ class AudioParameters;
namespace audio {
// This class wraps a media::mojom::AudioLogPtr into a media::AudioLog.
// This class wraps a Remote<media::mojom::AudioLog> into a media::AudioLog.
class LogAdapter : public media::AudioLog {
public:
explicit LogAdapter(mojo::PendingRemote<media::mojom::AudioLog> audio_log);
......
......@@ -12,9 +12,10 @@
#include "base/memory/ptr_util.h"
#include "base/test/task_environment.h"
#include "media/mojo/mojom/audio_logging.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "services/audio/traced_service_ref.h"
#include "services/service_manager/public/cpp/service_keepalive.h"
#include "testing/gmock/include/gmock/gmock.h"
......@@ -56,13 +57,14 @@ class MockAudioLogFactory : public media::mojom::AudioLogFactory {
MOCK_METHOD2(MockCreateAudioLog,
void(media::mojom::AudioLogComponent, int32_t));
void CreateAudioLog(
media::mojom::AudioLogComponent component,
int32_t component_id,
media::mojom::AudioLogRequest audio_log_request) override {
void CreateAudioLog(media::mojom::AudioLogComponent component,
int32_t component_id,
mojo::PendingReceiver<media::mojom::AudioLog>
audio_log_receiver) override {
MockCreateAudioLog(component, component_id);
mojo::MakeStrongBinding(base::WrapUnique(mock_logs_[current_mock_log_++]),
std::move(audio_log_request));
mojo::MakeSelfOwnedReceiver(
base::WrapUnique(mock_logs_[current_mock_log_++]),
std::move(audio_log_receiver));
}
MockAudioLog* GetMockLog(size_t index) { return mock_logs_[index]; }
......
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