Commit b223de22 authored by Abhijeet Kandalkar's avatar Abhijeet Kandalkar Committed by Commit Bot

Convert services/media_session services to new Mojo types (6/n)

The primary goal of this CL is to convert usage of |functions| of
interface AudioFocusManager and port dependent files to adopt new
implementation.

Bug: 955171
Change-Id: I2c8f269b2b36034b9ebc5beb1aef56ee3db691b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1715367
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarMitsuru Oshima <oshima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#682154}
parent 18a02647
...@@ -29,7 +29,6 @@ AssistantMediaSession::AssistantMediaSession( ...@@ -29,7 +29,6 @@ AssistantMediaSession::AssistantMediaSession(
AssistantManagerServiceImpl* assistant_manager) AssistantManagerServiceImpl* assistant_manager)
: assistant_manager_service_(assistant_manager), : assistant_manager_service_(assistant_manager),
connector_(connector), connector_(connector),
binding_(this),
weak_factory_(this) {} weak_factory_(this) {}
AssistantMediaSession::~AssistantMediaSession() { AssistantMediaSession::~AssistantMediaSession() {
...@@ -97,9 +96,9 @@ void AssistantMediaSession::RequestAudioFocus(AudioFocusType audio_focus_type) { ...@@ -97,9 +96,9 @@ void AssistantMediaSession::RequestAudioFocus(AudioFocusType audio_focus_type) {
return; return;
} }
if (request_client_ptr_.is_bound()) { if (request_client_remote_.is_bound()) {
// We have an existing request so we should request an updated focus type. // We have an existing request so we should request an updated focus type.
request_client_ptr_->RequestAudioFocus( request_client_remote_->RequestAudioFocus(
GetMediaSessionInfoInternal(), audio_focus_type, GetMediaSessionInfoInternal(), audio_focus_type,
base::BindOnce(&AssistantMediaSession::FinishAudioFocusRequest, base::BindOnce(&AssistantMediaSession::FinishAudioFocusRequest,
base::Unretained(this), audio_focus_type)); base::Unretained(this), audio_focus_type));
...@@ -109,12 +108,11 @@ void AssistantMediaSession::RequestAudioFocus(AudioFocusType audio_focus_type) { ...@@ -109,12 +108,11 @@ void AssistantMediaSession::RequestAudioFocus(AudioFocusType audio_focus_type) {
EnsureServiceConnection(); EnsureServiceConnection();
// Create a mojo interface pointer to our media session. // Create a mojo interface pointer to our media session.
media_session::mojom::MediaSessionPtr media_session; receiver_.reset();
binding_.Close(); audio_focus_remote_->RequestAudioFocus(
binding_.Bind(mojo::MakeRequest(&media_session)); request_client_remote_.BindNewPipeAndPassReceiver(),
audio_focus_ptr_->RequestAudioFocus( receiver_.BindNewPipeAndPassRemote(), GetMediaSessionInfoInternal(),
mojo::MakeRequest(&request_client_ptr_), std::move(media_session), audio_focus_type,
GetMediaSessionInfoInternal(), audio_focus_type,
base::BindOnce(&AssistantMediaSession::FinishInitialAudioFocusRequest, base::BindOnce(&AssistantMediaSession::FinishInitialAudioFocusRequest,
base::Unretained(this), audio_focus_type)); base::Unretained(this), audio_focus_type));
} }
...@@ -130,30 +128,31 @@ void AssistantMediaSession::AbandonAudioFocusIfNeeded() { ...@@ -130,30 +128,31 @@ void AssistantMediaSession::AbandonAudioFocusIfNeeded() {
SetAudioFocusInfo(State::INACTIVE, audio_focus_type_); SetAudioFocusInfo(State::INACTIVE, audio_focus_type_);
if (!request_client_ptr_.is_bound()) if (!request_client_remote_.is_bound())
return; return;
request_client_ptr_->AbandonAudioFocus(); request_client_remote_->AbandonAudioFocus();
request_client_ptr_.reset(); request_client_remote_.reset();
audio_focus_ptr_.reset(); audio_focus_remote_.reset();
} }
void AssistantMediaSession::EnsureServiceConnection() { void AssistantMediaSession::EnsureServiceConnection() {
DCHECK(base::FeatureList::IsEnabled( DCHECK(base::FeatureList::IsEnabled(
media_session::features::kMediaSessionService)); media_session::features::kMediaSessionService));
if (audio_focus_ptr_.is_bound() && !audio_focus_ptr_.encountered_error()) if (audio_focus_remote_.is_bound() &&
!audio_focus_remote_.encountered_error())
return; return;
audio_focus_ptr_.reset(); audio_focus_remote_.reset();
connector_->BindInterface(media_session::mojom::kServiceName, connector_->Connect(media_session::mojom::kServiceName,
mojo::MakeRequest(&audio_focus_ptr_)); audio_focus_remote_->BindNewPipeAndPassReceiver());
audio_focus_ptr_->SetSourceName(kAudioFocusSourceName); audio_focus_remote_->SetSourceName(kAudioFocusSourceName);
} }
void AssistantMediaSession::FinishAudioFocusRequest( void AssistantMediaSession::FinishAudioFocusRequest(
AudioFocusType audio_focus_type) { AudioFocusType audio_focus_type) {
DCHECK(request_client_ptr_.is_bound()); DCHECK(request_client_remote_.is_bound());
SetAudioFocusInfo(State::ACTIVE, audio_focus_type); SetAudioFocusInfo(State::ACTIVE, audio_focus_type);
} }
...@@ -225,8 +224,8 @@ void AssistantMediaSession::NotifyMediaSessionInfoChanged() { ...@@ -225,8 +224,8 @@ void AssistantMediaSession::NotifyMediaSessionInfoChanged() {
if (current_info == session_info_) if (current_info == session_info_)
return; return;
if (request_client_ptr_.is_bound()) if (request_client_remote_.is_bound())
request_client_ptr_->MediaSessionInfoChanged(current_info.Clone()); request_client_remote_->MediaSessionInfoChanged(current_info.Clone());
for (auto& observer : observers_) for (auto& observer : observers_)
observer->MediaSessionInfoChanged(current_info.Clone()); observer->MediaSessionInfoChanged(current_info.Clone());
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
#include "base/timer/timer.h" #include "base/timer/timer.h"
#include "base/unguessable_token.h" #include "base/unguessable_token.h"
#include "libassistant/shared/public/media_manager.h" #include "libassistant/shared/public/media_manager.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/interface_ptr_set.h" #include "mojo/public/cpp/bindings/interface_ptr_set.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote_set.h" #include "mojo/public/cpp/bindings/remote_set.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
#include "services/media_session/public/mojom/media_session.mojom.h" #include "services/media_session/public/mojom/media_session.mojom.h"
...@@ -103,14 +103,14 @@ class AssistantMediaSession : public media_session::mojom::MediaSession { ...@@ -103,14 +103,14 @@ class AssistantMediaSession : public media_session::mojom::MediaSession {
service_manager::Connector* connector_; service_manager::Connector* connector_;
// Binding for Mojo pointer to |this| held by AudioFocusManager. // Binding for Mojo pointer to |this| held by AudioFocusManager.
mojo::Binding<media_session::mojom::MediaSession> binding_; mojo::Receiver<media_session::mojom::MediaSession> receiver_{this};
assistant_client::TrackType current_track_; assistant_client::TrackType current_track_;
mojo::RemoteSet<media_session::mojom::MediaSessionObserver> observers_; mojo::RemoteSet<media_session::mojom::MediaSessionObserver> observers_;
// Holds a pointer to the MediaSessionService. // Holds a pointer to the MediaSessionService.
media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_remote_;
// The ducking state of this media session. The initial value is |false|, and // The ducking state of this media session. The initial value is |false|, and
// is set to |true| after StartDucking(), and will be set to |false| after // is set to |true| after StartDucking(), and will be set to |false| after
...@@ -119,7 +119,8 @@ class AssistantMediaSession : public media_session::mojom::MediaSession { ...@@ -119,7 +119,8 @@ class AssistantMediaSession : public media_session::mojom::MediaSession {
// If the media session has acquired audio focus then this will contain a // If the media session has acquired audio focus then this will contain a
// pointer to that requests AudioFocusRequestClient. // pointer to that requests AudioFocusRequestClient.
media_session::mojom::AudioFocusRequestClientPtr request_client_ptr_; mojo::Remote<media_session::mojom::AudioFocusRequestClient>
request_client_remote_;
// The last updated |MediaSessionInfo| that was sent to |observers_|. // The last updated |MediaSessionInfo| that was sent to |observers_|.
media_session::mojom::MediaSessionInfoPtr session_info_; media_session::mojom::MediaSessionInfoPtr session_info_;
......
...@@ -70,7 +70,8 @@ class AudioFocusDelegateDefault : public AudioFocusDelegate { ...@@ -70,7 +70,8 @@ class AudioFocusDelegateDefault : public AudioFocusDelegate {
// If the media session has acquired audio focus then this will contain a // If the media session has acquired audio focus then this will contain a
// pointer to that requests AudioFocusRequestClient. // pointer to that requests AudioFocusRequestClient.
media_session::mojom::AudioFocusRequestClientPtr request_client_ptr_; mojo::Remote<media_session::mojom::AudioFocusRequestClient>
request_client_remote_;
// Weak pointer because |this| is owned by |media_session_|. // Weak pointer because |this| is owned by |media_session_|.
MediaSessionImpl* media_session_; MediaSessionImpl* media_session_;
...@@ -99,9 +100,9 @@ AudioFocusDelegateDefault::RequestAudioFocus(AudioFocusType audio_focus_type) { ...@@ -99,9 +100,9 @@ AudioFocusDelegateDefault::RequestAudioFocus(AudioFocusType audio_focus_type) {
return AudioFocusDelegate::AudioFocusResult::kSuccess; return AudioFocusDelegate::AudioFocusResult::kSuccess;
} }
if (request_client_ptr_.is_bound()) { if (request_client_remote_.is_bound()) {
// We have an existing request so we should request an updated focus type. // We have an existing request so we should request an updated focus type.
request_client_ptr_->RequestAudioFocus( request_client_remote_->RequestAudioFocus(
session_info_.Clone(), audio_focus_type, session_info_.Clone(), audio_focus_type,
base::BindOnce(&AudioFocusDelegateDefault::FinishAudioFocusRequest, base::BindOnce(&AudioFocusDelegateDefault::FinishAudioFocusRequest,
base::Unretained(this), audio_focus_type)); base::Unretained(this), audio_focus_type));
...@@ -109,12 +110,12 @@ AudioFocusDelegateDefault::RequestAudioFocus(AudioFocusType audio_focus_type) { ...@@ -109,12 +110,12 @@ AudioFocusDelegateDefault::RequestAudioFocus(AudioFocusType audio_focus_type) {
EnsureServiceConnection(); EnsureServiceConnection();
// Create a mojo interface pointer to our media session. // Create a mojo interface pointer to our media session.
media_session::mojom::MediaSessionPtr media_session; mojo::PendingRemote<media_session::mojom::MediaSession> media_session =
media_session_->BindToMojoRequest(mojo::MakeRequest(&media_session)); media_session_->AddRemote();
audio_focus_ptr_->RequestGroupedAudioFocus( audio_focus_ptr_->RequestGroupedAudioFocus(
mojo::MakeRequest(&request_client_ptr_), std::move(media_session), request_client_remote_.BindNewPipeAndPassReceiver(),
session_info_.Clone(), audio_focus_type, std::move(media_session), session_info_.Clone(), audio_focus_type,
GetAudioFocusGroupId(media_session_), GetAudioFocusGroupId(media_session_),
base::BindOnce( base::BindOnce(
&AudioFocusDelegateDefault::FinishInitialAudioFocusRequest, &AudioFocusDelegateDefault::FinishInitialAudioFocusRequest,
...@@ -130,11 +131,11 @@ void AudioFocusDelegateDefault::AbandonAudioFocus() { ...@@ -130,11 +131,11 @@ void AudioFocusDelegateDefault::AbandonAudioFocus() {
audio_focus_type_.reset(); audio_focus_type_.reset();
if (!request_client_ptr_.is_bound()) if (!request_client_remote_.is_bound())
return; return;
request_client_ptr_->AbandonAudioFocus(); request_client_remote_->AbandonAudioFocus();
request_client_ptr_.reset(); request_client_remote_.reset();
audio_focus_ptr_.reset(); audio_focus_ptr_.reset();
} }
...@@ -148,15 +149,15 @@ void AudioFocusDelegateDefault::MediaSessionInfoChanged( ...@@ -148,15 +149,15 @@ void AudioFocusDelegateDefault::MediaSessionInfoChanged(
media_session::mojom::MediaSessionInfoPtr session_info) { media_session::mojom::MediaSessionInfoPtr session_info) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (request_client_ptr_.is_bound()) if (request_client_remote_.is_bound())
request_client_ptr_->MediaSessionInfoChanged(session_info.Clone()); request_client_remote_->MediaSessionInfoChanged(session_info.Clone());
session_info_ = std::move(session_info); session_info_ = std::move(session_info);
} }
void AudioFocusDelegateDefault::FinishAudioFocusRequest(AudioFocusType type) { void AudioFocusDelegateDefault::FinishAudioFocusRequest(AudioFocusType type) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(request_client_ptr_.is_bound()); DCHECK(request_client_remote_.is_bound());
audio_focus_type_ = type; audio_focus_type_ = type;
media_session_->FinishSystemAudioFocusRequest(type, true /* result */); media_session_->FinishSystemAudioFocusRequest(type, true /* result */);
......
...@@ -778,9 +778,11 @@ AudioFocusDelegate::AudioFocusResult MediaSessionImpl::RequestSystemAudioFocus( ...@@ -778,9 +778,11 @@ AudioFocusDelegate::AudioFocusResult MediaSessionImpl::RequestSystemAudioFocus(
return result; return result;
} }
void MediaSessionImpl::BindToMojoRequest( mojo::PendingRemote<media_session::mojom::MediaSession>
mojo::InterfaceRequest<media_session::mojom::MediaSession> request) { MediaSessionImpl::AddRemote() {
bindings_.AddBinding(this, std::move(request)); mojo::PendingRemote<media_session::mojom::MediaSession> remote;
receivers_.Add(this, remote.InitWithNewPipeAndPassReceiver());
return remote;
} }
void MediaSessionImpl::GetDebugInfo(GetDebugInfoCallback callback) { void MediaSessionImpl::GetDebugInfo(GetDebugInfoCallback callback) {
......
...@@ -24,9 +24,8 @@ ...@@ -24,9 +24,8 @@
#include "content/public/browser/media_session.h" #include "content/public/browser/media_session.h"
#include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h" #include "content/public/browser/web_contents_user_data.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_ptr_set.h" #include "mojo/public/cpp/bindings/interface_ptr_set.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote_set.h" #include "mojo/public/cpp/bindings/remote_set.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
...@@ -164,8 +163,7 @@ class MediaSessionImpl : public MediaSession, ...@@ -164,8 +163,7 @@ class MediaSessionImpl : public MediaSession,
media_session::mojom::AudioFocusType audio_focus_type); media_session::mojom::AudioFocusType audio_focus_type);
// Creates a binding between |this| and |request|. // Creates a binding between |this| and |request|.
void BindToMojoRequest( mojo::PendingRemote<media_session::mojom::MediaSession> AddRemote();
mojo::InterfaceRequest<media_session::mojom::MediaSession> request);
// Returns information about the MediaSession. // Returns information about the MediaSession.
CONTENT_EXPORT media_session::mojom::MediaSessionInfoPtr CONTENT_EXPORT media_session::mojom::MediaSessionInfoPtr
...@@ -425,7 +423,7 @@ class MediaSessionImpl : public MediaSession, ...@@ -425,7 +423,7 @@ class MediaSessionImpl : public MediaSession,
MediaSessionServiceImpl* routed_service_; MediaSessionServiceImpl* routed_service_;
// Bindings for Mojo pointers to |this| held by media route providers. // Bindings for Mojo pointers to |this| held by media route providers.
mojo::BindingSet<media_session::mojom::MediaSession> bindings_; mojo::ReceiverSet<media_session::mojom::MediaSession> receivers_;
mojo::RemoteSet<media_session::mojom::MediaSessionObserver> observers_; mojo::RemoteSet<media_session::mojom::MediaSessionObserver> observers_;
......
...@@ -58,19 +58,19 @@ class MediaPowerDelegate : public base::PowerObserver { ...@@ -58,19 +58,19 @@ class MediaPowerDelegate : public base::PowerObserver {
}; };
void AudioFocusManager::RequestAudioFocus( void AudioFocusManager::RequestAudioFocus(
mojom::AudioFocusRequestClientRequest request, mojo::PendingReceiver<mojom::AudioFocusRequestClient> receiver,
mojom::MediaSessionPtr media_session, mojo::PendingRemote<mojom::MediaSession> media_session,
mojom::MediaSessionInfoPtr session_info, mojom::MediaSessionInfoPtr session_info,
mojom::AudioFocusType type, mojom::AudioFocusType type,
RequestAudioFocusCallback callback) { RequestAudioFocusCallback callback) {
RequestGroupedAudioFocus( RequestGroupedAudioFocus(
std::move(request), std::move(media_session), std::move(session_info), std::move(receiver), std::move(media_session), std::move(session_info),
type, base::UnguessableToken::Create(), std::move(callback)); type, base::UnguessableToken::Create(), std::move(callback));
} }
void AudioFocusManager::RequestGroupedAudioFocus( void AudioFocusManager::RequestGroupedAudioFocus(
mojom::AudioFocusRequestClientRequest request, mojo::PendingReceiver<mojom::AudioFocusRequestClient> receiver,
mojom::MediaSessionPtr media_session, mojo::PendingRemote<mojom::MediaSession> media_session,
mojom::MediaSessionInfoPtr session_info, mojom::MediaSessionInfoPtr session_info,
mojom::AudioFocusType type, mojom::AudioFocusType type,
const base::UnguessableToken& group_id, const base::UnguessableToken& group_id,
...@@ -79,7 +79,7 @@ void AudioFocusManager::RequestGroupedAudioFocus( ...@@ -79,7 +79,7 @@ void AudioFocusManager::RequestGroupedAudioFocus(
RequestAudioFocusInternal( RequestAudioFocusInternal(
std::make_unique<AudioFocusRequest>( std::make_unique<AudioFocusRequest>(
weak_ptr_factory_.GetWeakPtr(), std::move(request), weak_ptr_factory_.GetWeakPtr(), std::move(receiver),
std::move(media_session), std::move(session_info), type, request_id, std::move(media_session), std::move(session_info), type, request_id,
GetBindingSourceName(), group_id), GetBindingSourceName(), group_id),
type); type);
......
...@@ -49,17 +49,19 @@ class AudioFocusManager : public mojom::AudioFocusManager, ...@@ -49,17 +49,19 @@ class AudioFocusManager : public mojom::AudioFocusManager,
using RequestId = base::UnguessableToken; using RequestId = base::UnguessableToken;
// mojom::AudioFocusManager. // mojom::AudioFocusManager.
void RequestAudioFocus(mojom::AudioFocusRequestClientRequest request, void RequestAudioFocus(
mojom::MediaSessionPtr media_session, mojo::PendingReceiver<mojom::AudioFocusRequestClient> receiver,
mojom::MediaSessionInfoPtr session_info, mojo::PendingRemote<mojom::MediaSession> media_session,
mojom::AudioFocusType type, mojom::MediaSessionInfoPtr session_info,
RequestAudioFocusCallback callback) override; mojom::AudioFocusType type,
void RequestGroupedAudioFocus(mojom::AudioFocusRequestClientRequest request, RequestAudioFocusCallback callback) override;
mojom::MediaSessionPtr media_session, void RequestGroupedAudioFocus(
mojom::MediaSessionInfoPtr session_info, mojo::PendingReceiver<mojom::AudioFocusRequestClient> receiver,
mojom::AudioFocusType type, mojo::PendingRemote<mojom::MediaSession> media_session,
const base::UnguessableToken& group_id, mojom::MediaSessionInfoPtr session_info,
RequestAudioFocusCallback callback) override; mojom::AudioFocusType type,
const base::UnguessableToken& group_id,
RequestAudioFocusCallback callback) override;
void GetFocusRequests(GetFocusRequestsCallback callback) override; void GetFocusRequests(GetFocusRequestsCallback callback) override;
void AddObserver( void AddObserver(
mojo::PendingRemote<mojom::AudioFocusObserver> observer) override; mojo::PendingRemote<mojom::AudioFocusObserver> observer) override;
......
...@@ -10,8 +10,8 @@ namespace media_session { ...@@ -10,8 +10,8 @@ namespace media_session {
AudioFocusRequest::AudioFocusRequest( AudioFocusRequest::AudioFocusRequest(
base::WeakPtr<AudioFocusManager> owner, base::WeakPtr<AudioFocusManager> owner,
mojom::AudioFocusRequestClientRequest request, mojo::PendingReceiver<mojom::AudioFocusRequestClient> receiver,
mojom::MediaSessionPtr session, mojo::PendingRemote<mojom::MediaSession> session,
mojom::MediaSessionInfoPtr session_info, mojom::MediaSessionInfoPtr session_info,
mojom::AudioFocusType audio_focus_type, mojom::AudioFocusType audio_focus_type,
const base::UnguessableToken& id, const base::UnguessableToken& id,
...@@ -21,13 +21,13 @@ AudioFocusRequest::AudioFocusRequest( ...@@ -21,13 +21,13 @@ AudioFocusRequest::AudioFocusRequest(
session_(std::move(session)), session_(std::move(session)),
session_info_(std::move(session_info)), session_info_(std::move(session_info)),
audio_focus_type_(audio_focus_type), audio_focus_type_(audio_focus_type),
binding_(this, std::move(request)), receiver_(this, std::move(receiver)),
id_(id), id_(id),
source_name_(source_name), source_name_(source_name),
group_id_(group_id), group_id_(group_id),
owner_(std::move(owner)) { owner_(std::move(owner)) {
// Listen for mojo errors. // Listen for mojo errors.
binding_.set_connection_error_handler(base::BindOnce( receiver_.set_disconnect_handler(base::BindOnce(
&AudioFocusRequest::OnConnectionError, base::Unretained(this))); &AudioFocusRequest::OnConnectionError, base::Unretained(this)));
session_.set_connection_error_handler(base::BindOnce( session_.set_connection_error_handler(base::BindOnce(
&AudioFocusRequest::OnConnectionError, base::Unretained(this))); &AudioFocusRequest::OnConnectionError, base::Unretained(this)));
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include "base/callback_forward.h" #include "base/callback_forward.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "services/media_session/audio_focus_manager_metrics_helper.h" #include "services/media_session/audio_focus_manager_metrics_helper.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
#include "services/media_session/public/mojom/media_controller.mojom.h" #include "services/media_session/public/mojom/media_controller.mojom.h"
...@@ -23,14 +23,15 @@ class MediaController; ...@@ -23,14 +23,15 @@ class MediaController;
class AudioFocusRequest : public mojom::AudioFocusRequestClient { class AudioFocusRequest : public mojom::AudioFocusRequestClient {
public: public:
AudioFocusRequest(base::WeakPtr<AudioFocusManager> owner, AudioFocusRequest(
mojom::AudioFocusRequestClientRequest request, base::WeakPtr<AudioFocusManager> owner,
mojom::MediaSessionPtr session, mojo::PendingReceiver<mojom::AudioFocusRequestClient> receiver,
mojom::MediaSessionInfoPtr session_info, mojo::PendingRemote<mojom::MediaSession> session,
mojom::AudioFocusType audio_focus_type, mojom::MediaSessionInfoPtr session_info,
const base::UnguessableToken& id, mojom::AudioFocusType audio_focus_type,
const std::string& source_name, const base::UnguessableToken& id,
const base::UnguessableToken& group_id); const std::string& source_name,
const base::UnguessableToken& group_id);
~AudioFocusRequest() override; ~AudioFocusRequest() override;
...@@ -97,7 +98,7 @@ class AudioFocusRequest : public mojom::AudioFocusRequestClient { ...@@ -97,7 +98,7 @@ class AudioFocusRequest : public mojom::AudioFocusRequestClient {
mojom::MediaSessionInfoPtr session_info_; mojom::MediaSessionInfoPtr session_info_;
mojom::AudioFocusType audio_focus_type_; mojom::AudioFocusType audio_focus_type_;
mojo::Binding<mojom::AudioFocusRequestClient> binding_; mojo::Receiver<mojom::AudioFocusRequestClient> receiver_;
// The action to apply when the transient hold is released. // The action to apply when the transient hold is released.
base::Optional<mojom::MediaSessionAction> delayed_action_; base::Optional<mojom::MediaSessionAction> delayed_action_;
......
...@@ -300,11 +300,11 @@ base::UnguessableToken MockMediaSession::RequestAudioFocusFromService( ...@@ -300,11 +300,11 @@ base::UnguessableToken MockMediaSession::RequestAudioFocusFromService(
DCHECK(request_id_.is_empty()); DCHECK(request_id_.is_empty());
// Build a new audio focus request. // Build a new audio focus request.
mojom::MediaSessionPtr media_session; mojo::PendingRemote<mojom::MediaSession> media_session;
bindings_.AddBinding(this, mojo::MakeRequest(&media_session)); receivers_.Add(this, media_session.InitWithNewPipeAndPassReceiver());
service->RequestAudioFocus( service->RequestAudioFocus(
mojo::MakeRequest(&afr_client_), std::move(media_session), afr_client_.BindNewPipeAndPassReceiver(), std::move(media_session),
GetMediaSessionInfoSync(), audio_focus_type, GetMediaSessionInfoSync(), audio_focus_type,
base::BindOnce( base::BindOnce(
[](base::UnguessableToken* id, [](base::UnguessableToken* id,
...@@ -333,11 +333,11 @@ base::UnguessableToken MockMediaSession::RequestGroupedAudioFocusFromService( ...@@ -333,11 +333,11 @@ base::UnguessableToken MockMediaSession::RequestGroupedAudioFocusFromService(
DCHECK(request_id_.is_empty()); DCHECK(request_id_.is_empty());
// Build a new audio focus request. // Build a new audio focus request.
mojom::MediaSessionPtr media_session; mojo::PendingRemote<mojom::MediaSession> media_session;
bindings_.AddBinding(this, mojo::MakeRequest(&media_session)); receivers_.Add(this, media_session.InitWithNewPipeAndPassReceiver());
service->RequestGroupedAudioFocus( service->RequestGroupedAudioFocus(
mojo::MakeRequest(&afr_client_), std::move(media_session), afr_client_.BindNewPipeAndPassReceiver(), std::move(media_session),
GetMediaSessionInfoSync(), audio_focus_type, group_id, GetMediaSessionInfoSync(), audio_focus_type, group_id,
base::BindOnce( base::BindOnce(
[](base::UnguessableToken* id, [](base::UnguessableToken* id,
......
...@@ -13,9 +13,8 @@ ...@@ -13,9 +13,8 @@
#include "base/optional.h" #include "base/optional.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/unguessable_token.h" #include "base/unguessable_token.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_ptr_set.h" #include "mojo/public/cpp/bindings/interface_ptr_set.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote_set.h" #include "mojo/public/cpp/bindings/remote_set.h"
#include "services/media_session/public/cpp/media_metadata.h" #include "services/media_session/public/cpp/media_metadata.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
...@@ -192,7 +191,7 @@ class COMPONENT_EXPORT(MEDIA_SESSION_TEST_SUPPORT_CPP) MockMediaSession ...@@ -192,7 +191,7 @@ class COMPONENT_EXPORT(MEDIA_SESSION_TEST_SUPPORT_CPP) MockMediaSession
void RequestAudioFocusFromClient(mojom::AudioFocusType audio_focus_type); void RequestAudioFocusFromClient(mojom::AudioFocusType audio_focus_type);
mojom::AudioFocusRequestClientPtr afr_client_; mojo::Remote<mojom::AudioFocusRequestClient> afr_client_;
base::UnguessableToken request_id_; base::UnguessableToken request_id_;
...@@ -216,7 +215,7 @@ class COMPONENT_EXPORT(MEDIA_SESSION_TEST_SUPPORT_CPP) MockMediaSession ...@@ -216,7 +215,7 @@ class COMPONENT_EXPORT(MEDIA_SESSION_TEST_SUPPORT_CPP) MockMediaSession
base::flat_map<mojom::MediaSessionImageType, std::vector<MediaImage>> images_; base::flat_map<mojom::MediaSessionImageType, std::vector<MediaImage>> images_;
GURL last_image_src_; GURL last_image_src_;
mojo::BindingSet<mojom::MediaSession> bindings_; mojo::ReceiverSet<mojom::MediaSession> receivers_;
mojo::RemoteSet<mojom::MediaSessionObserver> observers_; mojo::RemoteSet<mojom::MediaSessionObserver> observers_;
......
...@@ -95,8 +95,8 @@ interface AudioFocusManager { ...@@ -95,8 +95,8 @@ interface AudioFocusManager {
// provide an AudioFocusRequestClient that can be used to control this // provide an AudioFocusRequestClient that can be used to control this
// request. The callback will resolve with the id of the request when // request. The callback will resolve with the id of the request when
// audio focus has been granted. // audio focus has been granted.
RequestAudioFocus@0(AudioFocusRequestClient& client, RequestAudioFocus@0(pending_receiver<AudioFocusRequestClient> client,
MediaSession media_session, pending_remote<MediaSession> media_session,
MediaSessionInfo session_info, MediaSessionInfo session_info,
AudioFocusType type) => AudioFocusType type) =>
(mojo_base.mojom.UnguessableToken request_id); (mojo_base.mojom.UnguessableToken request_id);
...@@ -105,8 +105,8 @@ interface AudioFocusManager { ...@@ -105,8 +105,8 @@ interface AudioFocusManager {
// grouping sessions together. This is when a group of media sessions // grouping sessions together. This is when a group of media sessions
// will share audio focus. // will share audio focus.
[MinVersion=4] RequestGroupedAudioFocus@4( [MinVersion=4] RequestGroupedAudioFocus@4(
AudioFocusRequestClient& client, pending_receiver<AudioFocusRequestClient> client,
MediaSession media_session, pending_remote<MediaSession> media_session,
MediaSessionInfo session_info, MediaSessionInfo session_info,
AudioFocusType type, AudioFocusType type,
mojo_base.mojom.UnguessableToken group_id) => mojo_base.mojom.UnguessableToken group_id) =>
......
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