| Index: content/browser/media/session/media_session.cc
|
| diff --git a/content/browser/media/session/media_session.cc b/content/browser/media/session/media_session.cc
|
| index 33fa652b363248c485df89dd634ee4aed9951a49..274b8150669949df47ccdc0fdd1ebc56b8fdfe58 100644
|
| --- a/content/browser/media/session/media_session.cc
|
| +++ b/content/browser/media/session/media_session.cc
|
| @@ -9,6 +9,7 @@
|
| #include "content/browser/web_contents/web_contents_impl.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/browser/web_contents_delegate.h"
|
| +#include "media/base/media_content_type.h"
|
|
|
| namespace content {
|
|
|
| @@ -68,24 +69,32 @@ void MediaSession::SetMetadata(const MediaMetadata& metadata) {
|
|
|
| bool MediaSession::AddPlayer(MediaSessionObserver* observer,
|
| int player_id,
|
| - Type type) {
|
| + media::MediaContentType type) {
|
| + if (type == media::MediaContentType::Uncontrollable) {
|
| + return true;
|
| + }
|
| observer->OnSetVolumeMultiplier(player_id, volume_multiplier_);
|
|
|
| // If the audio focus is already granted and is of type Content, there is
|
| // nothing to do. If it is granted of type Transient the requested type is
|
| // also transient, there is also nothing to do. Otherwise, the session needs
|
| // to request audio focus again.
|
| + AudioFocusType required_audio_focus_type =
|
| + (type == media::MediaContentType::Transient)
|
| + ? AudioFocusType::Transient : AudioFocusType::Content;
|
| +
|
| if (audio_focus_state_ == State::ACTIVE &&
|
| - (audio_focus_type_ == Type::Content || audio_focus_type_ == type)) {
|
| + (audio_focus_type_ == AudioFocusType::Content ||
|
| + audio_focus_type_ == required_audio_focus_type)) {
|
| players_.insert(PlayerIdentifier(observer, player_id));
|
| return true;
|
| }
|
|
|
| State old_audio_focus_state = audio_focus_state_;
|
| - State audio_focus_state = RequestSystemAudioFocus(type) ? State::ACTIVE
|
| - : State::INACTIVE;
|
| + State audio_focus_state = RequestSystemAudioFocus(required_audio_focus_type)
|
| + ? State::ACTIVE : State::INACTIVE;
|
| SetAudioFocusState(audio_focus_state);
|
| - audio_focus_type_ = type;
|
| + audio_focus_type_ = required_audio_focus_type;
|
|
|
| if (audio_focus_state_ != State::ACTIVE)
|
| return false;
|
| @@ -214,7 +223,7 @@ bool MediaSession::IsSuspended() const {
|
| bool MediaSession::IsControllable() const {
|
| // Only content type media session can be controllable unless it is inactive.
|
| return audio_focus_state_ != State::INACTIVE &&
|
| - audio_focus_type_ == Type::Content;
|
| + audio_focus_type_ == AudioFocusType::Content;
|
| }
|
|
|
| std::unique_ptr<base::CallbackList<void(MediaSession::State)>::Subscription>
|
| @@ -232,7 +241,7 @@ bool MediaSession::IsActiveForTest() const {
|
| return audio_focus_state_ == State::ACTIVE;
|
| }
|
|
|
| -MediaSession::Type MediaSession::audio_focus_type_for_test() const {
|
| +MediaSession::AudioFocusType MediaSession::audio_focus_type_for_test() const {
|
| return audio_focus_type_;
|
| }
|
|
|
| @@ -306,7 +315,7 @@ void MediaSession::OnResumeInternal(SuspendType type) {
|
| MediaSession::MediaSession(WebContents* web_contents)
|
| : WebContentsObserver(web_contents),
|
| audio_focus_state_(State::INACTIVE),
|
| - audio_focus_type_(Type::Transient),
|
| + audio_focus_type_(AudioFocusType::Transient),
|
| volume_multiplier_(kDefaultVolumeMultiplier) {
|
| }
|
|
|
| @@ -314,7 +323,7 @@ void MediaSession::Initialize() {
|
| delegate_ = MediaSessionDelegate::Create(this);
|
| }
|
|
|
| -bool MediaSession::RequestSystemAudioFocus(Type type) {
|
| +bool MediaSession::RequestSystemAudioFocus(AudioFocusType type) {
|
| bool result = delegate_->RequestAudioFocus(type);
|
| uma_helper_.RecordRequestAudioFocusResult(result);
|
| return result;
|
|
|