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(
void RendererWebMediaPlayerDelegate::OnMediaDelegateSetAudioSink(
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(
int player_id,
......
......@@ -52,6 +52,7 @@ class MockWebMediaPlayerDelegateObserver
MOCK_METHOD1(OnVolumeMultiplierUpdate, void(double));
MOCK_METHOD1(OnBecamePersistentVideo, void(bool));
MOCK_METHOD0(OnPictureInPictureModeEnded, void());
MOCK_METHOD1(OnSetAudioSink, void(const std::string&));
};
class RendererWebMediaPlayerDelegateTest : public content::RenderViewTest {
......
......@@ -2563,6 +2563,11 @@ void WebMediaPlayerImpl::OnExitPictureInPicture() {
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) {
volume_multiplier_ = multiplier;
SetVolume(volume_);
......
......@@ -62,12 +62,12 @@ class WebAudioSourceProviderImpl;
class WebLocalFrame;
class WebMediaPlayerClient;
class WebMediaPlayerEncryptedMediaClient;
}
} // namespace blink
namespace base {
class SingleThreadTaskRunner;
class TaskRunner;
}
} // namespace base
namespace cc {
class VideoLayer;
......@@ -77,7 +77,7 @@ namespace gpu {
namespace gles2 {
class GLES2Interface;
}
}
} // namespace gpu
namespace media {
class CdmContextRef;
......@@ -252,6 +252,7 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
void OnSeekBackward(double seconds) override;
void OnEnterPictureInPicture() override;
void OnExitPictureInPicture() override;
void OnSetAudioSink(const std::string& sink_id) override;
void OnVolumeMultiplierUpdate(double multiplier) override;
void OnBecamePersistentVideo(bool value) override;
void OnPowerExperimentState(bool state) override;
......
......@@ -67,6 +67,7 @@ class BLINK_PLATFORM_EXPORT WebMediaPlayerDelegate {
virtual void OnSeekBackward(double seconds) = 0;
virtual void OnEnterPictureInPicture() = 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
// |player_volume| * |multiplier|. The range of |multiplier| is [0, 1],
......
......@@ -182,6 +182,7 @@ class BLINK_MODULES_EXPORT WebMediaPlayerMS
void OnSeekBackward(double seconds) override;
void OnEnterPictureInPicture() override;
void OnExitPictureInPicture() override;
void OnSetAudioSink(const std::string& sink_id) override;
void OnVolumeMultiplierUpdate(double multiplier) override;
void OnBecamePersistentVideo(bool value) override;
......
......@@ -11,6 +11,7 @@
#include "base/bind.h"
#include "base/callback.h"
#include "base/optional.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "cc/layers/video_frame_provider_client_impl.h"
......@@ -1081,6 +1082,11 @@ void WebMediaPlayerMS::OnExitPictureInPicture() {
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) {
// 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