Commit 7f853baa authored by Noah Rose Ledesma's avatar Noah Rose Ledesma Committed by Commit Bot

GMC: Have renderer switch audio sink

The renderer will now properly handle IPCs to change audio sink ID.

Bug: 1096248
Change-Id: I26113128c0016df9c2a126a8d6bf7ce965f74e86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2295830
Commit-Queue: Noah Rose Ledesma <noahrose@google.com>
Reviewed-by: default avatarDale Curtis <dalecurtis@chromium.org>
Reviewed-by: default avatarJeremy Roman <jbroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#794785}
parent 538ab005
...@@ -401,7 +401,11 @@ void RendererWebMediaPlayerDelegate::OnMediaDelegateExitPictureInPicture( ...@@ -401,7 +401,11 @@ void RendererWebMediaPlayerDelegate::OnMediaDelegateExitPictureInPicture(
void RendererWebMediaPlayerDelegate::OnMediaDelegateSetAudioSink( void RendererWebMediaPlayerDelegate::OnMediaDelegateSetAudioSink(
int player_id, int player_id,
std::string sink_id) {} std::string sink_id) {
Observer* observer = id_map_.Lookup(player_id);
if (observer)
observer->OnSetAudioSink(sink_id);
}
void RendererWebMediaPlayerDelegate::OnMediaDelegatePowerExperimentState( void RendererWebMediaPlayerDelegate::OnMediaDelegatePowerExperimentState(
int player_id, int player_id,
......
...@@ -52,6 +52,7 @@ class MockWebMediaPlayerDelegateObserver ...@@ -52,6 +52,7 @@ class MockWebMediaPlayerDelegateObserver
MOCK_METHOD1(OnVolumeMultiplierUpdate, void(double)); MOCK_METHOD1(OnVolumeMultiplierUpdate, void(double));
MOCK_METHOD1(OnBecamePersistentVideo, void(bool)); MOCK_METHOD1(OnBecamePersistentVideo, void(bool));
MOCK_METHOD0(OnPictureInPictureModeEnded, void()); MOCK_METHOD0(OnPictureInPictureModeEnded, void());
MOCK_METHOD1(OnSetAudioSink, void(const std::string&));
}; };
class RendererWebMediaPlayerDelegateTest : public content::RenderViewTest { class RendererWebMediaPlayerDelegateTest : public content::RenderViewTest {
......
...@@ -2563,6 +2563,11 @@ void WebMediaPlayerImpl::OnExitPictureInPicture() { ...@@ -2563,6 +2563,11 @@ void WebMediaPlayerImpl::OnExitPictureInPicture() {
client_->RequestExitPictureInPicture(); client_->RequestExitPictureInPicture();
} }
void WebMediaPlayerImpl::OnSetAudioSink(const std::string& sink_id) {
SetSinkId(WebString::FromASCII(sink_id),
base::DoNothing::Once<base::Optional<blink::WebSetSinkIdError>>());
}
void WebMediaPlayerImpl::OnVolumeMultiplierUpdate(double multiplier) { void WebMediaPlayerImpl::OnVolumeMultiplierUpdate(double multiplier) {
volume_multiplier_ = multiplier; volume_multiplier_ = multiplier;
SetVolume(volume_); SetVolume(volume_);
......
...@@ -62,12 +62,12 @@ class WebAudioSourceProviderImpl; ...@@ -62,12 +62,12 @@ class WebAudioSourceProviderImpl;
class WebLocalFrame; class WebLocalFrame;
class WebMediaPlayerClient; class WebMediaPlayerClient;
class WebMediaPlayerEncryptedMediaClient; class WebMediaPlayerEncryptedMediaClient;
} } // namespace blink
namespace base { namespace base {
class SingleThreadTaskRunner; class SingleThreadTaskRunner;
class TaskRunner; class TaskRunner;
} } // namespace base
namespace cc { namespace cc {
class VideoLayer; class VideoLayer;
...@@ -77,7 +77,7 @@ namespace gpu { ...@@ -77,7 +77,7 @@ namespace gpu {
namespace gles2 { namespace gles2 {
class GLES2Interface; class GLES2Interface;
} }
} } // namespace gpu
namespace media { namespace media {
class CdmContextRef; class CdmContextRef;
...@@ -252,6 +252,7 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl ...@@ -252,6 +252,7 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
void OnSeekBackward(double seconds) override; void OnSeekBackward(double seconds) override;
void OnEnterPictureInPicture() override; void OnEnterPictureInPicture() override;
void OnExitPictureInPicture() override; void OnExitPictureInPicture() override;
void OnSetAudioSink(const std::string& sink_id) override;
void OnVolumeMultiplierUpdate(double multiplier) override; void OnVolumeMultiplierUpdate(double multiplier) override;
void OnBecamePersistentVideo(bool value) override; void OnBecamePersistentVideo(bool value) override;
void OnPowerExperimentState(bool state) override; void OnPowerExperimentState(bool state) override;
......
...@@ -67,6 +67,7 @@ class BLINK_PLATFORM_EXPORT WebMediaPlayerDelegate { ...@@ -67,6 +67,7 @@ class BLINK_PLATFORM_EXPORT WebMediaPlayerDelegate {
virtual void OnSeekBackward(double seconds) = 0; virtual void OnSeekBackward(double seconds) = 0;
virtual void OnEnterPictureInPicture() = 0; virtual void OnEnterPictureInPicture() = 0;
virtual void OnExitPictureInPicture() = 0; virtual void OnExitPictureInPicture() = 0;
virtual void OnSetAudioSink(const std::string& sink_id) = 0;
// Called to control audio ducking. Output volume should be set to // Called to control audio ducking. Output volume should be set to
// |player_volume| * |multiplier|. The range of |multiplier| is [0, 1], // |player_volume| * |multiplier|. The range of |multiplier| is [0, 1],
......
...@@ -182,6 +182,7 @@ class BLINK_MODULES_EXPORT WebMediaPlayerMS ...@@ -182,6 +182,7 @@ class BLINK_MODULES_EXPORT WebMediaPlayerMS
void OnSeekBackward(double seconds) override; void OnSeekBackward(double seconds) override;
void OnEnterPictureInPicture() override; void OnEnterPictureInPicture() override;
void OnExitPictureInPicture() override; void OnExitPictureInPicture() override;
void OnSetAudioSink(const std::string& sink_id) override;
void OnVolumeMultiplierUpdate(double multiplier) override; void OnVolumeMultiplierUpdate(double multiplier) override;
void OnBecamePersistentVideo(bool value) override; void OnBecamePersistentVideo(bool value) override;
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/optional.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "cc/layers/video_frame_provider_client_impl.h" #include "cc/layers/video_frame_provider_client_impl.h"
...@@ -1081,6 +1082,11 @@ void WebMediaPlayerMS::OnExitPictureInPicture() { ...@@ -1081,6 +1082,11 @@ void WebMediaPlayerMS::OnExitPictureInPicture() {
client_->RequestExitPictureInPicture(); client_->RequestExitPictureInPicture();
} }
void WebMediaPlayerMS::OnSetAudioSink(const std::string& sink_id) {
SetSinkId(WebString::FromASCII(sink_id),
base::DoNothing::Once<base::Optional<blink::WebSetSinkIdError>>());
}
void WebMediaPlayerMS::OnVolumeMultiplierUpdate(double multiplier) { void WebMediaPlayerMS::OnVolumeMultiplierUpdate(double multiplier) {
// TODO(perkj, magjed): See TODO in OnPlay(). // TODO(perkj, magjed): See TODO in OnPlay().
} }
......
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