Commit 853a716e authored by Miyoung Shin's avatar Miyoung Shin Committed by Commit Bot

Convert AudioFocusManager to new Mojo types

This CL converts AudioFocusManager{Ptr, Request} in chrome,
components, content and services to the new Mojo type, and uses
pending_remote<AudioFocusManager> in media_session.mojom.

Bug: 955171
Change-Id: If94cf50ca0e051f4e0864fa5efd01e3595e70205
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1849732Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Commit-Queue: Miyoung Shin <myid.shin@igalia.com>
Cr-Commit-Position: refs/heads/master@{#704942}
parent 0e15a031
...@@ -315,8 +315,9 @@ AccessibilityManager::AccessibilityManager() { ...@@ -315,8 +315,9 @@ AccessibilityManager::AccessibilityManager() {
weak_ptr_factory_.GetWeakPtr()))); weak_ptr_factory_.GetWeakPtr())));
// Connect to the media session service. // Connect to the media session service.
content::GetSystemConnector()->BindInterface( content::GetSystemConnector()->Connect(
media_session::mojom::kServiceName, &audio_focus_manager_ptr_); media_session::mojom::kServiceName,
audio_focus_manager_.BindNewPipeAndPassReceiver());
ash::AcceleratorController::SetVolumeAdjustmentSoundCallback( ash::AcceleratorController::SetVolumeAdjustmentSoundCallback(
base::BindRepeating(&AccessibilityManager::PlayVolumeAdjustSound, base::BindRepeating(&AccessibilityManager::PlayVolumeAdjustSound,
...@@ -1369,7 +1370,7 @@ void AccessibilityManager::PostLoadChromeVox() { ...@@ -1369,7 +1370,7 @@ void AccessibilityManager::PostLoadChromeVox() {
base::Unretained(this)))); base::Unretained(this))));
} }
audio_focus_manager_ptr_->SetEnforcementMode( audio_focus_manager_->SetEnforcementMode(
media_session::mojom::EnforcementMode::kNone); media_session::mojom::EnforcementMode::kNone);
InitializeFocusRings(extension_id); InitializeFocusRings(extension_id);
...@@ -1396,7 +1397,7 @@ void AccessibilityManager::PostUnloadChromeVox() { ...@@ -1396,7 +1397,7 @@ void AccessibilityManager::PostUnloadChromeVox() {
// Stop speech. // Stop speech.
content::TtsController::GetInstance()->Stop(); content::TtsController::GetInstance()->Stop();
audio_focus_manager_ptr_->SetEnforcementMode( audio_focus_manager_->SetEnforcementMode(
media_session::mojom::EnforcementMode::kDefault); media_session::mojom::EnforcementMode::kDefault);
} }
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_registry_observer.h" #include "extensions/browser/extension_registry_observer.h"
#include "extensions/browser/extension_system.h" #include "extensions/browser/extension_system.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
#include "ui/accessibility/ax_enums.mojom-forward.h" #include "ui/accessibility/ax_enums.mojom-forward.h"
#include "ui/base/ime/chromeos/input_method_manager.h" #include "ui/base/ime/chromeos/input_method_manager.h"
...@@ -492,7 +493,7 @@ class AccessibilityManager ...@@ -492,7 +493,7 @@ class AccessibilityManager
caret_bounds_observer_for_test_; caret_bounds_observer_for_test_;
// Used to set the audio focus enforcement type for ChromeVox. // Used to set the audio focus enforcement type for ChromeVox.
media_session::mojom::AudioFocusManagerPtr audio_focus_manager_ptr_; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_manager_;
base::WeakPtrFactory<AccessibilityManager> weak_ptr_factory_{this}; base::WeakPtrFactory<AccessibilityManager> weak_ptr_factory_{this};
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "components/arc/arc_features.h" #include "components/arc/arc_features.h"
#include "components/arc/session/arc_bridge_service.h" #include "components/arc/session/arc_bridge_service.h"
#include "content/public/browser/system_connector.h" #include "content/public/browser/system_connector.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/public/cpp/features.h" #include "services/media_session/public/cpp/features.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/constants.mojom.h" #include "services/media_session/public/mojom/constants.mojom.h"
...@@ -87,15 +88,16 @@ void ArcMediaSessionBridge::SetupAudioFocus() { ...@@ -87,15 +88,16 @@ void ArcMediaSessionBridge::SetupAudioFocus() {
return; return;
} }
media_session::mojom::AudioFocusManagerPtr audio_focus_ptr; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus;
content::GetSystemConnector()->BindInterface( content::GetSystemConnector()->Connect(
media_session::mojom::kServiceName, &audio_focus_ptr); media_session::mojom::kServiceName,
audio_focus.BindNewPipeAndPassReceiver());
audio_focus_ptr->SetSource(base::UnguessableToken::Create(), audio_focus->SetSource(base::UnguessableToken::Create(),
kAudioFocusSourceName); kAudioFocusSourceName);
DVLOG(2) << "ArcMediaSessionBridge will enable audio focus"; DVLOG(2) << "ArcMediaSessionBridge will enable audio focus";
ms_instance->EnableAudioFocus(std::move(audio_focus_ptr)); ms_instance->EnableAudioFocus(audio_focus.Unbind());
} }
} // namespace arc } // namespace arc
...@@ -13,7 +13,8 @@ interface MediaSessionInstance { ...@@ -13,7 +13,8 @@ interface MediaSessionInstance {
// Enable audio focus integration on the Android side and register the // Enable audio focus integration on the Android side and register the
// unified AudioPolicy. The audio policy will send audio focus requests // unified AudioPolicy. The audio policy will send audio focus requests
// to |service|. // to |service|.
EnableAudioFocus@1(media_session.mojom.AudioFocusManager service); EnableAudioFocus@1(
pending_remote<media_session.mojom.AudioFocusManager> service);
// Disable audio focus integration if it is enabled. // Disable audio focus integration if it is enabled.
DisableAudioFocus@2(); DisableAudioFocus@2();
......
...@@ -60,7 +60,7 @@ void MediaInternalsAudioFocusHelper::SendAudioFocusState() { ...@@ -60,7 +60,7 @@ void MediaInternalsAudioFocusHelper::SendAudioFocusState() {
return; return;
// Get the audio focus state from the media session service. // Get the audio focus state from the media session service.
audio_focus_ptr_->GetFocusRequests(base::BindOnce( audio_focus_->GetFocusRequests(base::BindOnce(
&MediaInternalsAudioFocusHelper::DidGetAudioFocusRequestList, &MediaInternalsAudioFocusHelper::DidGetAudioFocusRequestList,
base::Unretained(this))); base::Unretained(this)));
} }
...@@ -93,7 +93,7 @@ void MediaInternalsAudioFocusHelper::SetEnabled(bool enabled) { ...@@ -93,7 +93,7 @@ void MediaInternalsAudioFocusHelper::SetEnabled(bool enabled) {
EnsureServiceConnection(); EnsureServiceConnection();
if (!enabled) { if (!enabled) {
audio_focus_ptr_.reset(); audio_focus_.reset();
audio_focus_debug_ptr_.reset(); audio_focus_debug_ptr_.reset();
receiver_.reset(); receiver_.reset();
} }
...@@ -111,10 +111,10 @@ bool MediaInternalsAudioFocusHelper::EnsureServiceConnection() { ...@@ -111,10 +111,10 @@ bool MediaInternalsAudioFocusHelper::EnsureServiceConnection() {
return false; return false;
// Connect to the media session service. // Connect to the media session service.
if (!audio_focus_ptr_.is_bound()) { if (!audio_focus_.is_bound()) {
connector->BindInterface(media_session::mojom::kServiceName, connector->Connect(media_session::mojom::kServiceName,
mojo::MakeRequest(&audio_focus_ptr_)); audio_focus_.BindNewPipeAndPassReceiver());
audio_focus_ptr_.set_connection_error_handler(base::BindRepeating( audio_focus_.set_disconnect_handler(base::BindRepeating(
&MediaInternalsAudioFocusHelper::OnMojoError, base::Unretained(this))); &MediaInternalsAudioFocusHelper::OnMojoError, base::Unretained(this)));
} }
...@@ -129,7 +129,7 @@ bool MediaInternalsAudioFocusHelper::EnsureServiceConnection() { ...@@ -129,7 +129,7 @@ bool MediaInternalsAudioFocusHelper::EnsureServiceConnection() {
// Add the observer to receive audio focus events. // Add the observer to receive audio focus events.
if (!receiver_.is_bound()) { if (!receiver_.is_bound()) {
audio_focus_ptr_->AddObserver(receiver_.BindNewPipeAndPassRemote()); audio_focus_->AddObserver(receiver_.BindNewPipeAndPassRemote());
receiver_.set_disconnect_handler(base::BindRepeating( receiver_.set_disconnect_handler(base::BindRepeating(
&MediaInternalsAudioFocusHelper::OnMojoError, base::Unretained(this))); &MediaInternalsAudioFocusHelper::OnMojoError, base::Unretained(this)));
...@@ -139,7 +139,7 @@ bool MediaInternalsAudioFocusHelper::EnsureServiceConnection() { ...@@ -139,7 +139,7 @@ bool MediaInternalsAudioFocusHelper::EnsureServiceConnection() {
} }
void MediaInternalsAudioFocusHelper::OnMojoError() { void MediaInternalsAudioFocusHelper::OnMojoError() {
audio_focus_ptr_.reset(); audio_focus_.reset();
receiver_.reset(); receiver_.reset();
} }
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/values.h" #include "base/values.h"
#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
namespace content { namespace content {
...@@ -62,8 +63,8 @@ class MediaInternalsAudioFocusHelper ...@@ -62,8 +63,8 @@ class MediaInternalsAudioFocusHelper
const media_session::mojom::AudioFocusRequestStatePtr& state, const media_session::mojom::AudioFocusRequestStatePtr& state,
const std::string& provided_state) const; const std::string& provided_state) const;
// Holds a pointer to the media session service and it's debug interface. // Holds a remote to the media session service and it's debug interface.
media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
media_session::mojom::AudioFocusManagerDebugPtr audio_focus_debug_ptr_; media_session::mojom::AudioFocusManagerDebugPtr audio_focus_debug_ptr_;
// Must only be accessed on the UI thread. // Must only be accessed on the UI thread.
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "media/base/channel_layout.h" #include "media/base/channel_layout.h"
#include "media/base/media_log.h" #include "media/base/media_log.h"
#include "media/base/media_switches.h" #include "media/base/media_switches.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/public/cpp/features.h" #include "services/media_session/public/cpp/features.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/constants.mojom.h" #include "services/media_session/public/mojom/constants.mojom.h"
...@@ -341,8 +342,9 @@ class MediaInternalsAudioFocusTest : public RenderViewHostTestHarness, ...@@ -341,8 +342,9 @@ class MediaInternalsAudioFocusTest : public RenderViewHostTestHarness,
base::Unretained(this)); base::Unretained(this));
run_loop_ = std::make_unique<base::RunLoop>(); run_loop_ = std::make_unique<base::RunLoop>();
content::GetSystemConnector()->BindInterface( content::GetSystemConnector()->Connect(
media_session::mojom::kServiceName, &audio_focus_ptr_); media_session::mojom::kServiceName,
audio_focus_.BindNewPipeAndPassReceiver());
content::MediaInternals::GetInstance()->AddUpdateCallback(update_cb_); content::MediaInternals::GetInstance()->AddUpdateCallback(update_cb_);
} }
...@@ -404,14 +406,14 @@ class MediaInternalsAudioFocusTest : public RenderViewHostTestHarness, ...@@ -404,14 +406,14 @@ class MediaInternalsAudioFocusTest : public RenderViewHostTestHarness,
std::string GetRequestIdForTopFocusRequest() { std::string GetRequestIdForTopFocusRequest() {
std::string result; std::string result;
audio_focus_ptr_->GetFocusRequests(base::BindOnce( audio_focus_->GetFocusRequests(base::BindOnce(
[](std::string* out, std::vector<AudioFocusRequestStatePtr> requests) { [](std::string* out, std::vector<AudioFocusRequestStatePtr> requests) {
DCHECK(!requests.empty()); DCHECK(!requests.empty());
*out = requests.back()->request_id.value().ToString(); *out = requests.back()->request_id.value().ToString();
}, },
&result)); &result));
audio_focus_ptr_.FlushForTesting(); audio_focus_.FlushForTesting();
return result; return result;
} }
...@@ -424,7 +426,7 @@ class MediaInternalsAudioFocusTest : public RenderViewHostTestHarness, ...@@ -424,7 +426,7 @@ class MediaInternalsAudioFocusTest : public RenderViewHostTestHarness,
base::Lock lock_; base::Lock lock_;
std::unique_ptr<base::RunLoop> run_loop_; std::unique_ptr<base::RunLoop> run_loop_;
media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
}; };
TEST_F(MediaInternalsAudioFocusTest, AudioFocusStateIsUpdated) { TEST_F(MediaInternalsAudioFocusTest, AudioFocusStateIsUpdated) {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/system_connector.h" #include "content/public/browser/system_connector.h"
#include "media/base/media_switches.h" #include "media/base/media_switches.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/public/cpp/features.h" #include "services/media_session/public/cpp/features.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/constants.mojom.h" #include "services/media_session/public/mojom/constants.mojom.h"
...@@ -60,14 +61,14 @@ class AudioFocusDelegateDefault : public AudioFocusDelegate { ...@@ -60,14 +61,14 @@ class AudioFocusDelegateDefault : public AudioFocusDelegate {
// Finishes an async audio focus request. // Finishes an async audio focus request.
void FinishAudioFocusRequest(AudioFocusType type, bool success); void FinishAudioFocusRequest(AudioFocusType type, bool success);
// Ensures that |audio_focus_ptr_| is connected. // Ensures that |audio_focus_| is connected.
void EnsureServiceConnection(); void EnsureServiceConnection();
// Holds the latest MediaSessionInfo for |media_session_|. // Holds the latest MediaSessionInfo for |media_session_|.
media_session::mojom::MediaSessionInfoPtr session_info_; media_session::mojom::MediaSessionInfoPtr session_info_;
// Holds a pointer to the Media Session service. // Holds a remote to the Media Session service.
media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
// 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.
...@@ -118,7 +119,7 @@ AudioFocusDelegateDefault::RequestAudioFocus(AudioFocusType audio_focus_type) { ...@@ -118,7 +119,7 @@ AudioFocusDelegateDefault::RequestAudioFocus(AudioFocusType audio_focus_type) {
mojo::PendingRemote<media_session::mojom::MediaSession> media_session = mojo::PendingRemote<media_session::mojom::MediaSession> media_session =
media_session_->AddRemote(); media_session_->AddRemote();
audio_focus_ptr_->RequestGroupedAudioFocus( audio_focus_->RequestGroupedAudioFocus(
request_id_, request_client_remote_.BindNewPipeAndPassReceiver(), request_id_, request_client_remote_.BindNewPipeAndPassReceiver(),
std::move(media_session), session_info_.Clone(), audio_focus_type, std::move(media_session), session_info_.Clone(), audio_focus_type,
GetAudioFocusGroupId(media_session_), GetAudioFocusGroupId(media_session_),
...@@ -140,7 +141,7 @@ void AudioFocusDelegateDefault::AbandonAudioFocus() { ...@@ -140,7 +141,7 @@ void AudioFocusDelegateDefault::AbandonAudioFocus() {
request_client_remote_->AbandonAudioFocus(); request_client_remote_->AbandonAudioFocus();
request_client_remote_.reset(); request_client_remote_.reset();
audio_focus_ptr_.reset(); audio_focus_.reset();
} }
base::Optional<media_session::mojom::AudioFocusType> base::Optional<media_session::mojom::AudioFocusType>
...@@ -176,19 +177,18 @@ void AudioFocusDelegateDefault::EnsureServiceConnection() { ...@@ -176,19 +177,18 @@ void AudioFocusDelegateDefault::EnsureServiceConnection() {
return; return;
} }
if (audio_focus_ptr_.is_bound() && !audio_focus_ptr_.encountered_error()) if (audio_focus_.is_bound() && audio_focus_.is_connected())
return; return;
audio_focus_ptr_.reset(); audio_focus_.reset();
// Connect to the Media Session service and bind |audio_focus_ptr_| to it. // Connect to the Media Session service and bind |audio_focus_| to it.
GetSystemConnector()->BindInterface(media_session::mojom::kServiceName, GetSystemConnector()->Connect(media_session::mojom::kServiceName,
mojo::MakeRequest(&audio_focus_ptr_)); audio_focus_.BindNewPipeAndPassReceiver());
// We associate all media sessions with the browser context so we can filter // We associate all media sessions with the browser context so we can filter
// by browser context in the UI. // by browser context in the UI.
audio_focus_ptr_->SetSource(media_session_->GetSourceId(), audio_focus_->SetSource(media_session_->GetSourceId(), kAudioFocusSourceName);
kAudioFocusSourceName);
} }
// static // static
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "content/shell/browser/shell.h" #include "content/shell/browser/shell.h"
#include "media/base/media_content_type.h" #include "media/base/media_content_type.h"
#include "media/base/media_switches.h" #include "media/base/media_switches.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/public/cpp/features.h" #include "services/media_session/public/cpp/features.h"
#include "services/media_session/public/cpp/test/audio_focus_test_util.h" #include "services/media_session/public/cpp/test/audio_focus_test_util.h"
#include "services/media_session/public/cpp/test/mock_media_session.h" #include "services/media_session/public/cpp/test/mock_media_session.h"
...@@ -36,8 +37,8 @@ class AudioFocusDelegateDefaultBrowserTest : public ContentBrowserTest { ...@@ -36,8 +37,8 @@ class AudioFocusDelegateDefaultBrowserTest : public ContentBrowserTest {
void SetUpOnMainThread() override { void SetUpOnMainThread() override {
ContentBrowserTest::SetUpOnMainThread(); ContentBrowserTest::SetUpOnMainThread();
GetSystemConnector()->BindInterface(media_session::mojom::kServiceName, GetSystemConnector()->Connect(media_session::mojom::kServiceName,
mojo::MakeRequest(&audio_focus_ptr_)); audio_focus_.BindNewPipeAndPassReceiver());
} }
void SetUpCommandLine(base::CommandLine* command_line) override { void SetUpCommandLine(base::CommandLine* command_line) override {
...@@ -48,14 +49,14 @@ class AudioFocusDelegateDefaultBrowserTest : public ContentBrowserTest { ...@@ -48,14 +49,14 @@ class AudioFocusDelegateDefaultBrowserTest : public ContentBrowserTest {
} }
void CheckSessionSourceName() { void CheckSessionSourceName() {
audio_focus_ptr_->GetFocusRequests(base::BindOnce( audio_focus_->GetFocusRequests(base::BindOnce(
[](std::vector<media_session::mojom::AudioFocusRequestStatePtr> [](std::vector<media_session::mojom::AudioFocusRequestStatePtr>
requests) { requests) {
for (auto& request : requests) for (auto& request : requests)
EXPECT_EQ(kExpectedSourceName, request->source_name.value()); EXPECT_EQ(kExpectedSourceName, request->source_name.value());
})); }));
audio_focus_ptr_.FlushForTesting(); audio_focus_.FlushForTesting();
} }
void Run(WebContents* start_contents, void Run(WebContents* start_contents,
...@@ -155,12 +156,12 @@ class AudioFocusDelegateDefaultBrowserTest : public ContentBrowserTest { ...@@ -155,12 +156,12 @@ class AudioFocusDelegateDefaultBrowserTest : public ContentBrowserTest {
std::unique_ptr<TestAudioFocusObserver> CreateObserver() { std::unique_ptr<TestAudioFocusObserver> CreateObserver() {
std::unique_ptr<TestAudioFocusObserver> observer = std::unique_ptr<TestAudioFocusObserver> observer =
std::make_unique<TestAudioFocusObserver>(); std::make_unique<TestAudioFocusObserver>();
audio_focus_ptr_->AddObserver(observer->BindNewPipeAndPassRemote()); audio_focus_->AddObserver(observer->BindNewPipeAndPassRemote());
audio_focus_ptr_.FlushForTesting(); audio_focus_.FlushForTesting();
return observer; return observer;
} }
media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
base::test::ScopedFeatureList scoped_feature_list_; base::test::ScopedFeatureList scoped_feature_list_;
}; };
......
...@@ -221,7 +221,7 @@ void AudioFocusManager::SetSource(const base::UnguessableToken& identity, ...@@ -221,7 +221,7 @@ void AudioFocusManager::SetSource(const base::UnguessableToken& identity,
const std::string& name) { const std::string& name) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
auto& context = bindings_.dispatch_context(); auto& context = receivers_.current_context();
context->identity = identity; context->identity = identity;
context->source_name = name; context->source_name = name;
} }
...@@ -288,10 +288,10 @@ void AudioFocusManager::SuspendAllSessions() { ...@@ -288,10 +288,10 @@ void AudioFocusManager::SuspendAllSessions() {
} }
void AudioFocusManager::BindToInterface( void AudioFocusManager::BindToInterface(
mojom::AudioFocusManagerRequest request) { mojo::PendingReceiver<mojom::AudioFocusManager> receiver) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
bindings_.AddBinding(this, std::move(request), receivers_.Add(this, std::move(receiver),
std::make_unique<BindingContext>()); std::make_unique<ReceiverContext>());
} }
void AudioFocusManager::BindToDebugInterface( void AudioFocusManager::BindToDebugInterface(
...@@ -415,12 +415,12 @@ bool AudioFocusManager::IsFocusEntryPresent( ...@@ -415,12 +415,12 @@ bool AudioFocusManager::IsFocusEntryPresent(
const std::string& AudioFocusManager::GetBindingSourceName() const { const std::string& AudioFocusManager::GetBindingSourceName() const {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
return bindings_.dispatch_context()->source_name; return receivers_.current_context()->source_name;
} }
const base::UnguessableToken& AudioFocusManager::GetBindingIdentity() const { const base::UnguessableToken& AudioFocusManager::GetBindingIdentity() const {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
return bindings_.dispatch_context()->identity; return receivers_.current_context()->identity;
} }
bool AudioFocusManager::IsSessionOnTopOfAudioFocusStack( bool AudioFocusManager::IsSessionOnTopOfAudioFocusStack(
......
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/threading/thread_checker.h" #include "base/threading/thread_checker.h"
#include "mojo/public/cpp/bindings/binding_set.h" #include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_ptr.h" #include "mojo/public/cpp/bindings/pending_receiver.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/media_controller.h" #include "services/media_session/media_controller.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
...@@ -88,8 +89,9 @@ class AudioFocusManager : public mojom::AudioFocusManager, ...@@ -88,8 +89,9 @@ class AudioFocusManager : public mojom::AudioFocusManager,
const base::UnguessableToken& receiver_id) override; const base::UnguessableToken& receiver_id) override;
void SuspendAllSessions() override; void SuspendAllSessions() override;
// Bind to a mojom::AudioFocusManagerRequest. // Bind to a receiver of mojom::AudioFocusManager.
void BindToInterface(mojom::AudioFocusManagerRequest request); void BindToInterface(
mojo::PendingReceiver<mojom::AudioFocusManager> receiver);
// Bind to a mojom::AudioFocusManagerDebugRequest. // Bind to a mojom::AudioFocusManagerDebugRequest.
void BindToDebugInterface(mojom::AudioFocusManagerDebugRequest request); void BindToDebugInterface(mojom::AudioFocusManagerDebugRequest request);
...@@ -106,8 +108,8 @@ class AudioFocusManager : public mojom::AudioFocusManager, ...@@ -106,8 +108,8 @@ class AudioFocusManager : public mojom::AudioFocusManager,
class SourceObserverHolder; class SourceObserverHolder;
// BindingContext stores associated metadata for mojo binding. // ReceiverContext stores associated metadata for mojo binding.
struct BindingContext { struct ReceiverContext {
// The source name is associated with a binding when a client calls // The source name is associated with a binding when a client calls
// |SetSourceName|. It is used to provide more granularity than a // |SetSourceName|. It is used to provide more granularity than a
// service_manager::Identity for metrics and for identifying where an audio // service_manager::Identity for metrics and for identifying where an audio
...@@ -156,9 +158,9 @@ class AudioFocusManager : public mojom::AudioFocusManager, ...@@ -156,9 +158,9 @@ class AudioFocusManager : public mojom::AudioFocusManager,
// |MediaSession| over mojo. // |MediaSession| over mojo.
MediaController active_media_controller_; MediaController active_media_controller_;
// Holds mojo bindings for the Audio Focus Manager API. // Holds mojo receivers for the Audio Focus Manager API.
mojo::BindingSet<mojom::AudioFocusManager, std::unique_ptr<BindingContext>> mojo::ReceiverSet<mojom::AudioFocusManager, std::unique_ptr<ReceiverContext>>
bindings_; receivers_;
// Holds mojo bindings for the Audio Focus Manager Debug API. // Holds mojo bindings for the Audio Focus Manager Debug API.
mojo::BindingSet<mojom::AudioFocusManagerDebug> debug_bindings_; mojo::BindingSet<mojom::AudioFocusManagerDebug> debug_bindings_;
......
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